SourceForge.net Logo
StaticContext.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2001-2008
3  * DecisionSoft Limited. All rights reserved.
4  * Copyright (c) 2004-2008
5  * Oracle. All rights reserved.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  * $Id$
20  */
21 
22 #ifndef _STATICCONTEXT_HPP
23 #define _STATICCONTEXT_HPP
24 
25 #include <xqilla/framework/XQillaExport.hpp>
27 #include <time.h>
30 #include <xercesc/util/XMemory.hpp>
31 
32 class DynamicContext;
34 class FuncFactory;
35 class DatatypeFactory;
36 class Collation;
37 class VariableTypeStore;
38 class ItemFactory;
39 class StaticType;
40 class ModuleResolver;
42 class MessageListener;
43 class ExternalFunction;
45 class XQUserFunction;
46 class XQillaNSResolver;
47 
48 // Copied from ASTNode.hpp
49 typedef std::vector<ASTNode*,XQillaAllocator<ASTNode*> > VectorOfASTNodes;
50 typedef std::vector<XQUserFunction*, XQillaAllocator<XQUserFunction*> > UserFunctions;
51 
52 XERCES_CPP_NAMESPACE_BEGIN
53 class DOMDocument;
54 class DOMXPathNSResolver;
55 class XMLEntityResolver;
56 XERCES_CPP_NAMESPACE_END
57 
59 class XQILLA_API StaticContext : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory
60 {
61 public:
62  typedef enum {
64  ORDERING_UNORDERED
65  } NodeSetOrdering;
66 
67  typedef enum {
69  CONSTRUCTION_MODE_STRIP
70  } ConstructionMode;
71 
72  typedef enum {
74  FLWOR_ORDER_EMPTY_LEAST
75  } FLWOROrderingMode;
76 
77  virtual ~StaticContext() {};
78 
79  virtual DynamicContext *createModuleContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
80  XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager) const = 0;
81  virtual DynamicContext *createDynamicContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
82  XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager) const = 0;
83 
84  virtual DynamicContext *createDebugQueryContext(const Item::Ptr &contextItem,
85  size_t contextPosition,
86  size_t contextSize,
87  const VariableStore *variables,
88  const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver *nsResolver,
89  const XMLCh *defaultElementNS,
90  XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
91  XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager) const = 0;
92 
94  virtual XQillaConfiguration *getConfiguration() const = 0;
95 
98  virtual XQilla::Language getLanguage() const = 0;
99 
101  virtual ItemFactory *getItemFactory() const = 0;
103  virtual void setItemFactory(ItemFactory *factory) = 0;
104 
106  virtual const StaticType &getContextItemType() const = 0;
108  virtual void setContextItemType(const StaticType &st) = 0;
109 
111  virtual bool getXPath1CompatibilityMode() const = 0;
113  virtual void setXPath1CompatibilityMode(bool newMode) = 0;
114 
116  virtual const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* getNSResolver() const = 0;
119  virtual const XMLCh* getUriBoundToPrefix(const XMLCh* prefix, const LocationInfo *location = 0) const = 0;
122  virtual const XMLCh* getPrefixBoundToUri(const XMLCh* uri) const = 0;
124  virtual void setNSResolver(const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* resolver) = 0;
126  virtual void setNamespaceBinding(const XMLCh* prefix, const XMLCh* uri) = 0;
127 
129  virtual const XMLCh* getDefaultElementAndTypeNS() const = 0;
131  virtual void setDefaultElementAndTypeNS(const XMLCh* newNS) = 0;
132 
134  virtual const XMLCh* getDefaultFuncNS() const = 0;
136  virtual void setDefaultFuncNS(const XMLCh* newNS) = 0;
137 
139  virtual DocumentCache* getDocumentCache() const = 0;
141  virtual void setDocumentCache(DocumentCache* docCache) = 0;
142 
151  virtual bool isTypeOrDerivedFromType(const XMLCh* const uri, const XMLCh* const typeName, const XMLCh* const uriToCheck, const XMLCh* const typeNameToCheck) const = 0;
157  virtual void setXMLEntityResolver(XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* const handler) = 0;
159  virtual XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* getXMLEntityResolver() const = 0;
160 
162  virtual void setModuleResolver(ModuleResolver *resolver) = 0;
164  virtual ModuleResolver *getModuleResolver() const = 0;
165  /* Retrieve a list of locations for the given module URI */
166  virtual VectorOfStrings* resolveModuleURI(const XMLCh* uri) const = 0;
167 
169  virtual void addSchemaLocation(const XMLCh* uri, VectorOfStrings* locations, const LocationInfo *location = 0) = 0;
170 
172  virtual VariableTypeStore* getVariableTypeStore() = 0;
173 
175  virtual void addTemplate(XQUserFunction *tp) = 0;
177  virtual const XQUserFunction *lookUpNamedTemplate(const XMLCh *uri, const XMLCh *name) const = 0;
179  virtual const UserFunctions &getTemplateRules() const = 0;
180 
182  virtual void addCustomFunction(FuncFactory *func) = 0;
184  virtual void removeCustomFunction(FuncFactory *func) = 0;
186  virtual ASTNode *lookUpFunction(const XMLCh *uri, const XMLCh *name, const VectorOfASTNodes &v) const = 0;
187 
189  virtual void setExternalFunctionResolver(ExternalFunctionResolver *resolver) = 0;
191  virtual ExternalFunctionResolver *getExternalFunctionResolver() const = 0;
193  virtual void addExternalFunction(const ExternalFunction *func) = 0;
195  virtual const ExternalFunction *lookUpExternalFunction(const XMLCh *uri, const XMLCh *name, size_t numArgs) const = 0;
196 
198  virtual Collation* getCollation(const XMLCh* const URI, const LocationInfo *location = 0) const = 0;
200  virtual void addCollation(Collation* collation) = 0;
201 
203  virtual Collation* getDefaultCollation(const LocationInfo *location = 0) const = 0;
205  virtual void setDefaultCollation(const XMLCh* const URI) = 0;
206 
208  virtual const XMLCh* getBaseURI() const = 0;
210  virtual void setBaseURI(const XMLCh* newURI) = 0;
211 
213  virtual NodeSetOrdering getNodeSetOrdering() const = 0;
215  virtual void setNodeSetOrdering(NodeSetOrdering newOrder) = 0;
216 
218  virtual ConstructionMode getConstructionMode() const = 0;
220  virtual void setConstructionMode(ConstructionMode newMode) = 0;
221 
223  virtual void setPreserveBoundarySpace(bool value) = 0;
225  virtual bool getPreserveBoundarySpace() const = 0;
226 
228  virtual FLWOROrderingMode getDefaultFLWOROrderingMode() const = 0;
230  virtual void setDefaultFLWOROrderingMode(FLWOROrderingMode newMode) = 0;
231 
233  virtual void setInheritNamespaces(bool value) = 0;
235  virtual bool getInheritNamespaces() const = 0;
236 
238  virtual void setPreserveNamespaces(bool value) = 0;
240  virtual bool getPreserveNamespaces() const = 0;
241 
243  virtual void setRevalidationMode(DocumentCache::ValidationMode mode) = 0;
245  virtual DocumentCache::ValidationMode getRevalidationMode() const = 0;
246 
248  virtual void setMessageListener(MessageListener *listener) = 0;
250  virtual MessageListener *getMessageListener() const = 0;
251 
253  // XQilla context specific accessors //
255 
269  virtual bool getProjection() const = 0;
286  virtual void setProjection(bool enabled) = 0;
287 
288  virtual bool getDoLintWarnings() const = 0;
289  virtual void setDoLintWarnings(bool enabled) = 0;
290 
292  virtual const XMLCh *allocateTempVarName(const XMLCh *prefix = 0) = 0;
293 
295  virtual XPath2MemoryManager* getMemoryManager() const = 0;
297  virtual void setMemoryManager(XPath2MemoryManager* memMgr) = 0;
298 };
299 
300 #endif
Definition: XPath2MemoryManager.hpp:47
This is the wrapper class for the variable store, which implements the lookup and scoping of simple v...
Definition: VariableTypeStore.hpp:35
Expression Context is a storage for contexts.
Definition: DocumentCache.hpp:54
Definition: StaticContext.hpp:68
Definition: ExternalFunction.hpp:34
The parse time static context interface.
Definition: StaticContext.hpp:59
std::vector< const XMLCh *, XQillaAllocator< const XMLCh * > > VectorOfStrings
Definition: DocumentCache.hpp:37
std::vector< ASTNode *, XQillaAllocator< ASTNode * > > VectorOfASTNodes
Definition: StaticContext.hpp:46
ValidationMode
Definition: DocumentCache.hpp:60
Definition: ExternalFunctionResolver.hpp:30
Definition: Collation.hpp:31
std::vector< XQUserFunction *, XQillaAllocator< XQUserFunction * > > UserFunctions
Definition: StaticContext.hpp:50
virtual ~StaticContext()
Definition: StaticContext.hpp:77
Definition: ModuleResolver.hpp:29
A class used to listen for warnings or trace information.
Definition: MessageListener.hpp:35
The execution time dynamic context interface.
Definition: DynamicContext.hpp:39
Definition: StaticContext.hpp:63
The pure virtual base class for accessing variables at runtime.
Definition: VariableStore.hpp:33
A class that gives records a location in the query.
Definition: LocationInfo.hpp:31
Definition: XQillaConfiguration.hpp:39
Definition: ItemFactory.hpp:51
Class that represents the static type of an expression.
Definition: StaticType.hpp:35
Definition: StaticContext.hpp:73
Language
Enumeration used to select a language to parse.
Definition: XQilla.hpp:60