00001 00002 /* 00003 * Licensed to the Apache Software Foundation (ASF) under one or more 00004 * contributor license agreements. See the NOTICE file distributed with 00005 * this work for additional information regarding copyright ownership. 00006 * The ASF licenses this file to You under the Apache License, Version 2.0 00007 * (the "License"); you may not use this file except in compliance with 00008 * the License. You may obtain a copy of the License at 00009 * 00010 * http://www.apache.org/licenses/LICENSE-2.0 00011 * 00012 * Unless required by applicable law or agreed to in writing, software 00013 * distributed under the License is distributed on an "AS IS" BASIS, 00014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00015 * See the License for the specific language governing permissions and 00016 * limitations under the License. 00017 */ 00018 00019 #ifndef NEETHI_ENGINE_H 00020 #define NEETHI_ENGINE_H 00021 00022 /*neethis_engine.c contains all the useful functions 00023 * for dealing with a neethi_policy object 00024 */ 00025 00026 00027 00033 #include <axis2_defines.h> 00034 #include <axutil_env.h> 00035 #include <neethi_includes.h> 00036 #include <neethi_operator.h> 00037 #include <neethi_policy.h> 00038 #include <neethi_all.h> 00039 #include <neethi_exactlyone.h> 00040 #include <neethi_reference.h> 00041 #include <neethi_registry.h> 00042 #include <neethi_assertion.h> 00043 00044 #ifdef __cplusplus 00045 extern "C" 00046 { 00047 #endif 00048 00058 AXIS2_EXTERN neethi_policy_t *AXIS2_CALL 00059 neethi_engine_get_policy( 00060 const axutil_env_t * env, 00061 axiom_node_t * node, 00062 axiom_element_t * element); 00063 00075 /*This function will return a new neethi_policy struct. 00076 So it is callers responsibility to free the neethi_policy 00077 which is passed as an argument. */ 00078 00079 AXIS2_EXTERN neethi_policy_t *AXIS2_CALL 00080 neethi_engine_get_normalize( 00081 const axutil_env_t * env, 00082 axis2_bool_t deep, 00083 neethi_policy_t * neethi_policy); 00084 00098 /*This function will return a new neethi_policy struct. 00099 So it is callers responsibility to free the neethi_policy 00100 which is passed as an argument. */ 00101 00102 00103 AXIS2_EXTERN neethi_policy_t *AXIS2_CALL 00104 neethi_engine_normalize( 00105 const axutil_env_t * env, 00106 neethi_policy_t * neethi_policy, 00107 neethi_registry_t * registry, 00108 axis2_bool_t deep); 00109 00110 /*Givnen to normalized policy objects this function will 00111 retun the merged policy object. 00112 * @param env pointer to environment struct 00113 * @param neethi_policy1 pointer neethi_policy_t struct as an 00114 * input for merge. 00115 * @param neethi_policy2 pointer neethi_policy_t struct as an 00116 * input for merge. 00117 * @return pointer to a merged policy of both inputs.*/ 00118 00119 /*The input for this function should be two normalized policies 00120 otherwise the output may be wrong.*/ 00121 00122 AXIS2_EXTERN neethi_policy_t *AXIS2_CALL 00123 neethi_engine_merge( 00124 const axutil_env_t * env, 00125 neethi_policy_t * neethi_policy1, 00126 neethi_policy_t * neethi_policy2); 00127 00128 /*Given a policy object this function will give the 00129 * corresponding axiom model for that policy object. 00130 * @param policy pointer to the neethi_policy_t struct. 00131 * @param env pointer to environment struct 00132 */ 00133 00134 AXIS2_EXTERN axiom_node_t *AXIS2_CALL 00135 neethi_engine_serialize( 00136 neethi_policy_t * policy, 00137 const axutil_env_t * env); 00138 00140 #ifdef __cplusplus 00141 } 00142 #endif 00143 00144 #endif /* NEETHI_ENGINE_H */