axiom_xml_reader.h

Go to the documentation of this file.
00001 /*
00002  *   Copyright 2004,2005 The Apache Software Foundation.
00003  *
00004  *   Licensed under the Apache License, Version 2.0 (the "License");
00005  *   you may not use this file except in compliance with the License.
00006  *   You may obtain a copy of the License at
00007  *
00008  *       http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  *   Unless required by applicable law or agreed to in writing, software
00011  *   distributed under the License is distributed on an "AS IS" BASIS,
00012  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  *   See the License for the specific language governing permissions and
00014  *   limitations under the License.
00015  *
00016  */
00017  
00018 #ifndef AXIOM_XML_READER_H
00019 #define AXIOM_XML_READER_H
00020 
00026 #include <axis2_env.h>
00027 #include <axis2_utils.h>
00028 
00029 #ifdef __cplusplus
00030 extern "C"
00031 {
00032 #endif
00033 
00034 typedef struct axiom_xml_reader_ops axiom_xml_reader_ops_t;
00035 typedef struct axiom_xml_reader axiom_xml_reader_t;
00036 
00050 typedef enum axiom_xml_reader_event_types
00051 {
00052     AXIOM_XML_READER_START_DOCUMENT = 0,
00053     AXIOM_XML_READER_START_ELEMENT,
00054     AXIOM_XML_READER_END_ELEMENT,
00055     AXIOM_XML_READER_SPACE,
00056     AXIOM_XML_READER_EMPTY_ELEMENT,
00057     AXIOM_XML_READER_CHARACTER,
00058     AXIOM_XML_READER_ENTITY_REFERENCE,
00059     AXIOM_XML_READER_COMMENT,
00060     AXIOM_XML_READER_PROCESSING_INSTRUCTION,
00061     AXIOM_XML_READER_CDATA,
00062     AXIOM_XML_READER_DOCUMENT_TYPE
00063 }axiom_xml_reader_event_types;
00064 
00070  struct axiom_xml_reader_ops
00071     {
00081         int (AXIS2_CALL *
00082       next)(axiom_xml_reader_t *parser,
00083               const axis2_env_t *env);
00084       
00092         axis2_status_t (AXIS2_CALL *
00093       free)(axiom_xml_reader_t *parser,
00094               const axis2_env_t *env);
00102         int (AXIS2_CALL *
00103       get_attribute_count)(axiom_xml_reader_t *parser,
00104                              const axis2_env_t *env);
00105                       
00106                                               
00116         axis2_char_t* (AXIS2_CALL *
00117       get_attribute_name_by_number)(axiom_xml_reader_t *parser,
00118                                       const axis2_env_t *env,
00119                                       int i);
00120                                                      
00131         axis2_char_t* (AXIS2_CALL *
00132       get_attribute_prefix_by_number)(axiom_xml_reader_t *parser,
00133                                         const axis2_env_t *env,
00134                                         int i);
00135                                                      
00146         axis2_char_t* (AXIS2_CALL *
00147       get_attribute_value_by_number)(axiom_xml_reader_t *parser,
00148                                        const axis2_env_t *env,
00149                                        int i);
00150         
00161         axis2_char_t* (AXIS2_CALL *
00162       get_attribute_namespace_by_number)(axiom_xml_reader_t *parser,
00163                                            const axis2_env_t *env,
00164                                            int i);
00165                                  
00173         axis2_char_t* (AXIS2_CALL *
00174       get_value)(axiom_xml_reader_t *parser,
00175                    const axis2_env_t *env);
00176         
00183         int (AXIS2_CALL *
00184       get_namespace_count)(axiom_xml_reader_t *parser,
00185                              const axis2_env_t *env);
00195         axis2_char_t* (AXIS2_CALL *
00196       get_namespace_uri_by_number)(axiom_xml_reader_t *parser,
00197                                      const axis2_env_t *env,
00198                                      int i);
00208         axis2_char_t* (AXIS2_CALL *
00209       get_namespace_prefix_by_number)(axiom_xml_reader_t *parser,
00210                                         const axis2_env_t *env,
00211                                         int i); 
00220         axis2_char_t* (AXIS2_CALL *
00221       get_prefix)(axiom_xml_reader_t *parser,
00222                     const axis2_env_t *env);   
00230         axis2_char_t* (AXIS2_CALL *
00231       get_name)(axiom_xml_reader_t *parser,
00232                   const axis2_env_t *env); 
00243         axis2_char_t* (AXIS2_CALL *
00244       get_pi_target)(axiom_xml_reader_t *parser,
00245                        const axis2_env_t *env);
00255         axis2_char_t* (AXIS2_CALL *
00256       get_pi_data)(axiom_xml_reader_t *parser,
00257                      const axis2_env_t *env);
00265         axis2_char_t* (AXIS2_CALL *
00266       get_dtd)(axiom_xml_reader_t *parser,
00267                  const axis2_env_t *env);                                                
00278         axis2_status_t (AXIS2_CALL *
00279       xml_free)(axiom_xml_reader_t *parser,
00280                   const axis2_env_t *env,
00281                   void *data);
00282 
00290         axis2_char_t* (AXIS2_CALL *
00291       get_char_set_encoding)(axiom_xml_reader_t *parser,
00292                                const axis2_env_t *env);                                         
00294         axis2_char_t* (AXIS2_CALL *
00295       get_namespace_uri)(axiom_xml_reader_t *parser,
00296                            const axis2_env_t *env);
00297                            
00298         axis2_char_t* (AXIS2_CALL *
00299         get_namespace_uri_by_prefix)(axiom_xml_reader_t *parser,
00300                                      const axis2_env_t *env,
00301                                      axis2_char_t *prefix);
00302                                        
00303                                
00304     };
00305      
00310 struct axiom_xml_reader
00311 {
00312     axiom_xml_reader_ops_t *ops;  
00313 };    
00314 
00324 AXIS2_EXTERN axiom_xml_reader_t * AXIS2_CALL
00325 axiom_xml_reader_create_for_file(const axis2_env_t *env,
00326                                   char *filename,
00327                                   const axis2_char_t *encoding);
00344 AXIS2_EXTERN axiom_xml_reader_t * AXIS2_CALL
00345 axiom_xml_reader_create_for_io(const axis2_env_t *env,
00346                                     AXIS2_READ_INPUT_CALLBACK,
00347                                     AXIS2_CLOSE_INPUT_CALLBACK,
00348                                     void *ctx,
00349                                     const axis2_char_t *encoding);
00350 
00359 AXIS2_EXTERN axiom_xml_reader_t * AXIS2_CALL
00360 axiom_xml_reader_create_for_memory(const axis2_env_t *env,
00361                                   void *container,
00362                                   int size,
00363                                   const axis2_char_t *encoding,
00364                           int type);
00365 
00370 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00371 axiom_xml_reader_init();
00372 
00376 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00377 axiom_xml_reader_cleanup();
00378 
00379 
00380 /********************************* Macros *************************************/
00381 
00386 #define AXIOM_XML_READER_NEXT(parser, env) \
00387         ((parser)->ops->next(parser, env))
00388 
00389 #define AXIOM_XML_READER_FREE(parser, env) \
00390         ((parser)->ops->free(parser, env))
00391 
00392 #define AXIOM_XML_READER_GET_ATTRIBUTE_COUNT(parser, env) \
00393         ((parser)->ops->get_attribute_count(parser, env))
00394 
00395 #define AXIOM_XML_READER_GET_ATTRIBUTE_NAME_BY_NUMBER(parser, env, i) \
00396         ((parser)->ops->get_attribute_name_by_number(parser, env, i))
00397 
00398 #define AXIOM_XML_READER_GET_ATTRIBUTE_VALUE_BY_NUMBER(parser, env, i) \
00399         ((parser)->ops->get_attribute_value_by_number(parser,env, i))
00400 
00401 #define AXIOM_XML_READER_GET_ATTRIBUTE_NAMESPACE_BY_NUMBER(parser, env, i) \
00402         ((parser)->ops->get_attribute_namespace_by_number(parser, env, i))
00403 
00404 #define AXIOM_XML_READER_GET_ATTRIBUTE_PREFIX_BY_NUMBER(parser, env, i) \
00405         ((parser)->ops->get_attribute_prefix_by_number(parser, env, i))
00406 
00407 #define AXIOM_XML_READER_GET_NAME(parser, env) \
00408         ((parser)->ops->get_name(parser, env))
00409 
00410 #define AXIOM_XML_READER_GET_VALUE(parser, env) \
00411         ((parser)->ops->get_value(parser, env))
00412 
00413 #define AXIOM_XML_READER_GET_PREFIX(parser, env) \
00414         ((parser)->ops->get_prefix(parser, env))
00415 
00416 #define AXIOM_XML_READER_GET_NAMESPACE_COUNT(parser, env) \
00417         ((parser)->ops->get_namespace_count(parser, env))
00418 
00419 #define AXIOM_XML_READER_GET_NAMESPACE_URI_BY_NUMBER(parser, env, i) \
00420         ((parser)->ops->get_namespace_uri_by_number(parser, env, i))
00421 
00422 #define AXIOM_XML_READER_GET_NAMESPACE_PREFIX_BY_NUMBER(parser, env, i) \
00423         ((parser)->ops->get_namespace_prefix_by_number(parser, env, i))
00424 
00425 #define AXIOM_XML_READER_GET_PI_DATA(parser, env) \
00426         ((parser)->ops->get_pi_data(parser, env))
00427 
00428 #define AXIOM_XML_READER_GET_PI_TARGET(parser, env) \
00429         ((parser)->ops->get_pi_target(parser, env))
00430 
00431 #define AXIOM_XML_READER_GET_DTD(parser, env) \
00432         ((parser)->ops->get_dtd(parser, env))
00433 
00434 #define AXIOM_XML_READER_XML_FREE(parser, env, data) \
00435         ((parser)->ops->xml_free(parser, env, data))
00436       
00437 #define AXIOM_XML_READER_GET_CHAR_SET_ENCODING(parser, env) \
00438         ((parser)->ops->get_char_set_encoding(parser, env)) 
00439         
00440 #define AXIOM_XML_READER_GET_NAMESPACE_URI(parser, env) \
00441         ((parser)->ops->get_namespace_uri(parser, env))
00442         
00443 #define AXIOM_XML_READER_GET_NAMESPACE_URI_BY_PREFIX(parser, env, prefix) \
00444         ((parser)->ops->get_namespace_uri_by_prefix(parser, env, prefix))         
00445 
00446 /******************************* End Macros ***********************************/
00450 #ifdef __cplusplus
00451 }
00452 #endif
00453 
00454 #endif  /* AXIOM_XML_READER_H */

Generated on Tue Oct 3 22:35:47 2006 for Axis2/C by  doxygen 1.4.7