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
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 AXIS2_DECLARE_DATA 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
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
00450 #ifdef __cplusplus
00451 }
00452 #endif
00453
00454 #endif