00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef XML_SCHEMA_OBJ_H
00018 #define XML_SCHEMA_OBJ_H
00019
00025 #include <axis2_allocator.h>
00026 #include <axis2_env.h>
00027 #include <axis2_error.h>
00028 #include <axis2_string.h>
00029 #include <axis2_utils_defines.h>
00030 #include <axis2_array_list.h>
00031 #include <axis2_hash.h>
00032 #include <xml_schema_defines.h>
00033
00034 #ifdef __cplusplus
00035 extern "C"
00036 {
00037 #endif
00038
00039 typedef struct xml_schema_obj xml_schema_obj_t;
00040 typedef struct xml_schema_obj_ops xml_schema_obj_ops_t;
00041
00047 struct xml_schema_obj_ops
00048 {
00049 axis2_status_t (AXIS2_CALL *
00050 free) (
00051 void *obj,
00052 const axis2_env_t *env);
00053
00054 axis2_hash_t *(AXIS2_CALL *
00055 super_objs) (
00056 void *obj,
00057 const axis2_env_t *env);
00058
00059 xml_schema_types_t (AXIS2_CALL *
00060 get_type) (
00061 void *obj,
00062 const axis2_env_t *env);
00063
00064 int (AXIS2_CALL *
00065 get_line_num) (void *obj,
00066 const axis2_env_t *env);
00067
00068 axis2_status_t (AXIS2_CALL *
00069 set_line_num) (void *obj,
00070 const axis2_env_t *env,
00071 int line_num);
00072
00073 int (AXIS2_CALL *
00074 get_line_pos) (void *obj,
00075 const axis2_env_t *env);
00076
00077 axis2_status_t (AXIS2_CALL *
00078 set_line_pos) (void *obj,
00079 const axis2_env_t *env,
00080 int line_pos);
00081
00082 axis2_char_t * (AXIS2_CALL *
00083 get_source_uri) (void *obj,
00084 const axis2_env_t *env);
00085
00086 axis2_status_t (AXIS2_CALL *
00087 set_source_uri) (void *obj,
00088 const axis2_env_t *env,
00089 axis2_char_t *source_uri);
00090
00091 axis2_bool_t (AXIS2_CALL *
00092 equals) (void *obj,
00093 const axis2_env_t *env,
00094 void *obj_comp);
00095
00096 };
00097
00098 struct xml_schema_obj
00099 {
00100 xml_schema_obj_ops_t *ops;
00101 };
00102
00103 AXIS2_EXTERN xml_schema_obj_t * AXIS2_CALL
00104 xml_schema_obj_create(const axis2_env_t *env);
00105
00109 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00110 xml_schema_obj_resolve_methods(xml_schema_obj_t *schema_obj,
00111 const axis2_env_t *env,
00112 xml_schema_obj_t *schema_obj_impl,
00113 axis2_hash_t *methods);
00114
00115 #define XML_SCHEMA_OBJ_FREE(obj, env) \
00116 (((xml_schema_obj_t *) obj)->ops->free (obj, env))
00117
00118 #define XML_SCHEMA_OBJ_SUPER_OBJS(obj, env) \
00119 (((xml_schema_obj_t *) obj)->ops->super_objs (obj, env))
00120
00121 #define XML_SCHEMA_OBJ_GET_TYPE(obj, env) \
00122 (((xml_schema_obj_t *) obj)->ops->get_type (obj, env))
00123
00124 #define XML_SCHEMA_OBJ_GET_LINE_NUM(obj, env) \
00125 (((xml_schema_obj_t *) obj)->ops->get_line_num (obj, env))
00126
00127 #define XML_SCHEMA_OBJ_SET_LINE_NUM(obj, env, line_num) \
00128 (((xml_schema_obj_t *) obj)->ops->set_line_num (obj, env, line_num))
00129
00130 #define XML_SCHEMA_OBJ_GET_LINE_POS(obj, env) \
00131 (((xml_schema_obj_t *) obj)->ops->get_line_pos (obj, env))
00132
00133 #define XML_SCHEMA_OBJ_SET_LINE_POS(obj, env, line_pos) \
00134 (((xml_schema_obj_t *) obj)->ops->set_line_pos (obj, env, line_pos))
00135
00136 #define XML_SCHEMA_OBJ_GET_SOURCE_URI(obj, env) \
00137 (((xml_schema_obj_t *) obj)->ops->get_source_uri (obj, env))
00138
00139 #define XML_SCHEMA_OBJ_SET_SOURCE_URI(obj, env, source_uri) \
00140 (((xml_schema_obj_t *) obj)->ops->set_source_uri (obj, env, \
00141 source_uri))
00142
00143 #define XML_SCHEMA_OBJ_EQUALS(obj, env) \
00144 (((xml_schema_obj_t *) obj)->ops->equals (obj, env))
00145
00147 #ifdef __cplusplus
00148 }
00149 #endif
00150 #endif