00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef XML_SCHEMA_XPATH_H
00018 #define XML_SCHEMA_XPATH_H
00019
00029 #include <xml_schema_annotated.h>
00030 #include <axiom_element.h>
00031 #include <axiom_node.h>
00032 #include <axis2_hash.h>
00033
00039 typedef struct xml_schema_xpath xml_schema_xpath_t;
00040 typedef struct xml_schema_xpath_ops xml_schema_xpath_ops_t;
00041
00042 #ifdef __cplusplus
00043 extern "C"
00044 {
00045 #endif
00046
00047 struct xml_schema_xpath_ops
00048 {
00053 axis2_status_t (AXIS2_CALL *
00054 free) (void *xpath,
00055 const axis2_env_t *env);
00056
00057 xml_schema_annotated_t *(AXIS2_CALL *
00058 get_base_impl) (void *xpath,
00059 const axis2_env_t *env);
00060
00061 xml_schema_types_t (AXIS2_CALL *
00062 get_type)(void *xpath,
00063 const axis2_env_t *env);
00064
00065 axis2_hash_t* (AXIS2_CALL *
00066 super_objs)(void *xpath,
00067 const axis2_env_t *env);
00068
00069 axis2_char_t *(AXIS2_CALL *
00070 get_xpath)(void *xpath,
00071 const axis2_env_t *env);
00072
00073 axis2_status_t (AXIS2_CALL *
00074 set_xpath)(void *xpath,
00075 const axis2_env_t *env,
00076 axis2_char_t *x_path);
00077
00078 };
00079
00080 struct xml_schema_xpath
00081 {
00082 xml_schema_annotated_t base;
00083 xml_schema_xpath_ops_t *ops;
00084 };
00085
00089 AXIS2_EXTERN xml_schema_xpath_t * AXIS2_CALL
00090 xml_schema_xpath_create(const axis2_env_t *env);
00091
00092
00093 #define XML_SCHEMA_XPATH_FREE(xpath, env) \
00094 (((xml_schema_xpath_t *) xpath)->ops->\
00095 free(xpath, env))
00096
00097 #define XML_SCHEMA_XPATH_GET_BASE_IMPL(xpath, env) \
00098 (((xml_schema_xpath_t *) xpath)->ops->\
00099 get_base_impl(xpath, env))
00100
00101 #define XML_SCHEMA_XPATH_GET_TYPE(xpath, env) \
00102 (((xml_schema_xpath_t *) xpath)->ops->\
00103 get_type(xpath, env))
00104
00105 #define XML_SCHEMA_XPATH_SUPER_OBJS(xpath, env) \
00106 (((xml_schema_xpath_t *) xpath)->ops->\
00107 super_objs(xpath, env))
00108
00109 #define XML_SCHEMA_XPATH_GET_XPATH(xpath, env) \
00110 (((xml_schema_xpath_t *) xpath)->ops->\
00111 get_xpath(xpath, env))
00112
00113 #define XML_SCHEMA_XPATH_SET_XPATH(xpath, env, x_path) \
00114 (((xml_schema_xpath_t *) xpath)->ops->\
00115 set_xpath(xpath, env, x_path))
00116
00118 #ifdef __cplusplus
00119 }
00120 #endif
00121 #endif