00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef XML_SCHEMA_GROUP_REF_H
00019 #define XML_SCHEMA_GROUP_REF_H
00020
00029 #include <xml_schema_defines.h>
00030 #include <xml_schema_particle.h>
00031 #include <axis2_hash.h>
00032 #include <axis2_qname.h>
00033
00039 typedef struct xml_schema_group_ref xml_schema_group_ref_t;
00040 typedef struct xml_schema_group_ref_ops xml_schema_group_ref_ops_t;
00041 struct xml_schema_group_base;
00042
00043 #ifdef __cplusplus
00044 extern "C"
00045 {
00046 #endif
00047
00048 struct xml_schema_group_ref_ops
00049 {
00050 axis2_status_t (AXIS2_CALL *
00051 free) (void *group_ref,
00052 const axis2_env_t *env);
00053
00054 axis2_hash_t *(AXIS2_CALL *
00055 super_objs) (
00056 void *group_ref,
00057 const axis2_env_t *env);
00058
00059 xml_schema_types_t (AXIS2_CALL *
00060 get_type) (
00061 void *group_ref,
00062 const axis2_env_t *env);
00063
00064 xml_schema_particle_t *(AXIS2_CALL *
00065 get_base_impl) (void *group_ref,
00066 const axis2_env_t *env);
00067
00068 axis2_qname_t *(AXIS2_CALL *
00069 get_ref_qname)(void *group_ref,
00070 const axis2_env_t *env);
00071
00072 axis2_status_t (AXIS2_CALL *
00073 set_ref_qname)(void *group_ref,
00074 const axis2_env_t *env,
00075 axis2_qname_t *ref_qname);
00076
00077 void *(AXIS2_CALL *
00078 get_particle)(void *group_ref,
00079 const axis2_env_t *env);
00080
00081 axis2_status_t (AXIS2_CALL *
00082 set_particle)(void *group_ref,
00083 const axis2_env_t *env,
00084 void *particle);
00085
00086
00087 };
00088
00089 struct xml_schema_group_ref
00090 {
00091 xml_schema_particle_t base;
00092 xml_schema_group_ref_ops_t *ops;
00093 };
00094
00098 AXIS2_EXTERN xml_schema_group_ref_t * AXIS2_CALL
00099 xml_schema_group_ref_create(const axis2_env_t *env);
00100
00101
00102 #define XML_SCHEMA_GROUP_REF_FREE(group_ref, env) \
00103 (((xml_schema_group_ref_t *) group_ref)->ops->\
00104 free(group_ref, env))
00105
00106 #define XML_SCHEMA_GROUP_REF_SUPER_OBJS(group_ref, env) \
00107 (((xml_schema_group_ref_t *) group_ref)->ops->super_objs(group_ref, env))
00108
00109 #define XML_SCHEMA_GROUP_REF_GET_TYPE(group_ref, env) \
00110 (((xml_schema_group_ref_t *) group_ref)->ops->get_type(group_ref, env))
00111
00112 #define XML_SCHEMA_GROUP_REF_GET_BASE_IMPL(group_ref, env) \
00113 (((xml_schema_group_ref_t *) group_ref)->ops->\
00114 get_base_impl(group_ref, env))
00115
00116 #define XML_SCHEMA_GROUP_REF_GET_REF_QNAME(group_ref, env) \
00117 (((xml_schema_group_ref_t *) group_ref)->ops->\
00118 get_ref_qname(group_ref, env))
00119
00120 #define XML_SCHEMA_GROUP_REF_SET_REF_QNAME(group_ref, env, ref_qname) \
00121 (((xml_schema_group_ref_t *) group_ref)->ops->\
00122 set_ref_qname(group_ref, env, ref_qname))
00123
00124 #define XML_SCHEMA_GROUP_REF_GET_PARTICLE(group_ref, env) \
00125 (((xml_schema_group_ref_t *) group_ref)->ops->\
00126 get_particle(group_ref, env))
00127
00128 #define XML_SCHEMA_GROUP_REF_SET_PARTICLE(group_ref, env, particle) \
00129 (((xml_schema_group_ref_t *) group_ref)->ops->\
00130 set_particle(group_ref, env, particle))
00131
00132
00133
00135 #ifdef __cplusplus
00136 }
00137 #endif
00138 #endif