00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
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
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
00443 #ifdef __cplusplus
00444 }
00445 #endif
00446
00447 #endif