1 /*
2  * Copyright 2006-2008 The FLWOR Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 
18 %{  // start Implementation
19 
20 #include <zorba/static_context_consts.h>
21 
22 
StaticContext(const StaticContext & aStaticContext)23 StaticContext::StaticContext(const StaticContext& aStaticContext) :
24     theStaticContext(aStaticContext.theStaticContext) {}
25 
StaticContext(zorba::StaticContext_t aStaticContext)26 StaticContext::StaticContext(zorba::StaticContext_t aStaticContext) :
27     theStaticContext(aStaticContext) {}
28 
addColation(const std::string & aURI)29 void StaticContext::addColation(const std::string& aURI)
30   { theStaticContext->addCollation(aURI); }
31 
addNamespace(const std::string & aPrefix,const std::string & aURI)32 bool StaticContext::addNamespace(const std::string& aPrefix, const std::string& aURI)
33   { return theStaticContext->addNamespace(aPrefix, aURI); }
34 
containsFunction(const std::string & aFnNameUri,const std::string & aFnNameLocal,int arity)35 bool StaticContext::containsFunction(const std::string &aFnNameUri, const std::string &aFnNameLocal, int arity) const
36   { return theStaticContext->containsFunction(aFnNameUri, aFnNameLocal, arity); }
37 
createChildContext()38 StaticContext	StaticContext::createChildContext() const
39   { return StaticContext(theStaticContext->createChildContext()); }
40 
declareOption(const Item & aQName,const std::string & aOptionVal)41 void 	StaticContext::declareOption (const Item &aQName, const std::string &aOptionVal)
42   { return theStaticContext->declareOption(aQName.theItem, aOptionVal); }
43 
disableFunction(const Item & aQName,int arity)44 void 	StaticContext::disableFunction (const Item &aQName, int arity)
45   { theStaticContext->disableFunction( aQName.theItem, arity); }
46 
getBaseURI()47 std::string StaticContext::getBaseURI () const
48   { return std::string(theStaticContext->getBaseURI().c_str()); }
49 
getBoundarySpacePolicy()50 ZorbaConstants::BoundarySpaceMode StaticContext::getBoundarySpacePolicy()
51   {
52     ZorbaConstants::BoundarySpaceMode result = ZorbaConstants::PRESERVE_SPACE;
53     zorba::boundary_space_mode_t boundary = theStaticContext->getBoundarySpacePolicy();
54     if (boundary == zorba::strip_space) {
55       result = ZorbaConstants::STRIP_SPACE;
56     }
57     return result;
58   }
59 
getConstructionMode()60 ZorbaConstants::ConstructionMode StaticContext::getConstructionMode()
61   {
62     ZorbaConstants::ConstructionMode result = ZorbaConstants::STRIP_CONSTRUCTION;
63     zorba::construction_mode_t construction = theStaticContext->getConstructionMode();
64     if (construction == zorba::preserve_cons) {
65       result = ZorbaConstants::PRESERVE_CONSTRUCTION;
66     }
67     return result;
68   }
69 
getCopyNamespacesModePreserve()70 ZorbaConstants::PreserveMode StaticContext::getCopyNamespacesModePreserve()
71   {
72     zorba::preserve_mode_t lPreserve;
73     zorba::inherit_mode_t lInherit;
74     ZorbaConstants::PreserveMode aPreserve = ZorbaConstants::NO_PRESERVE;
75     theStaticContext->getCopyNamespacesMode(lPreserve, lInherit);
76     if (lPreserve==zorba::preserve_ns) {
77       aPreserve = ZorbaConstants::PRESERVE;
78     }
79     return aPreserve;
80   }
81 
getCopyNamespacesModeInherit()82 ZorbaConstants::InheritMode StaticContext::getCopyNamespacesModeInherit()
83   {
84     zorba::preserve_mode_t lPreserve;
85     zorba::inherit_mode_t lInherit;
86     ZorbaConstants::InheritMode aInherit = ZorbaConstants::NO_INHERIT;
87     theStaticContext->getCopyNamespacesMode(lPreserve, lInherit);
88     if (lInherit==zorba::inherit_ns) {
89       aInherit = ZorbaConstants::INHERIT;
90     }
91     return aInherit;
92   }
93 
getDefaultCollation()94 std::string StaticContext::getDefaultCollation () const
95   { return std::string(theStaticContext->getDefaultCollation().c_str()); }
96 
getDefaultElementAndTypeNamespace()97 std::string StaticContext::getDefaultElementAndTypeNamespace () const
98   {
99     return std::string( theStaticContext->getDefaultElementAndTypeNamespace().c_str() );
100   }
101 
getDefaultFunctionNamespace()102 std::string StaticContext::getDefaultFunctionNamespace () const
103   {
104     return std::string( theStaticContext->getDefaultFunctionNamespace().c_str() );
105   }
106 
getDefaultOrderForEmptySequences()107 ZorbaConstants::OrderEmptyMode StaticContext::getDefaultOrderForEmptySequences()
108   {
109     ZorbaConstants::OrderEmptyMode result = ZorbaConstants::EMPTY_GREATEST;
110     zorba::order_empty_mode_t order = theStaticContext->getDefaultOrderForEmptySequences();
111     if (order == zorba::empty_least) {
112       result = ZorbaConstants::EMPTY_LEAST;
113     }
114     return result;
115   }
116 
getNamespaceURIByPrefix(const std::string & aPrefix)117 std::string StaticContext::getNamespaceURIByPrefix(const std::string &aPrefix) const
118   {
119     return std::string( theStaticContext->getNamespaceURIByPrefix(aPrefix).c_str() );
120   }
121 
getOption(const Item & aQName,std::string & aOptionValue)122 bool StaticContext::getOption(const Item &aQName, std::string &aOptionValue) const
123   {
124     zorba::String optVal = zorba::String(aOptionValue.c_str());
125     return theStaticContext->getOption(aQName.theItem, optVal);
126   }
127 
getOrderingMode()128 ZorbaConstants::OrderingMode StaticContext::getOrderingMode ()
129   {
130     ZorbaConstants::OrderingMode result = ZorbaConstants::ORDERED;
131     zorba::ordering_mode_t order = theStaticContext->getOrderingMode();
132     if (order == zorba::unordered) {
133       result = ZorbaConstants::UNORDERED;
134     }
135     return result;
136   }
137 
getRevalidationMode()138 ZorbaConstants::RevalidationMode StaticContext::getRevalidationMode ()
139   {
140     ZorbaConstants::RevalidationMode result = ZorbaConstants::VALIDATE_SKIP;
141     zorba::validation_mode_t revalidation = theStaticContext->getRevalidationMode();
142     if (revalidation == zorba::validate_lax) {
143       result = ZorbaConstants::VALIDATE_LAX;
144     } else if (revalidation == zorba::validate_strict) {
145       result = ZorbaConstants::VALIDATE_STRICT;
146     }
147     return result;
148   }
149 
getXPath1_0CompatibMode()150 ZorbaConstants::XPath1_0CompatibleMode StaticContext::getXPath1_0CompatibMode ()
151   {
152     ZorbaConstants::XPath1_0CompatibleMode result = ZorbaConstants::XPATH2_0;
153     zorba::xpath1_0compatib_mode_t comp = theStaticContext->getXPath1_0CompatibMode();
154     if (comp == zorba::xpath1_0) {
155       result = ZorbaConstants::XPATH1_0;
156     }
157     return result;
158   }
159 
loadProlog(const std::string & aProlog,const CompilerHints & hints)160 void StaticContext::loadProlog (const std::string & aProlog, const CompilerHints &hints)
161   { theStaticContext->loadProlog( aProlog, hints.theCompilerHints); }
162 
getExternalVariables(Iterator & vars)163 void StaticContext::getExternalVariables(Iterator& vars) const
164   { theStaticContext->getExternalVariables( vars.theIterator ); }
165 
getStaticCollectionManager()166   StaticCollectionManager StaticContext::getStaticCollectionManager()
167   {
168     return StaticCollectionManager( theStaticContext->getStaticCollectionManager() );
169   }
170 
getCollectionType(const std::string & aCollectionUri)171 TypeIdentifier StaticContext::getCollectionType(const std::string & aCollectionUri)
172   { return TypeIdentifier(theStaticContext->getCollectionType(aCollectionUri)); }
173 
getDocumentType(const std::string & aDocUri)174 TypeIdentifier StaticContext::getDocumentType(const std::string &aDocUri)
175   { return TypeIdentifier(theStaticContext->getDocumentType(aDocUri)); }
176 
getContextItemStaticType()177 TypeIdentifier StaticContext::getContextItemStaticType()
178   { return TypeIdentifier(theStaticContext->getContextItemStaticType()); }
179 
getNamespaceBindings()180 std::vector< std::pair< std::string, std::string > > StaticContext::getNamespaceBindings () {
181   std::vector< std::pair< zorba::String, zorba::String > > items;
182   std::vector< std::pair< std::string, std::string > > result;
183   theStaticContext->getNamespaceBindings(items);
184   std::vector< std::pair< zorba::String, zorba::String > >::iterator iter;
185   for(iter = items.begin(); iter != items.end(); iter++) {
186     std::pair< std::string, std::string > pair;
187     pair.first = (*iter).first.c_str();
188     pair.second = (*iter).second.c_str();
189     result.push_back(pair);
190   }
191   return result;
192 }
193 
194 
195 
setContextItemStaticType(const TypeIdentifier & aType)196 void StaticContext::setContextItemStaticType(const TypeIdentifier &aType)
197   { theStaticContext->setContextItemStaticType(aType.theTypeIdentifier); }
198 
resetTraceStream()199 void StaticContext::resetTraceStream ()
200   { theStaticContext->resetTraceStream(); }
201 
setBaseURI(const std::string & aBaseURI)202 bool StaticContext::setBaseURI (const std::string &aBaseURI)
203   { return theStaticContext->setBaseURI(aBaseURI); }
204 
setBoundarySpacePolicy(ZorbaConstants::BoundarySpaceMode aMode)205 bool StaticContext::setBoundarySpacePolicy (ZorbaConstants::BoundarySpaceMode aMode)
206   {
207     zorba::boundary_space_mode_t lMode = zorba::strip_space;
208     if (aMode == ZorbaConstants::PRESERVE_SPACE) {
209       lMode = zorba::preserve_space;
210     }
211     return theStaticContext->setBoundarySpacePolicy(lMode);
212   }
213 
setConstructionMode(ZorbaConstants::ConstructionMode aMode)214 bool StaticContext::setConstructionMode (ZorbaConstants::ConstructionMode aMode)
215   {
216     zorba::construction_mode_t lMode = zorba::preserve_cons;
217     if (aMode == ZorbaConstants::STRIP_CONSTRUCTION) {
218       lMode = zorba::strip_cons;
219     }
220     return theStaticContext->setConstructionMode(lMode);
221   }
222 
setCopyNamespacesMode(ZorbaConstants::PreserveMode aPreserve,ZorbaConstants::InheritMode aInherit)223 bool StaticContext::setCopyNamespacesMode (ZorbaConstants::PreserveMode aPreserve, ZorbaConstants::InheritMode aInherit)
224   {
225     zorba::preserve_mode_t lPreserve = zorba::no_preserve_ns;
226     zorba::inherit_mode_t lInherit = zorba::no_inherit_ns;
227     if (aPreserve == ZorbaConstants::PRESERVE) {
228       lPreserve = zorba::preserve_ns;
229     }
230     if (aInherit == ZorbaConstants::INHERIT) {
231       lInherit = zorba::inherit_ns;
232     }
233     return theStaticContext->setCopyNamespacesMode(lPreserve, lInherit);
234   }
235 
setDefaultCollation(const std::string & aURI)236 void StaticContext::setDefaultCollation (const std::string &aURI)
237   { theStaticContext->setDefaultCollation(aURI); }
238 
setDefaultElementAndTypeNamespace(const std::string & aURI)239 bool StaticContext::setDefaultElementAndTypeNamespace (const std::string &aURI)
240   { return theStaticContext->setDefaultElementAndTypeNamespace(aURI); }
241 
setDefaultFunctionNamespace(const std::string & aURI)242 bool StaticContext::setDefaultFunctionNamespace (const std::string &aURI)
243   { return theStaticContext->setDefaultFunctionNamespace(aURI); }
244 
setDefaultOrderForEmptySequences(ZorbaConstants::OrderEmptyMode aMode)245 bool StaticContext::setDefaultOrderForEmptySequences (ZorbaConstants::OrderEmptyMode aMode)
246   {
247     zorba::order_empty_mode_t lMode = zorba::empty_greatest;
248     if (aMode == ZorbaConstants::EMPTY_LEAST) {
249       lMode = zorba::empty_least;
250     }
251     return theStaticContext->setDefaultOrderForEmptySequences(lMode);
252   }
253 
setOrderingMode(ZorbaConstants::OrderingMode aMode)254 bool StaticContext::setOrderingMode (ZorbaConstants::OrderingMode aMode)
255   {
256     zorba::ordering_mode_t lMode = zorba::ordered;
257     if (aMode == ZorbaConstants::UNORDERED) {
258       lMode = zorba::unordered;
259     }
260     return theStaticContext->setOrderingMode(lMode);
261   }
262 
setRevalidationMode(ZorbaConstants::RevalidationMode aMode)263 void StaticContext::setRevalidationMode (ZorbaConstants::RevalidationMode aMode)
264   {
265     zorba::validation_mode_t lMode = zorba::validate_skip;
266     if (aMode == ZorbaConstants::VALIDATE_LAX) {
267       lMode = zorba::validate_lax;
268     } else if (aMode == ZorbaConstants::VALIDATE_STRICT) {
269       lMode = zorba::validate_strict;
270     }
271     return theStaticContext->setRevalidationMode(lMode);
272   }
273 
setURIPath(std::vector<std::string> & aURIPath)274 void StaticContext::setURIPath(std::vector< std::string > &aURIPath )
275   {
276     std::vector< zorba::String > lURIPath;
277     lURIPath.reserve(aURIPath.size());
278     std::vector< std::string >::iterator iter;
279     for(iter = aURIPath.begin(); iter != aURIPath.end(); iter++) {
280       lURIPath.push_back((*iter));
281     }
282     theStaticContext->setURIPath(lURIPath);
283   }
284 
setLIBPath(std::vector<std::string> & aLIBPath)285 void StaticContext::setLIBPath(std::vector< std::string > &aLIBPath )
286   {
287     std::vector< zorba::String > lLIBPath;
288     lLIBPath.reserve(aLIBPath.size());
289     std::vector< std::string >::iterator iter;
290     for(iter = aLIBPath.begin(); iter != aLIBPath.end(); iter++) {
291       lLIBPath.push_back((*iter));
292     }
293     theStaticContext->setLibPath(lLIBPath);
294   }
295 
setModulePath(std::vector<std::string> & aModulePath)296 void StaticContext::setModulePath(std::vector< std::string > &aModulePath )
297   {
298     std::vector< zorba::String > lModulePath;
299     lModulePath.reserve(aModulePath.size());
300     std::vector< std::string >::iterator iter;
301     for(iter = aModulePath.begin(); iter != aModulePath.end(); iter++) {
302       lModulePath.push_back((*iter));
303     }
304     theStaticContext->setModulePaths(lModulePath);
305   }
306 
setXPath1_0CompatibMode(ZorbaConstants::XPath1_0CompatibleMode aMode)307 bool StaticContext::setXPath1_0CompatibMode (ZorbaConstants::XPath1_0CompatibleMode aMode)
308   {
309     zorba::xpath1_0compatib_mode_t lMode = zorba::xpath2_0;
310     if (aMode == ZorbaConstants::XPATH1_0) {
311       lMode = zorba::xpath1_0;
312     }
313     return theStaticContext->setXPath1_0CompatibMode(lMode);
314   }
315 
destroy()316 void StaticContext::destroy()
317   { theStaticContext = 0; }
318 
319  // class StaticContext
320 
321 
322 
323 
324 %}  // end Implementation
325 
326 
327 // Interface
328 
329 %rename(XPath1_0CompatibModeEnum) zorba::xpath1_0compatib_mode_t;
330 %rename(XPATH2_0) xpath2_0;
331 %rename(XPATH1_0) xpath1_0;
332 
333 %rename(OrderingModeEnum) zorba::ordering_mode_t;
334 %rename(ORDERED) ordered;
335 %rename(UNORDERED) unordered;
336 
337 %rename(OrderEmptyModeEnum) zorba::order_empty_mode_t;
338 %rename(EMPTY_GREATEST) empty_greatest;
339 %rename(EMPTY_LEAST) empty_least;
340 
341 %rename(InheritModeEnum) zorba::inherit_mode_t;
342 %rename(INHERIT_NS) inherit_ns;
343 %rename(NO_INHERIT_NS) no_inherit_ns;
344 
345 %rename(PreserveModeEnum) zorba::preserve_mode_t;
346 %rename(PRESERVE_NS) preserve_ns;
347 %rename(NO_PRESERVE_NS) no_preserve_ns;
348 
349 %rename(BoundarySpaceModeEnum) zorba::boundary_space_mode_t;
350 %rename(PRESERVE_SPACE) preserve_space;
351 %rename(STRIP_SPACE) strip_space;
352 
353 %rename(ConstructionModeEnum) zorba::construction_mode_t;
354 %rename(PRESERVE_CONS) preserve_cons;
355 %rename(STRIP_CONS) strip_cons;
356 
357 %rename(XQueryVersionEnum) zorba::xquery_version_t;
358 %rename(XQUERY_VERSION_1_0) xquery_version_1_0;
359 %rename(XQUERY_VERSION_3_0) xquery_version_3_0;
360 
361 %rename(ValidationModeEnum) zorba::validation_mode_t;
362 %rename(VALIDATE_SKIP) validate_skip;
363 %rename(VALIDATE_LAX) validate_lax;
364 %rename(VALIDATE_STRICT) validate_strict;
365 
366 %include "StaticContext.h"
367