00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _XQILLA_07637_HPP
00021 #define _XQILLA_07637_HPP
00022
00023 #include <xqilla/framework/XQillaExport.hpp>
00024
00025 #include <xercesc/framework/MemoryManager.hpp>
00026 #include <xercesc/util/PlatformUtils.hpp>
00027 #include <xercesc/util/XMemory.hpp>
00028
00029 class DynamicContext;
00030 class XPath2MemoryManager;
00031 class XQillaConfiguration;
00032 class Optimizer;
00033 class DelayedFuncFactory;
00034 class XQQuery;
00035
00036 XERCES_CPP_NAMESPACE_BEGIN
00037 class InputSource;
00038 class XMLBuffer;
00039 XERCES_CPP_NAMESPACE_END
00040
00041 namespace CompileDelayedModule {
00042 void compile(const XMLCh *queryFile);
00043 }
00044
00052 class XQILLA_API XQilla : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory
00053 {
00054 public:
00056 enum Flags {
00057 NO_STATIC_RESOLUTION = 0x1,
00058 NO_ADOPT_CONTEXT = 0x2,
00059 DEBUG_QUERY = 0x4,
00060 NO_OPTIMIZATION = 0x8,
00061 NO_DEFAULT_MODULES = 0x10
00062 };
00063
00065 enum Language {
00066 XQUERY = 0x00,
00067 XPATH2 = 0x01,
00068 FULLTEXT = 0x02,
00069 UPDATE = 0x04,
00070 EXTENSIONS = 0x08,
00071 XSLT2 = 0x10,
00072 VERSION3 = 0x20,
00073
00074 XQUERY_FULLTEXT = (XQUERY | FULLTEXT),
00075 XQUERY_UPDATE = (XQUERY | UPDATE),
00076 XQUERY_FULLTEXT_UPDATE = (XQUERY | FULLTEXT | UPDATE),
00077 XPATH2_FULLTEXT = (XPATH2 | FULLTEXT),
00078 XSLT2_FULLTEXT = (XSLT2 | FULLTEXT),
00079
00080 XQUERY3 = (XQUERY | VERSION3),
00081 XQUERY3_FULLTEXT = (XQUERY | VERSION3 | FULLTEXT),
00082 XQUERY3_UPDATE = (XQUERY | VERSION3 | UPDATE),
00083 XQUERY3_FULLTEXT_UPDATE = (XQUERY | VERSION3 | FULLTEXT | UPDATE),
00084 XPATH3 = (XPATH2 | VERSION3),
00085 XPATH3_FULLTEXT = (XPATH2 | VERSION3 | FULLTEXT),
00086 XSLT3 = (XSLT2 | VERSION3),
00087 XSLT3_FULLTEXT = (XSLT2 | VERSION3 | FULLTEXT),
00088 };
00089
00096 XQilla(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr = 0);
00097
00102 ~XQilla();
00103
00105
00106
00123 static XQQuery* parse(const XMLCh* query,
00124 DynamicContext* context = 0,
00125 const XMLCh* queryFile = NULL,
00126 unsigned int flags = 0,
00127 XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
00128 XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager,
00129 XQQuery *result = 0);
00130
00145 static XQQuery* parse(const XERCES_CPP_NAMESPACE_QUALIFIER InputSource& querySrc,
00146 DynamicContext* context = 0,
00147 unsigned int flags = 0,
00148 XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
00149 XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager,
00150 XQQuery *result = 0);
00151
00166 static XQQuery* parseFromURI(const XMLCh* queryFile,
00167 DynamicContext* context = 0,
00168 unsigned int flags = 0,
00169 XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
00170 XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager,
00171 XQQuery *result = 0);
00172
00174
00176
00177
00183 static DynamicContext *createContext(Language language = XQUERY,
00184 XQillaConfiguration *conf = 0,
00185 XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
00186 XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager);
00187
00189
00190 private:
00191 static bool readQuery(const XMLCh* queryFile,
00192 XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr,
00193 XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer& queryText);
00194 static bool readQuery(const XERCES_CPP_NAMESPACE_QUALIFIER InputSource& querySrc,
00195 XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr,
00196 XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer& queryText);
00197 static Optimizer *createOptimizer(DynamicContext *context, unsigned int flags);
00198
00199 static void compileDelayedModule(const XMLCh* queryFile, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
00200 XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager);
00201
00202 friend void CompileDelayedModule::compile(const XMLCh *queryFile);
00203 friend class DelayedFuncFactory;
00204 };
00205
00206 #endif