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, 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 _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
DynamicContext * context_
Definition: StackFrame.hpp:65
Definition: EventHandler.hpp:29
A class that represents an item in a query call stack.
Definition: StackFrame.hpp:45
const LocationInfo * getLocationInfo() const
Definition: StackFrame.hpp:50
size_t contextPosition_
Definition: StackFrame.hpp:67
virtual ~StackFrame()
Definition: StackFrame.hpp:48
const XMLCh * defaultElementNS_
Definition: StackFrame.hpp:71
const StackFrame * prev_
Definition: StackFrame.hpp:73
const VariableStore * variables_
Definition: StackFrame.hpp:69
const LocationInfo * location_
Definition: StackFrame.hpp:63
const xercesc::DOMXPathNSResolver * nsResolver_
Definition: StackFrame.hpp:70
The execution time dynamic context interface.
Definition: DynamicContext.hpp:38
The pure virtual base class for accessing variables at runtime.
Definition: VariableStore.hpp:31
A class that gives records a location in the query.
Definition: LocationInfo.hpp:29
const StackFrame * getPreviousFrame() const
Definition: StackFrame.hpp:51
An eagerly evaluated result of a query execution.
Definition: Sequence.hpp:39
Item::Ptr contextItem_
Definition: StackFrame.hpp:66
size_t contextSize_
Definition: StackFrame.hpp:68