00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef _STATICCONTEXT_HPP
00015 #define _STATICCONTEXT_HPP
00016
00017 #include <xqilla/framework/XQillaExport.hpp>
00018 #include <xqilla/simple-api/XQilla.hpp>
00019 #include <time.h>
00020 #include <xqilla/schema/DocumentCache.hpp>
00021 #include <xercesc/util/PlatformUtils.hpp>
00022 #include <xercesc/util/XMemory.hpp>
00023
00024
00025 typedef std::vector<ASTNode*,XQillaAllocator<ASTNode*> > VectorOfASTNodes;
00026
00027 class DynamicContext;
00028 class XPath2MemoryManager;
00029 class FuncFactory;
00030 class DatatypeFactory;
00031 class Collation;
00032 class VariableTypeStore;
00033 class ItemFactory;
00034 class StaticType;
00035 class ModuleResolver;
00036 class MessageListener;
00037 class ExternalFunction;
00038 class XQillaConfiguration;
00039
00040 XERCES_CPP_NAMESPACE_BEGIN
00041 class DOMDocument;
00042 class DOMXPathNSResolver;
00043 class XMLEntityResolver;
00044 XERCES_CPP_NAMESPACE_END
00045
00047 class XQILLA_API StaticContext : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory
00048 {
00049 public:
00050 typedef enum {
00051 ORDERING_ORDERED,
00052 ORDERING_UNORDERED
00053 } NodeSetOrdering;
00054
00055 typedef enum {
00056 CONSTRUCTION_MODE_PRESERVE,
00057 CONSTRUCTION_MODE_STRIP
00058 } ConstructionMode;
00059
00060 typedef enum {
00061 FLWOR_ORDER_EMPTY_GREATEST,
00062 FLWOR_ORDER_EMPTY_LEAST
00063 } FLWOROrderingMode;
00064
00065 virtual ~StaticContext() {};
00066
00067 virtual DynamicContext *createModuleContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
00068 XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager) const = 0;
00069 virtual DynamicContext *createDynamicContext(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
00070 XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager) const = 0;
00071
00073 virtual XQillaConfiguration *getConfiguration() const = 0;
00074
00077 virtual XQilla::Language getLanguage() const = 0;
00078
00080 virtual ItemFactory *getItemFactory() const = 0;
00082 virtual void setItemFactory(ItemFactory *factory) = 0;
00083
00085 virtual const StaticType &getContextItemType() const = 0;
00087 virtual void setContextItemType(const StaticType &st) = 0;
00088
00090 virtual bool getXPath1CompatibilityMode() const = 0;
00092 virtual void setXPath1CompatibilityMode(bool newMode) = 0;
00093
00095 virtual const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* getNSResolver() const = 0;
00098 virtual const XMLCh* getUriBoundToPrefix(const XMLCh* prefix, const LocationInfo *location) const = 0;
00101 virtual const XMLCh* getPrefixBoundToUri(const XMLCh* uri) const = 0;
00103 virtual void setNSResolver(const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver* resolver) = 0;
00105 virtual void setNamespaceBinding(const XMLCh* prefix, const XMLCh* uri) = 0;
00106
00108 virtual const XMLCh* getDefaultElementAndTypeNS() const = 0;
00110 virtual void setDefaultElementAndTypeNS(const XMLCh* newNS) = 0;
00111
00113 virtual const XMLCh* getDefaultFuncNS() const = 0;
00115 virtual void setDefaultFuncNS(const XMLCh* newNS) = 0;
00116
00118 virtual const DocumentCache* getDocumentCache() const = 0;
00120 virtual void setDocumentCache(DocumentCache* docCache) = 0;
00121
00130 virtual bool isTypeOrDerivedFromType(const XMLCh* const uri, const XMLCh* const typeName, const XMLCh* const uriToCheck, const XMLCh* const typeNameToCheck) const = 0;
00136 virtual void setXMLEntityResolver(XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* const handler) = 0;
00138 virtual XERCES_CPP_NAMESPACE_QUALIFIER XMLEntityResolver* getXMLEntityResolver() const = 0;
00139
00141 virtual void setModuleResolver(ModuleResolver *resolver) = 0;
00143 virtual ModuleResolver *getModuleResolver() const = 0;
00144
00145 virtual VectorOfStrings* resolveModuleURI(const XMLCh* uri) const = 0;
00146
00148 virtual void addSchemaLocation(const XMLCh* uri, VectorOfStrings* locations, const LocationInfo *location) = 0;
00149
00151 virtual VariableTypeStore* getVariableTypeStore() = 0;
00152
00154 virtual void addCustomFunction(FuncFactory *func) = 0;
00156 virtual ASTNode *lookUpFunction(const XMLCh *uri, const XMLCh* name, const VectorOfASTNodes &v) const = 0;
00157
00159 virtual void addExternalFunction(const ExternalFunction *func) = 0;
00161 virtual const ExternalFunction *lookUpExternalFunction(const XMLCh *uri, const XMLCh *name, unsigned int numArgs) const = 0;
00162
00164 virtual Collation* getCollation(const XMLCh* const URI, const LocationInfo *location) const = 0;
00166 virtual void addCollation(Collation* collation) = 0;
00167
00169 virtual Collation* getDefaultCollation(const LocationInfo *location) const = 0;
00171 virtual void setDefaultCollation(const XMLCh* const URI) = 0;
00172
00174 virtual const XMLCh* getBaseURI() const = 0;
00176 virtual void setBaseURI(const XMLCh* newURI) = 0;
00177
00179 virtual NodeSetOrdering getNodeSetOrdering() const = 0;
00181 virtual void setNodeSetOrdering(NodeSetOrdering newOrder) = 0;
00182
00184 virtual ConstructionMode getConstructionMode() const = 0;
00186 virtual void setConstructionMode(ConstructionMode newMode) = 0;
00187
00189 virtual void setPreserveBoundarySpace(bool value) = 0;
00191 virtual bool getPreserveBoundarySpace() const = 0;
00192
00194 virtual FLWOROrderingMode getDefaultFLWOROrderingMode() const = 0;
00196 virtual void setDefaultFLWOROrderingMode(FLWOROrderingMode newMode) = 0;
00197
00199 virtual void setInheritNamespaces(bool value) = 0;
00201 virtual bool getInheritNamespaces() const = 0;
00202
00204 virtual void setPreserveNamespaces(bool value) = 0;
00206 virtual bool getPreserveNamespaces() const = 0;
00207
00209 virtual void setRevalidationMode(DocumentCache::ValidationMode mode) = 0;
00211 virtual DocumentCache::ValidationMode getRevalidationMode() const = 0;
00212
00214 virtual void setMessageListener(MessageListener *listener) = 0;
00216 virtual MessageListener *getMessageListener() const = 0;
00217
00219
00221
00223 virtual const XMLCh *allocateTempVarName() = 0;
00224
00226 virtual XPath2MemoryManager* getMemoryManager() const = 0;
00228 virtual void setMemoryManager(XPath2MemoryManager* memMgr) = 0;
00229 };
00230
00231 #endif