woden_element_extensible.h

Go to the documentation of this file.
00001 /*
00002  * Copyright 2004,2005 The Apache Software Foundation.
00003  *
00004  * Licensed under the Apache License, Version 2.0 (the "License");
00005  * you may not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  *      http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an "AS IS" BASIS,
00012  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 
00017 #ifndef WODEN_ELEMENT_EXTENSIBLE_H
00018 #define WODEN_ELEMENT_EXTENSIBLE_H
00019 
00027 #include <axis2_allocator.h>
00028 #include <axis2_env.h>
00029 #include <axis2_error.h>
00030 #include <axis2_string.h>
00031 #include <axis2_utils.h>
00032 #include <axis2_hash.h>
00033 #include <axis2_qname.h>
00034 #include <axis2_uri.h>
00035 #include <axis2_array_list.h>
00036 #include <woden.h>
00037 
00038 #ifdef __cplusplus
00039 extern "C"
00040 {
00041 #endif
00042 
00043 typedef struct woden_element_extensible woden_element_extensible_t;
00044 typedef struct woden_element_extensible_ops woden_element_extensible_ops_t;
00045 struct woden_ext_element;
00046 
00052 struct woden_element_extensible_ops
00053 {
00058     axis2_status_t (AXIS2_CALL *
00059     free) (
00060             void *
00061             element_extensible,
00062             const axis2_env_t *env);
00063     
00064     axis2_hash_t *(AXIS2_CALL *
00065     super_objs) (
00066             void *
00067             element_extensible,
00068             const axis2_env_t *env);
00069     
00070     woden_obj_types_t (AXIS2_CALL *
00071     type) (
00072             void *element_extensible,
00073             const axis2_env_t *env);
00074  
00075     axis2_status_t (AXIS2_CALL *
00076     add_ext_element) (
00077             void *extensible,
00078             const axis2_env_t *env,
00079             struct woden_ext_element *ext_el); 
00080 
00081     axis2_status_t (AXIS2_CALL *
00082     remove_ext_element) (
00083             void *extensible,
00084             const axis2_env_t *env,
00085             struct woden_ext_element *ext_el); 
00086 
00087     axis2_array_list_t *(AXIS2_CALL *
00088     get_ext_elements) (
00089             void *extensible,
00090             const axis2_env_t *env); 
00091 
00092     axis2_array_list_t *(AXIS2_CALL *
00093     get_ext_elements_of_type) (
00094             void *extensible,
00095             const axis2_env_t *env,
00096             axis2_qname_t *ext_type);
00097 
00098     axis2_bool_t (AXIS2_CALL *
00099     has_ext_elements_for_namespace) (
00100             void *extensible,
00101             const axis2_env_t *env,
00102             axis2_uri_t *namespc);
00103  
00104 };
00105 
00106 struct woden_element_extensible
00107 {
00108     woden_element_extensible_ops_t *ops;
00109 };
00110 
00111 AXIS2_EXTERN woden_element_extensible_t * AXIS2_CALL
00112 woden_element_extensible_create(const axis2_env_t *env);
00113 
00118 AXIS2_EXTERN axis2_status_t AXIS2_CALL
00119 woden_element_extensible_resolve_methods(
00120         woden_element_extensible_t *extensible,
00121         const axis2_env_t *env,
00122         woden_element_extensible_t *extensible_impl,
00123         axis2_hash_t *methods);
00124 
00125 #define WODEN_ELEMENT_EXTENSIBLE_FREE(extensible, env) \
00126       (((woden_element_extensible_t *) extensible)->ops->\
00127          free (extensible, env))
00128 
00129 #define WODEN_ELEMENT_EXTENSIBLE_SUPER_OBJS(extensible, env) \
00130       (((woden_element_extensible_t *) extensible)->ops->\
00131          super_objs (extensible, env))
00132 
00133 #define WODEN_ELEMENT_EXTENSIBLE_TYPE(extensible, env) \
00134       (((woden_element_extensible_t *) extensible)->ops->\
00135          type (extensible, env))
00136 
00137 #define WODEN_ELEMENT_EXTENSIBLE_ADD_EXT_ELEMENT(extensible, env, ext_el) \
00138       (((woden_element_extensible_t *) extensible)->ops->\
00139          add_ext_element(extensible, env, ext_el))
00140 
00141 #define WODEN_ELEMENT_EXTENSIBLE_REMOVE_EXT_ELEMENT(extensible, env, \
00142         ext_el) \
00143       (((woden_element_extensible_t *) extensible)->ops->\
00144          remove_ext_element(extensible, env, ext_el))
00145 
00146 #define WODEN_ELEMENT_EXTENSIBLE_GET_EXT_ELEMENTS(extensible, env) \
00147       (((woden_element_extensible_t *) extensible)->ops->\
00148          get_ext_elements(extensible, env))
00149 
00150 #define WODEN_ELEMENT_EXTENSIBLE_GET_EXT_ELEMENTS_OF_TYPE(extensible, \
00151         env, ext_type) \
00152       (((woden_element_extensible_t *) extensible)->ops->\
00153          get_ext_elements_of_type(extensible, env, ext_type))
00154 
00155 #define WODEN_ELEMENT_EXTENSIBLE_HAS_EXT_ELEMENTS_FOR_NAMESPACE(\
00156         extensible, env, namespc) \
00157       (((woden_element_extensible_t *) extensible)->ops->\
00158          has_ext_elements_for_namespace(extensible, env, namespc))
00159 
00160 
00162 #ifdef __cplusplus
00163 }
00164 #endif
00165 #endif /* WODEN_ELEMENT_EXTENSIBLE_H */

Generated on Thu Aug 31 17:32:37 2006 for Axis2/C by  doxygen 1.4.6