SourceForge.net Logo
XQilla.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2001, 2008,
3  * DecisionSoft Limited. All rights reserved.
4  * Copyright (c) 2004, 2018 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 _XQILLA_07637_HPP
21 #define _XQILLA_07637_HPP
22 
23 #include <xqilla/framework/XQillaExport.hpp>
24 
27 #include <xercesc/util/XMemory.hpp>
28 
29 class DynamicContext;
32 class Optimizer;
33 class DelayedFuncFactory;
34 class XQQuery;
35 
36 XERCES_CPP_NAMESPACE_BEGIN
37 class InputSource;
38 class XMLBuffer;
39 XERCES_CPP_NAMESPACE_END
40 
41 namespace CompileDelayedModule {
42 void compile(const XMLCh *queryFile);
43 }
44 
52 class XQILLA_API XQilla : public XERCES_CPP_NAMESPACE_QUALIFIER XMemory
53 {
54 public:
56  enum Flags {
57  NO_STATIC_RESOLUTION = 0x1,
58  NO_ADOPT_CONTEXT = 0x2,
59  DEBUG_QUERY = 0x4,
60  NO_OPTIMIZATION = 0x8,
61  NO_DEFAULT_MODULES = 0x10
62  };
63 
65  enum Language {
66  XQUERY = 0x00,
67  XPATH2 = 0x01,
68  FULLTEXT = 0x02,
69  UPDATE = 0x04,
70  EXTENSIONS = 0x08,
71  XSLT2 = 0x10,
72  VERSION3 = 0x20,
73 
74  XQUERY_FULLTEXT = (XQUERY | FULLTEXT),
75  XQUERY_UPDATE = (XQUERY | UPDATE),
76  XQUERY_FULLTEXT_UPDATE = (XQUERY | FULLTEXT | UPDATE),
77  XPATH2_FULLTEXT = (XPATH2 | FULLTEXT),
78  XSLT2_FULLTEXT = (XSLT2 | FULLTEXT),
79 
80  XQUERY3 = (XQUERY | VERSION3),
81  XQUERY3_FULLTEXT = (XQUERY | VERSION3 | FULLTEXT),
82  XQUERY3_UPDATE = (XQUERY | VERSION3 | UPDATE),
83  XQUERY3_FULLTEXT_UPDATE = (XQUERY | VERSION3 | FULLTEXT | UPDATE),
84  XPATH3 = (XPATH2 | VERSION3),
85  XPATH3_FULLTEXT = (XPATH2 | VERSION3 | FULLTEXT),
86  XSLT3 = (XSLT2 | VERSION3),
87  XSLT3_FULLTEXT = (XSLT2 | VERSION3 | FULLTEXT),
88  };
89 
96  XQilla(XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr = 0);
97 
102  ~XQilla();
103 
105  // @{
106 
123  static XQQuery* parse(const XMLCh* query,
124  DynamicContext* context = 0,
125  const XMLCh* queryFile = NULL,
126  unsigned int flags = 0,
127  XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
128  XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager,
129  XQQuery *result = 0);
130 
145  static XQQuery* parse(const XERCES_CPP_NAMESPACE_QUALIFIER InputSource& querySrc,
146  DynamicContext* context = 0,
147  unsigned int flags = 0,
148  XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
149  XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager,
150  XQQuery *result = 0);
151 
166  static XQQuery* parseFromURI(const XMLCh* queryFile,
167  DynamicContext* context = 0,
168  unsigned int flags = 0,
169  XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
170  XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager,
171  XQQuery *result = 0);
172 
174 
176  // @{
177 
183  static DynamicContext *createContext(Language language = XQUERY,
184  XQillaConfiguration *conf = 0,
185  XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
186  XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager);
187 
189 
190 private:
191  static bool readQuery(const XMLCh* queryFile,
192  XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr,
193  XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer& queryText);
194  static bool readQuery(const XERCES_CPP_NAMESPACE_QUALIFIER InputSource& querySrc,
195  XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* memMgr,
196  XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer& queryText);
197  static Optimizer *createOptimizer(DynamicContext *context, unsigned int flags);
198 
199  static void compileDelayedModule(const XMLCh* queryFile, XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager *memMgr =
200  XERCES_CPP_NAMESPACE_QUALIFIER XMLPlatformUtils::fgMemoryManager);
201 
202  friend void CompileDelayedModule::compile(const XMLCh *queryFile);
203  friend class DelayedFuncFactory;
204 };
205 
206 #endif
void compile(const XMLCh *queryFile)
Flags
Flags used by the XQilla methods. These are used by bitwise OR-ing (|) their values together...
Definition: XQilla.hpp:56
Definition: XPath2MemoryManager.hpp:45
Encapsulates a query expression.
Definition: XQQuery.hpp:75
A single input source for an XML entity.
Definition: InputSource.hpp:62
The execution time dynamic context interface.
Definition: DynamicContext.hpp:38
Definition: XQillaConfiguration.hpp:38
Provides factory methods for creating XQQuery and DynamicContext objects.
Definition: XQilla.hpp:52
Language
Enumeration used to select a language to parse.
Definition: XQilla.hpp:65