00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef XML_SCHEMA_DATA_TYPE_H
00019 #define XML_SCHEMA_DATA_TYPE_H
00020
00026 #include <axis2_allocator.h>
00027 #include <axis2_env.h>
00028 #include <axis2_error.h>
00029 #include <axis2_string.h>
00030 #include <axis2_array_list.h>
00031 #include <axis2_hash.h>
00032
00033 #ifdef __cplusplus
00034 extern "C"
00035 {
00036 #endif
00037
00038 typedef struct xml_schema_data_type xml_schema_data_type_t;
00039 typedef struct xml_schema_data_type_ops xml_schema_data_type_ops_t;
00040 struct xml_schema_tokenized_type;
00041
00047 struct xml_schema_data_type_ops
00048 {
00053 axis2_status_t (AXIS2_CALL *
00054 free) (void *data_type,
00055 const axis2_env_t *env);
00056
00057 void * (AXIS2_CALL *
00058 parse_value) (void *data_type,
00059 const axis2_env_t *env,
00060 void *input);
00061
00062 void *(AXIS2_CALL *
00063 value_type) (void *data_type,
00064 const axis2_env_t *env);
00065
00066 struct xml_schema_tokenized_type *(AXIS2_CALL *
00067 tokenized_type) (void *data_type,
00068 const axis2_env_t *env);
00069
00070 };
00071
00072 struct xml_schema_data_type
00073 {
00074 xml_schema_data_type_ops_t *ops;
00075 };
00076
00077 AXIS2_EXTERN xml_schema_data_type_t * AXIS2_CALL
00078 xml_schema_data_type_create(const axis2_env_t *env);
00079
00080 #define XML_SCHEMA_DATA_TYPE_FREE(data_type, env) \
00081 (((xml_schema_data_type_t *) data_type)->ops->free (data_type, env))
00082
00083 #define XML_SCHEMA_DATA_TYPE_PARSE_VALUE(data_type, env, input) \
00084 (((xml_schema_data_type_t *) data_type)->ops->parse_value (\
00085 data_type, env, input))
00086
00087 #define XML_SCHEMA_DATA_TYPE_VALUE_TYPE(data_type, env, line_num) \
00088 (((xml_schema_data_type_t *) data_type)->ops->value_type (\
00089 data_type, env, line_num))
00090
00091 #define XML_SCHEMA_DATA_TYPE_TOKENIZED_TYPE(data_type, env) \
00092 (((xml_schema_data_type_t *) data_type)->ops->tokenized_type (\
00093 data_type, env))
00094
00096 #ifdef __cplusplus
00097 }
00098 #endif
00099 #endif