SourceForge.net Logo
StackFrame.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2001, 2008,
3  * DecisionSoft Limited. All rights reserved.
4  * Copyright (c) 2004, 2011,
5  * Oracle and/or its affiliates. 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 
20 #ifndef _STACKFRAME_HPP
21 #define _STACKFRAME_HPP
22 
23 #include <string>
24 
25 #include <xqilla/framework/XQillaExport.hpp>
26 #include <xqilla/items/Item.hpp>
27 
28 #include <xercesc/util/XercesDefs.hpp>
29 
30 class ASTNode;
31 class TupleNode;
32 class LocationInfo;
33 class DynamicContext;
34 class EventHandler;
35 class Sequence;
36 class VariableStore;
37 
38 XERCES_CPP_NAMESPACE_BEGIN
39 class DOMXPathNSResolver;
40 XERCES_CPP_NAMESPACE_END
41 
45 class XQILLA_API StackFrame
46 {
47 public:
48  virtual ~StackFrame() {}
49 
50  const LocationInfo *getLocationInfo() const { return location_; }
51  const StackFrame *getPreviousFrame() const { return prev_; }
52 
53  virtual Sequence query(const XMLCh *query) const;
54  virtual void query(const XMLCh *query, EventHandler *events) const;
55 
56  virtual const ASTNode *getASTNode() const = 0;
57  virtual const TupleNode *getTupleNode() const = 0;
58  virtual std::string getQueryPlan() const = 0;
59 
60 protected:
61  StackFrame(const LocationInfo *location, DynamicContext *context);
62 
64 
68  size_t contextSize_;
70  const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver *nsResolver_;
71  const XMLCh *defaultElementNS_;
72 
73  const StackFrame *prev_;
74 
75 private:
76  StackFrame(const StackFrame &);
77  StackFrame &operator=(const StackFrame&);
78 };
79 
80 #endif