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-2008
5  * Oracle. 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  * $Id: MessageListener.hpp 475 2008-01-08 18:47:44Z jpcs $
20  */
21 
22 #ifndef _STACKFRAME_HPP
23 #define _STACKFRAME_HPP
24 
25 #include <string>
26 
27 #include <xqilla/framework/XQillaExport.hpp>
28 #include <xqilla/items/Item.hpp>
29 
30 #include <xercesc/util/XercesDefs.hpp>
31 
32 class ASTNode;
33 class TupleNode;
34 class LocationInfo;
35 class DynamicContext;
36 class EventHandler;
37 class Sequence;
38 class VariableStore;
39 
40 XERCES_CPP_NAMESPACE_BEGIN
41 class DOMXPathNSResolver;
42 XERCES_CPP_NAMESPACE_END
43 
47 class XQILLA_API StackFrame
48 {
49 public:
50  virtual ~StackFrame() {}
51 
52  const LocationInfo *getLocationInfo() const { return location_; }
53  const StackFrame *getPreviousFrame() const { return prev_; }
54 
55  virtual Sequence query(const XMLCh *query) const;
56  virtual void query(const XMLCh *query, EventHandler *events) const;
57 
58  virtual const ASTNode *getASTNode() const = 0;
59  virtual const TupleNode *getTupleNode() const = 0;
60  virtual std::string getQueryPlan() const = 0;
61 
62 protected:
63  StackFrame(const LocationInfo *location, DynamicContext *context);
64 
66 
70  size_t contextSize_;
72  const XERCES_CPP_NAMESPACE_QUALIFIER DOMXPathNSResolver *nsResolver_;
73  const XMLCh *defaultElementNS_;
74 
75  const StackFrame *prev_;
76 
77 private:
78  StackFrame(const StackFrame &);
79  StackFrame &operator=(const StackFrame&);
80 };
81 
82 #endif