Main Page | Modules | Class List | Directories | File List | Class Members | File Members | Examples

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 
00043 typedef enum axiom_xml_reader_event_types
00044 {
00045     AXIOM_XML_READER_START_DOCUMENT = 0,
00046     AXIOM_XML_READER_START_ELEMENT,
00047     AXIOM_XML_READER_END_ELEMENT,
00048     AXIOM_XML_READER_SPACE,
00049     AXIOM_XML_READER_EMPTY_ELEMENT,
00050     AXIOM_XML_READER_CHARACTER,
00051     AXIOM_XML_READER_ENTITY_REFERENCE,
00052     AXIOM_XML_READER_COMMENT,
00053     AXIOM_XML_READER_PROCESSING_INSTRUCTION,
00054     AXIOM_XML_READER_CDATA,
00055     AXIOM_XML_READER_DOCUMENT_TYPE
00056 }axiom_xml_reader_event_types;
00057 
00063 AXIS2_DECLARE_DATA struct axiom_xml_reader_ops
00064     {
00074         int (AXIS2_CALL *
00075       next)(axiom_xml_reader_t *parser,
00076               const axis2_env_t *env);
00077       
00085         axis2_status_t (AXIS2_CALL *
00086       free)(axiom_xml_reader_t *parser,
00087               const axis2_env_t *env);
00095         int (AXIS2_CALL *
00096       get_attribute_count)(axiom_xml_reader_t *parser,
00097                              const axis2_env_t *env);
00098                       
00099                                               
00109         axis2_char_t* (AXIS2_CALL *
00110       get_attribute_name_by_number)(axiom_xml_reader_t *parser,
00111                                       const axis2_env_t *env,
00112                                       int i);
00113                                                      
00124         axis2_char_t* (AXIS2_CALL *
00125       get_attribute_prefix_by_number)(axiom_xml_reader_t *parser,
00126                                         const axis2_env_t *env,
00127                                         int i);
00128                                                      
00139         axis2_char_t* (AXIS2_CALL *
00140       get_attribute_value_by_number)(axiom_xml_reader_t *parser,
00141                                        const axis2_env_t *env,
00142                                        int i);
00143         
00154         axis2_char_t* (AXIS2_CALL *
00155       get_attribute_namespace_by_number)(axiom_xml_reader_t *parser,
00156                                            const axis2_env_t *env,
00157                                            int i);
00158                                  
00166         axis2_char_t* (AXIS2_CALL *
00167       get_value)(axiom_xml_reader_t *parser,
00168                    const axis2_env_t *env);
00169         
00176         int (AXIS2_CALL *
00177       get_namespace_count)(axiom_xml_reader_t *parser,
00178                              const axis2_env_t *env);
00188         axis2_char_t* (AXIS2_CALL *
00189       get_namespace_uri_by_number)(axiom_xml_reader_t *parser,
00190                                      const axis2_env_t *env,
00191                                      int i);
00201         axis2_char_t* (AXIS2_CALL *
00202       get_namespace_prefix_by_number)(axiom_xml_reader_t *parser,
00203                                         const axis2_env_t *env,
00204                                         int i); 
00213         axis2_char_t* (AXIS2_CALL *
00214       get_prefix)(axiom_xml_reader_t *parser,
00215                     const axis2_env_t *env);   
00223         axis2_char_t* (AXIS2_CALL *
00224       get_name)(axiom_xml_reader_t *parser,
00225                   const axis2_env_t *env); 
00236         axis2_char_t* (AXIS2_CALL *
00237       get_pi_target)(axiom_xml_reader_t *parser,
00238                        const axis2_env_t *env);
00248         axis2_char_t* (AXIS2_CALL *
00249       get_pi_data)(axiom_xml_reader_t *parser,
00250                      const axis2_env_t *env);
00258         axis2_char_t* (AXIS2_CALL *
00259       get_dtd)(axiom_xml_reader_t *parser,
00260                  const axis2_env_t *env);                                                
00271         axis2_status_t (AXIS2_CALL *
00272       xml_free)(axiom_xml_reader_t *parser,
00273                   const axis2_env_t *env,
00274                   void *data);
00275 
00283         axis2_char_t* (AXIS2_CALL *
00284       get_char_set_encoding)(axiom_xml_reader_t *parser,
00285                                const axis2_env_t *env);                                         
00287         axis2_char_t* (AXIS2_CALL *
00288       get_namespace_uri)(axiom_xml_reader_t *parser,
00289                            const axis2_env_t *env);
00290                            
00291         axis2_char_t* (AXIS2_CALL *
00292         get_namespace_uri_by_prefix)(axiom_xml_reader_t *parser,
00293                                      const axis2_env_t *env,
00294                                      axis2_char_t *prefix);
00295                                        
00296                                
00297     };
00298      
00303 struct axiom_xml_reader
00304 {
00305     axiom_xml_reader_ops_t *ops;  
00306 };    
00307 
00317 AXIS2_EXTERN axiom_xml_reader_t * AXIS2_CALL
00318 axiom_xml_reader_create_for_file(const axis2_env_t *env,
00319                                   char *filename,
00320                                   const axis2_char_t *encoding);
00337 AXIS2_EXTERN axiom_xml_reader_t * AXIS2_CALL
00338 axiom_xml_reader_create_for_io(const axis2_env_t *env,
00339                                     AXIS2_READ_INPUT_CALLBACK,
00340                                     AXIS2_CLOSE_INPUT_CALLBACK,
00341                                     void *ctx,
00342                                     const axis2_char_t *encoding);
00343 
00352 AXIS2_EXTERN axiom_xml_reader_t * AXIS2_CALL
00353 axiom_xml_reader_create_for_memory(const axis2_env_t *env,
00354                                   void *container,
00355                                   int size,
00356                                   const axis2_char_t *encoding,
00357                           int type);
00358 
00363 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00364 axiom_xml_reader_init();
00365 
00369 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00370 axiom_xml_reader_cleanup();
00371 
00372 
00373 /********************************* Macros *************************************/
00374 
00379 #define AXIOM_XML_READER_NEXT(parser, env) \
00380         ((parser)->ops->next(parser, env))
00381 
00382 #define AXIOM_XML_READER_FREE(parser, env) \
00383         ((parser)->ops->free(parser, env))
00384 
00385 #define AXIOM_XML_READER_GET_ATTRIBUTE_COUNT(parser, env) \
00386         ((parser)->ops->get_attribute_count(parser, env))
00387 
00388 #define AXIOM_XML_READER_GET_ATTRIBUTE_NAME_BY_NUMBER(parser, env, i) \
00389         ((parser)->ops->get_attribute_name_by_number(parser, env, i))
00390 
00391 #define AXIOM_XML_READER_GET_ATTRIBUTE_VALUE_BY_NUMBER(parser, env, i) \
00392         ((parser)->ops->get_attribute_value_by_number(parser,env, i))
00393 
00394 #define AXIOM_XML_READER_GET_ATTRIBUTE_NAMESPACE_BY_NUMBER(parser, env, i) \
00395         ((parser)->ops->get_attribute_namespace_by_number(parser, env, i))
00396 
00397 #define AXIOM_XML_READER_GET_ATTRIBUTE_PREFIX_BY_NUMBER(parser, env, i) \
00398         ((parser)->ops->get_attribute_prefix_by_number(parser, env, i))
00399 
00400 #define AXIOM_XML_READER_GET_NAME(parser, env) \
00401         ((parser)->ops->get_name(parser, env))
00402 
00403 #define AXIOM_XML_READER_GET_VALUE(parser, env) \
00404         ((parser)->ops->get_value(parser, env))
00405 
00406 #define AXIOM_XML_READER_GET_PREFIX(parser, env) \
00407         ((parser)->ops->get_prefix(parser, env))
00408 
00409 #define AXIOM_XML_READER_GET_NAMESPACE_COUNT(parser, env) \
00410         ((parser)->ops->get_namespace_count(parser, env))
00411 
00412 #define AXIOM_XML_READER_GET_NAMESPACE_URI_BY_NUMBER(parser, env, i) \
00413         ((parser)->ops->get_namespace_uri_by_number(parser, env, i))
00414 
00415 #define AXIOM_XML_READER_GET_NAMESPACE_PREFIX_BY_NUMBER(parser, env, i) \
00416         ((parser)->ops->get_namespace_prefix_by_number(parser, env, i))
00417 
00418 #define AXIOM_XML_READER_GET_PI_DATA(parser, env) \
00419         ((parser)->ops->get_pi_data(parser, env))
00420 
00421 #define AXIOM_XML_READER_GET_PI_TARGET(parser, env) \
00422         ((parser)->ops->get_pi_target(parser, env))
00423 
00424 #define AXIOM_XML_READER_GET_DTD(parser, env) \
00425         ((parser)->ops->get_dtd(parser, env))
00426 
00427 #define AXIOM_XML_READER_XML_FREE(parser, env, data) \
00428         ((parser)->ops->xml_free(parser, env, data))
00429       
00430 #define AXIOM_XML_READER_GET_CHAR_SET_ENCODING(parser, env) \
00431         ((parser)->ops->get_char_set_encoding(parser, env)) 
00432         
00433 #define AXIOM_XML_READER_GET_NAMESPACE_URI(parser, env) \
00434         ((parser)->ops->get_namespace_uri(parser, env))
00435         
00436 #define AXIOM_XML_READER_GET_NAMESPACE_URI_BY_PREFIX(parser, env, prefix) \
00437         ((parser)->ops->get_namespace_uri_by_prefix(parser, env, prefix))         
00438 
00439 /******************************* End Macros ***********************************/
00443 #ifdef __cplusplus
00444 }
00445 #endif
00446 
00447 #endif  /* AXIOM_XML_READER_H */

Generated on Fri Jun 16 18:02:30 2006 for Axis2/C by  doxygen 1.4.2