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, 2015 Oracle and/or its affiliates. All rights reserved.
5  *
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 
20 #ifndef _STATICCONTEXT_HPP
21 #define _STATICCONTEXT_HPP
22 
23 #include <xqilla/framework/XQillaExport.hpp>
25 #include <time.h>
28 #include <xercesc/util/XMemory.hpp>
29 
30 class DynamicContext;
32 class FuncFactory;
33 class DatatypeFactory;
34 class Collation;
35 class VariableTypeStore;
36 class ItemFactory;
37 class StaticType;
38 class ModuleResolver;
40 class MessageListener;
41 class ExternalFunction;
43 class XQUserFunction;
44 class XQillaNSResolver;
45 
46 // Copied from ASTNode.hpp
47 typedef std::vector<ASTNode*,XQillaAllocator<ASTNode*> > VectorOfASTNodes;
48 typedef std::vector<XQUserFunction*, XQillaAllocator<XQUserFunction*> > UserFunctions;
49 
50 XERCES_CPP_NAMESPACE_BEGIN
51 class DOMDocument;
52 class DOMXPathNSResolver;
53 class XMLEntityResolver;
54 XERCES_CPP_NAMESPACE_END
55 
57 class XQILLA_API StaticContext : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory
58 {
59 public:
60  typedef enum {
62  ORDERING_UNORDERED
63  } NodeSetOrdering;
64 
65  typedef enum {
67  CONSTRUCTION_MODE_STRIP
68  } ConstructionMode;
69 
70  typedef enum {
72  FLWOR_ORDER_EMPTY_LEAST
73  } FLWOROrderingMode;
74 
75  typedef enum {
80  LOWERCASE
81  } FTCaseOption;
82 
83  virtual ~StaticContext() {};
84 
85  virtual DynamicContext *createModuleContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
86  XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager) const = 0;
87  virtual DynamicContext *createDynamicContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
88  XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager) const = 0;
89 
90  virtual DynamicContext *createDebugQueryContext(const Item::Ptr &contextItem,
91  size_t contextPosition,
92  size_t contextSize,
93  const VariableStore *variables,
94  const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver *nsResolver,
95  const XMLCh *defaultElementNS,
96  XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
97  XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager) const = 0;
98 
100  virtual XQillaConfiguration *getConfiguration() const = 0;
101 
104  virtual XQilla::Language getLanguage() const = 0;
105 
107  virtual ItemFactory *getItemFactory() const = 0;
109  virtual void setItemFactory(ItemFactory *factory) = 0;
110 
112  virtual const StaticType &getContextItemType() const = 0;
114  virtual void setContextItemType(const StaticType &st) = 0;
115 
117  virtual bool getXPath1CompatibilityMode() const = 0;
119  virtual void setXPath1CompatibilityMode(bool newMode) = 0;
120 
122  virtual const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* getNSResolver() const = 0;
125  virtual const XMLCh* getUriBoundToPrefix(const XMLCh* prefix, const LocationInfo *location = 0) const = 0;
128  virtual const XMLCh* getPrefixBoundToUri(const XMLCh* uri) const = 0;
130  virtual void setNSResolver(const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* resolver) = 0;
132  virtual void setNamespaceBinding(const XMLCh* prefix, const XMLCh* uri) = 0;
133 
135  virtual const XMLCh* getDefaultElementAndTypeNS() const = 0;
137  virtual void setDefaultElementAndTypeNS(const XMLCh* newNS) = 0;
138 
140  virtual const XMLCh* getDefaultFuncNS() const = 0;
142  virtual void setDefaultFuncNS(const XMLCh* newNS) = 0;
143 
145  virtual DocumentCache* getDocumentCache() const = 0;
147  virtual void setDocumentCache(DocumentCache* docCache) = 0;
148 
157  virtual bool isTypeOrDerivedFromType(const XMLCh* const uri, const XMLCh* const typeName, const XMLCh* const uriToCheck, const XMLCh* const typeNameToCheck) const = 0;
163  virtual void setXMLEntityResolver(XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* const handler) = 0;
165  virtual XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* getXMLEntityResolver() const = 0;
166 
168  virtual void setModuleResolver(ModuleResolver *resolver) = 0;
170  virtual ModuleResolver *getModuleResolver() const = 0;
171  /* Retrieve a list of locations for the given module URI */
172  virtual VectorOfStrings* resolveModuleURI(const XMLCh* uri) const = 0;
173 
175  virtual void addSchemaLocation(const XMLCh* uri, VectorOfStrings* locations, const LocationInfo *location = 0) = 0;
176 
179 
181  virtual void addTemplate(XQUserFunction *tp) = 0;
183  virtual const XQUserFunction *lookUpNamedTemplate(const XMLCh *uri, const XMLCh *name) const = 0;
185  virtual const UserFunctions &getTemplateRules() const = 0;
186 
188  virtual void addCustomFunction(FuncFactory *func) = 0;
190  virtual void removeCustomFunction(FuncFactory *func) = 0;
192  virtual ASTNode *lookUpFunction(const XMLCh *uri, const XMLCh *name, const VectorOfASTNodes &v, const LocationInfo *location = 0) const = 0;
193 
199  virtual void addExternalFunction(const ExternalFunction *func) = 0;
201  virtual const ExternalFunction *lookUpExternalFunction(const XMLCh *uri, const XMLCh *name, size_t numArgs) const = 0;
202 
204  virtual Collation* getCollation(const XMLCh* const URI, const LocationInfo *location = 0) const = 0;
206  virtual void addCollation(Collation* collation) = 0;
207 
209  virtual Collation* getDefaultCollation(const LocationInfo *location = 0) const = 0;
211  virtual void setDefaultCollation(const XMLCh* const URI) = 0;
212 
214  virtual const XMLCh* getBaseURI() const = 0;
216  virtual void setBaseURI(const XMLCh* newURI) = 0;
217 
219  virtual NodeSetOrdering getNodeSetOrdering() const = 0;
221  virtual void setNodeSetOrdering(NodeSetOrdering newOrder) = 0;
222 
226  virtual void setConstructionMode(ConstructionMode newMode) = 0;
227 
229  virtual void setPreserveBoundarySpace(bool value) = 0;
231  virtual bool getPreserveBoundarySpace() const = 0;
232 
237 
239  virtual void setInheritNamespaces(bool value) = 0;
241  virtual bool getInheritNamespaces() const = 0;
242 
244  virtual void setPreserveNamespaces(bool value) = 0;
246  virtual bool getPreserveNamespaces() const = 0;
247 
252 
254  virtual void setMessageListener(MessageListener *listener) = 0;
256  virtual MessageListener *getMessageListener() const = 0;
257 
259  virtual void setModule(XQQuery *module) = 0;
261  virtual XQQuery *getModule() const = 0;
262 
264  // XQilla context specific accessors //
266 
280  virtual bool getProjection() const = 0;
297  virtual void setProjection(bool enabled) = 0;
298 
299  virtual bool getDoLintWarnings() const = 0;
300  virtual void setDoLintWarnings(bool enabled) = 0;
301 
303  virtual const XMLCh *allocateTempVarName(const XMLCh *prefix = 0) = 0;
304 
306  virtual XPath2MemoryManager* getMemoryManager() const = 0;
308  virtual void setMemoryManager(XPath2MemoryManager* memMgr) = 0;
309 
311  virtual void setFTCase(FTCaseOption option) = 0;
312  virtual FTCaseOption getFTCase() = 0;
313 };
314 
315 #endif
StaticContext::setDocumentCache
virtual void setDocumentCache(DocumentCache *docCache)=0
sets the repository for the grammars
XQQuery
Encapsulates a query expression.
Definition: XQQuery.hpp:76
StaticContext::getDefaultCollation
virtual Collation * getDefaultCollation(const LocationInfo *location=0) const =0
Get the default collation.
StaticContext::addCustomFunction
virtual void addCustomFunction(FuncFactory *func)=0
adds a custom function to the function table
StaticContext::getInheritNamespaces
virtual bool getInheritNamespaces() const =0
Get the policy for namespace inheritance.
ModuleResolver
Definition: ModuleResolver.hpp:27
StaticContext::FTCaseOption
FTCaseOption
Definition: StaticContext.hpp:75
StaticContext::getUriBoundToPrefix
virtual const XMLCh * getUriBoundToPrefix(const XMLCh *prefix, const LocationInfo *location=0) const =0
returns the URI that is bound in prefix in the current scope or zero length string otherwise
StaticContext::getVariableTypeStore
virtual VariableTypeStore * getVariableTypeStore()=0
get the variable type store
StaticContext::resolveModuleURI
virtual VectorOfStrings * resolveModuleURI(const XMLCh *uri) const =0
StaticContext::getConfiguration
virtual XQillaConfiguration * getConfiguration() const =0
Returns the configuration object for this context.
StaticContext::getPrefixBoundToUri
virtual const XMLCh * getPrefixBoundToUri(const XMLCh *uri) const =0
returns the prefix that is bound in uri in the current scope or zero length string otherwise
StaticContext::removeCustomFunction
virtual void removeCustomFunction(FuncFactory *func)=0
removes a custom function to the function table
RefCountPointer< const Item >
StaticContext::lookUpFunction
virtual ASTNode * lookUpFunction(const XMLCh *uri, const XMLCh *name, const VectorOfASTNodes &v, const LocationInfo *location=0) const =0
returns a function object with the given uri, localname and number of arguments triple
DynamicContext
The execution time dynamic context interface.
Definition: DynamicContext.hpp:39
StaticContext::lookUpNamedTemplate
virtual const XQUserFunction * lookUpNamedTemplate(const XMLCh *uri, const XMLCh *name) const =0
look up a template definition by name
StaticContext::NONE
@ NONE
Definition: StaticContext.hpp:76
StaticContext::setNodeSetOrdering
virtual void setNodeSetOrdering(NodeSetOrdering newOrder)=0
Set the ordering method for node sets.
StaticContext::UPPERCASE
@ UPPERCASE
Definition: StaticContext.hpp:79
StaticContext::setItemFactory
virtual void setItemFactory(ItemFactory *factory)=0
Sets the ItemFactory for this context.
DocumentCache.hpp
StaticContext::getTemplateRules
virtual const UserFunctions & getTemplateRules() const =0
Return a vector of all the templates with patterns.
StaticContext::setRevalidationMode
virtual void setRevalidationMode(DocumentCache::ValidationMode mode)=0
Set the revalidation mode.
StaticContext::CASE_SENSITIVE
@ CASE_SENSITIVE
Definition: StaticContext.hpp:78
StaticContext::createModuleContext
virtual DynamicContext * createModuleContext(xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager) const =0
StaticContext
The parse time static context interface.
Definition: StaticContext.hpp:58
StaticContext::setModuleResolver
virtual void setModuleResolver(ModuleResolver *resolver)=0
Register a callback object for resolving module URIs.
StaticContext::getExternalFunctionResolver
virtual ExternalFunctionResolver * getExternalFunctionResolver() const =0
Returns the external function resolver currently set.
StaticContext::getNSResolver
virtual const xercesc::DOMXPathNSResolver * getNSResolver() const =0
Get the NS resolver.
StaticContext::setDefaultCollation
virtual void setDefaultCollation(const XMLCh *const URI)=0
Specify which collation is the default one.
StaticContext::FLWOROrderingMode
FLWOROrderingMode
Definition: StaticContext.hpp:70
Collation
Definition: Collation.hpp:30
XQilla.hpp
StaticContext::getCollation
virtual Collation * getCollation(const XMLCh *const URI, const LocationInfo *location=0) const =0
Get the implementation for the specified collation.
StaticContext::CONSTRUCTION_MODE_PRESERVE
@ CONSTRUCTION_MODE_PRESERVE
Definition: StaticContext.hpp:66
StaticContext::setPreserveBoundarySpace
virtual void setPreserveBoundarySpace(bool value)=0
Set the policy for boundary space.
StaticContext::addTemplate
virtual void addTemplate(XQUserFunction *tp)=0
adds a template definition to the template tables
UserFunctions
std::vector< XQUserFunction *, XQillaAllocator< XQUserFunction * > > UserFunctions
Definition: StaticContext.hpp:48
PlatformUtils.hpp
StaticContext::setDefaultElementAndTypeNS
virtual void setDefaultElementAndTypeNS(const XMLCh *newNS)=0
set the value of the default namespace for elements and types
StaticContext::getDefaultElementAndTypeNS
virtual const XMLCh * getDefaultElementAndTypeNS() const =0
get the value of the default namespace for elements and types
VariableTypeStore
This is the wrapper class for the variable store, which implements the lookup and scoping of simple v...
Definition: VariableTypeStore.hpp:35
StaticContext::getFTCase
virtual FTCaseOption getFTCase()=0
StaticContext::getModule
virtual XQQuery * getModule() const =0
Get the module.
StaticContext::allocateTempVarName
virtual const XMLCh * allocateTempVarName(const XMLCh *prefix=0)=0
Return a unique name that can be used for a temporary variable.
StaticContext::setProjection
virtual void setProjection(bool enabled)=0
Sets whether document projection is enabled.
StaticContext::NodeSetOrdering
NodeSetOrdering
Definition: StaticContext.hpp:60
DocumentCache
Expression Context is a storage for contexts.
Definition: DocumentCache.hpp:53
StaticContext::getPreserveNamespaces
virtual bool getPreserveNamespaces() const =0
Get the policy for namespace copy.
StaticContext::createDebugQueryContext
virtual DynamicContext * createDebugQueryContext(const Item::Ptr &contextItem, size_t contextPosition, size_t contextSize, const VariableStore *variables, const xercesc::DOMXPathNSResolver *nsResolver, const XMLCh *defaultElementNS, xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager) const =0
ExternalFunctionResolver
Definition: ExternalFunctionResolver.hpp:28
StaticContext::setContextItemType
virtual void setContextItemType(const StaticType &st)=0
Set the static type of the context item.
StaticContext::getLanguage
virtual XQilla::Language getLanguage() const =0
Returns the lanuage that this context is for.
VectorOfASTNodes
std::vector< ASTNode *, XQillaAllocator< ASTNode * > > VectorOfASTNodes
Definition: StaticContext.hpp:44
StaticContext::getContextItemType
virtual const StaticType & getContextItemType() const =0
Get the static type of the context item.
XQilla::Language
Language
Enumeration used to select a language to parse.
Definition: XQilla.hpp:65
StaticContext::setXMLEntityResolver
virtual void setXMLEntityResolver(xercesc::XMLEntityResolver *const handler)=0
Sets the XMLEntityResolver that is used by Xerces when it is used to parse documents.
StaticContext::setBaseURI
virtual void setBaseURI(const XMLCh *newURI)=0
Set the base URI.
StaticContext::getXPath1CompatibilityMode
virtual bool getXPath1CompatibilityMode() const =0
Get the current XPath 1.0 compatibility mode.
StaticContext::getConstructionMode
virtual ConstructionMode getConstructionMode() const =0
Return the construction mode.
StaticContext::CASE_INSENSITIVE
@ CASE_INSENSITIVE
Definition: StaticContext.hpp:77
LocationInfo
A class that gives records a location in the query.
Definition: LocationInfo.hpp:30
XPath2MemoryManager
Definition: XPath2MemoryManager.hpp:46
StaticContext::ConstructionMode
ConstructionMode
Definition: StaticContext.hpp:65
StaticContext::getMemoryManager
virtual XPath2MemoryManager * getMemoryManager() const =0
Get the memory manager.
StaticContext::setConstructionMode
virtual void setConstructionMode(ConstructionMode newMode)=0
Set the construction mode.
StaticContext::getModuleResolver
virtual ModuleResolver * getModuleResolver() const =0
Returns the module resolver currently set.
StaticContext::setExternalFunctionResolver
virtual void setExternalFunctionResolver(ExternalFunctionResolver *resolver)=0
Register a callback object for resolving external function implementations.
StaticContext::FLWOR_ORDER_EMPTY_GREATEST
@ FLWOR_ORDER_EMPTY_GREATEST
Definition: StaticContext.hpp:71
StaticContext::createDynamicContext
virtual DynamicContext * createDynamicContext(xercesc::MemoryManager *memMgr=xercesc::XMLPlatformUtils::fgMemoryManager) const =0
StaticContext::setFTCase
virtual void setFTCase(FTCaseOption option)=0
Set default full text query case option.
StaticContext::isTypeOrDerivedFromType
virtual bool isTypeOrDerivedFromType(const XMLCh *const uri, const XMLCh *const typeName, const XMLCh *const uriToCheck, const XMLCh *const typeNameToCheck) const =0
returns true if the type represented by uri:typename is an instance of uriToCheck:typeNameToCheck
StaticContext::getDefaultFLWOROrderingMode
virtual FLWOROrderingMode getDefaultFLWOROrderingMode() const =0
Return the default ordering mode for FLWOR blocks.
StaticContext::getRevalidationMode
virtual DocumentCache::ValidationMode getRevalidationMode() const =0
Get the revalidation mode.
StaticContext::getMessageListener
virtual MessageListener * getMessageListener() const =0
Gets the listener for warning and trace messages.
StaticContext::setNSResolver
virtual void setNSResolver(const xercesc::DOMXPathNSResolver *resolver)=0
Set the NS resolver.
StaticContext::setDoLintWarnings
virtual void setDoLintWarnings(bool enabled)=0
StaticContext::~StaticContext
virtual ~StaticContext()
Definition: StaticContext.hpp:83
StaticContext::getXMLEntityResolver
virtual xercesc::XMLEntityResolver * getXMLEntityResolver() const =0
Returns the entity resolver currently set.
StaticContext::getDoLintWarnings
virtual bool getDoLintWarnings() const =0
StaticType
Class that represents the static type of an expression.
Definition: StaticType.hpp:33
DocumentCache::ValidationMode
ValidationMode
Definition: DocumentCache.hpp:58
StaticContext::addSchemaLocation
virtual void addSchemaLocation(const XMLCh *uri, VectorOfStrings *locations, const LocationInfo *location=0)=0
add the location for the grammar of a specific namespace
XQillaConfiguration
Definition: XQillaConfiguration.hpp:39
StaticContext::getDocumentCache
virtual DocumentCache * getDocumentCache() const =0
retrieve the repository for the grammars
StaticContext::getItemFactory
virtual ItemFactory * getItemFactory() const =0
Returns the ItemFactory for this context, which is used to create XQilla items and other objects.
StaticContext::getBaseURI
virtual const XMLCh * getBaseURI() const =0
Return the base URI.
StaticContext::setModule
virtual void setModule(XQQuery *module)=0
Set the module.
VariableStore
The pure virtual base class for accessing variables at runtime.
Definition: VariableStore.hpp:32
VectorOfStrings
std::vector< const XMLCh *, XQillaAllocator< const XMLCh * > > VectorOfStrings
Definition: DocumentCache.hpp:35
StaticContext::setInheritNamespaces
virtual void setInheritNamespaces(bool value)=0
Set the policy for namespace inheritance.
StaticContext::setDefaultFuncNS
virtual void setDefaultFuncNS(const XMLCh *newNS)=0
Set the default namespace for functions.
ExternalFunction
Definition: ExternalFunction.hpp:33
StaticContext::getPreserveBoundarySpace
virtual bool getPreserveBoundarySpace() const =0
Get the policy for boundary space.
StaticContext::addExternalFunction
virtual void addExternalFunction(const ExternalFunction *func)=0
adds an external function implementation to the function table
StaticContext::ORDERING_ORDERED
@ ORDERING_ORDERED
Definition: StaticContext.hpp:61
StaticContext::setMemoryManager
virtual void setMemoryManager(XPath2MemoryManager *memMgr)=0
Set the memory manager to the one given.
MessageListener
A class used to listen for warnings or trace information.
Definition: MessageListener.hpp:33
StaticContext::setNamespaceBinding
virtual void setNamespaceBinding(const XMLCh *prefix, const XMLCh *uri)=0
Binds a prefix to a namespace URI.
StaticContext::getDefaultFuncNS
virtual const XMLCh * getDefaultFuncNS() const =0
Return the default namespace for functions.
StaticContext::lookUpExternalFunction
virtual const ExternalFunction * lookUpExternalFunction(const XMLCh *uri, const XMLCh *name, size_t numArgs) const =0
returns an external function implementation for the given uri and localname
StaticContext::setXPath1CompatibilityMode
virtual void setXPath1CompatibilityMode(bool newMode)=0
Set the current XPath 1.0 compatibility mode.
ItemFactory
Definition: ItemFactory.hpp:51
StaticContext::getProjection
virtual bool getProjection() const =0
Gets whether document projection is enabled.
StaticContext::setMessageListener
virtual void setMessageListener(MessageListener *listener)=0
Set the listener for warning and trace messages.
StaticContext::addCollation
virtual void addCollation(Collation *collation)=0
Add a collation.
StaticContext::setPreserveNamespaces
virtual void setPreserveNamespaces(bool value)=0
Set the policy for namespace copy.
XMemory.hpp
StaticContext::setDefaultFLWOROrderingMode
virtual void setDefaultFLWOROrderingMode(FLWOROrderingMode newMode)=0
Set the default ordering mode for FLWOR blocks.
StaticContext::getNodeSetOrdering
virtual NodeSetOrdering getNodeSetOrdering() const =0
Return the ordering method for node sets.