00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef AXIS2_OM_DOCTYPE_H
00018 #define AXIS2_OM_DOCTYPE_H
00019
00025 #include <axis2_om_node.h>
00026 #include <axis2_om_output.h>
00027
00028 #ifdef __cplusplus
00029 extern "C"
00030 {
00031 #endif
00032
00033 struct axis2_om_doctype;
00034 struct axis2_om_doctype_ops;
00035
00046 AXIS2_DECLARE_DATA typedef struct axis2_om_doctype_ops
00047 {
00055 axis2_status_t (AXIS2_CALL *free)(struct axis2_om_doctype *om_doctype,
00056 axis2_env_t **env);
00062 axis2_char_t* (AXIS2_CALL *get_value)
00063 (struct axis2_om_doctype *om_doctype,
00064 axis2_env_t **env);
00073 axis2_status_t (AXIS2_CALL *set_value)
00074 (struct axis2_om_doctype *om_doctype,
00075 axis2_env_t **env,
00076 const axis2_char_t *value);
00086 axis2_status_t (AXIS2_CALL *serialize)
00087 (struct axis2_om_doctype *om_doctype,
00088 axis2_env_t **env,
00089 axis2_om_output_t *om_output);
00090
00091 } axis2_om_doctype_ops_t;
00092
00097 typedef struct axis2_om_doctype
00098 {
00100 axis2_om_doctype_ops_t *ops;
00101
00102 } axis2_om_doctype_t;
00103
00114 AXIS2_DECLARE(axis2_om_doctype_t *)
00115 axis2_om_doctype_create (axis2_env_t **env,
00116 axis2_om_node_t * parent,
00117 const axis2_char_t * value,
00118 axis2_om_node_t ** node);
00119
00121 #define AXIS2_OM_DOCTYPE_FREE(doctype, env) \
00122 ((doctype)->ops->free(doctype, env))
00124 #define AXIS2_OM_DOCTYPE_GET_VALUE(doctype, env) \
00125 ((doctype)->ops->get_value(doctype, value))
00127 #define AXIS2_OM_DOCTYPE_SET_VALUE(doctype, env, value) \
00128 ((doctype)->ops->set_value(doctype, env, value))
00130 #define AXIS2_OM_DOCTYPE_SERIALIZE(doctype, env, om_output) \
00131 ((doctype)->ops->serialize(doctype, env, om_output))
00132
00135 #ifdef __cplusplus
00136 }
00137 #endif
00138
00139 #endif