Zorba
The XQuery Processor
Documentation
Live Demo
Modules
Download
Tools
Blog
Code
Main Page
Related Pages
Classes
Files
Examples
File List
swig
DynamicContext.h
Go to the documentation of this file.
1
/*
2
* Copyright 2006-2008 The FLWOR Foundation.
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*/
16
#ifndef API_DYNAMIC_CONTEXT_H
17
#define API_DYNAMIC_CONTEXT_H
18
19
/** \brief Instances of the class DynamicContext contain the information that is available at the
20
* time the query is executed.
21
*
22
* The class contains the information that is defined in the %XQuery
23
* specification (see http://www.w3.org/TR/xquery/#eval_context).
24
*
25
* A dynamic context always belongs to a particular query and, hence, can be retrieved by
26
* calling getDynamicContext on a compiled query (see XQuery::getDynamicContext()).
27
*
28
*/
29
class
DynamicContext
30
{
31
private
:
32
zorba::DynamicContext* theContext;
33
public
:
34
35
DynamicContext
():theContext(0) {}
36
DynamicContext
(
const
DynamicContext
& aCtx):theContext(aCtx.theContext) {}
37
DynamicContext
(zorba::DynamicContext* aCtx):theContext(aCtx) {}
38
39
bool
getContextItem
(
Item
& aItem);
40
41
/** \brief Retrieve the dateTime Item used at the time the query is executed
42
* (see setCurrentDateTime()).
43
*
44
* @return Item the dateTime Item used at the time the query is executed.
45
*/
46
Item
getCurrentDateTime
();
47
48
/** \brief Return the value of the default collection that is used when calling the
49
* fn:collection function without a parameter.
50
*
51
* @return Item the default collection that is set in this dynamic context.
52
* @throw ZorbaException if an error occured.
53
*/
54
Item
getDefaultCollection
();
55
56
/** \brief Retrieve the implicit timezone used in comparisons or arithmetic operations
57
* of date, time, or dateTime values.
58
*
59
* @return int the implicit timezone. Note that 0 is returned if an error occured
60
* and an DiagnosticHandler is used.
61
* @throw ZorbaException if an error occured.
62
*/
63
int
getImplicitTimezone
();
64
65
/** \brief Returns the current value of an external
66
* variable. Exactly one of the two return values (aItem or
67
* aIterator) will be non-null; that is, have isNull() == false.
68
*
69
* The named external variable may be located in the main query or in any
70
* modules imported directly or indirectly by the query.
71
*
72
* @param aNamespace the namespace URI of the variable's expanded QName
73
* @param aLocalname the local name of the variable's expanded QName
74
* @param aItem an Item representing the current (single-item) value of
75
* the external variable.
76
* @param aIterator an Iterator representing the current (possibly
77
* multi-item) value of the external variable.
78
* @return true if the variable has been retrieved successfully, false otherwise.
79
* @throw ZorbaException if an error occured.
80
*/
81
bool
getVariable
(
const
std::string& aNamespace,
const
std::string& aLocalname,
Item
& aItem,
Iterator
& aIterator);
82
83
/** \brief Defines the context item.
84
*
85
* @param aItem the Item that is used as value for the context item.
86
* @return true if the context item was set, false otherwise.
87
* @throw ZorbaException if an error occured (e.g. the given Item is not valid).
88
*/
89
bool
setContextItem
(
Item
& aItem);
90
91
/** \brief Defines the value of the current date time that can be accessed by the
92
* fn:current-dateTime() function at the time the query is executed.
93
*
94
* If the current date time has not been set explicitly the value of the date
95
* and time is used at the time the query is created or cloned, respectively.
96
*
97
* @param aDateTimeItem the dateTime Item.
98
* @return true if the variable has been set successfully, false otherwise.
99
* @throw ZorbaException if an error occured (e.g. the given Item is invalid
100
* or not a Item of type dateTime)
101
*/
102
bool
setCurrentDateTime
(
Item
& aDateTimeItem);
103
104
/** \brief Defines the value of the default collection that is used when calling the
105
* fn:collection function without a parameter.
106
*
107
* @param aCollectionUri the URI of the collection used by the fn:collection function.
108
* @return true if the default collection has been set successfully, false otherwise.
109
* @throw ZorbaException if an error occured.
110
*/
111
bool
setDefaultCollection
(
Item
& aCollectionUri);
112
113
/** \brief Defines the variable of the implicit timezone to be used when a date, time,
114
* or dateTime value that does not have a timezone is used in a comparison or
115
* arithmetic operation.
116
*
117
* @param aTimezone the implicit timezone as int that should be used.
118
* @return true if the implicit timezone has been set successfully, false otherwise.
119
* @throw ZorbaException if an error occured.
120
*/
121
bool
setImplicitTimezone
(
int
aTimezone);
122
123
/**
124
* \brief Defines the external variable identified by an expanded QName and
125
* assigns it the sequence that is returned by evaluating aIterator.
126
*
127
* The named external variable may be located in the main query or in any
128
* modules imported directly or indirectly by the query.
129
*
130
* @param aNamespace the namespace URI of the variable's expanded QName
131
* @param aLocalname the local name of the variable's expanded QName
132
* @param aIter the Iterator producing the sequence that is assigned
133
* to the variable.
134
* @return true if the variable has been set successfully, false otherwise.
135
* @throw ZorbaException if an error occured (e.g. the given Iterator is not valid).
136
*/
137
bool
setVariable
(
const
std::string& aNamespace,
const
std::string& aLocalname,
Iterator
& aIter);
138
139
/**
140
* \brief Defines the external variable identified by aQName and assigns it
141
* the value of aItem.
142
*
143
* aQName may be in one of two forms: A lexical QName (eg. "ns:foo"), or a
144
* James Clark-style universal name (eg. "{nsuri}:foo"). If it is a universal
145
* name, then this method will find the named external variable in the main
146
* query or in any modules imported directly or indirectly by the query. If it
147
* is a lexical QName, then it is only possible to resolve the prefix in the
148
* the context of the main query, hence only external variables in the main
149
* query or those in directly-imported modules may be bound.
150
*
151
* @param aQName the QName that identifies the external variable.
152
* @param aItem the Item that is used as value for the variable.
153
* @return true if the variable has been set, false otherwise.
154
* @throw ZorbaException if an error occured (e.g. the given Item is not valid).
155
*/
156
bool
setVariable
(
const
std::string& aQName,
Item
& aItem);
157
158
/**
159
* \brief Defines the external variable identified by aQName and assigns it
160
* the sequence that is returned by evaluating aIterator.
161
*
162
* aQName may be in one of two forms: A lexical QName (eg. "ns:foo"), or a
163
* James Clark-style universal name (eg. "{nsuri}:foo"). If it is a universal
164
* name, then this method will find the named external variable in the main
165
* query or in any modules imported directly or indirectly by the query. If it
166
* is a lexical QName, then it is only possible to resolve the prefix in the
167
* the context of the main query, hence only external variables in the main
168
* query or those in directly-imported modules may be bound.
169
*
170
* @param aQName the QName that identifies the external variable.
171
* @param aIterator the Iterator producing the sequence that is assigned
172
* to the variable.
173
* @return true if the variable has been set successfully, false otherwise.
174
* @throw ZorbaException if an error occured (e.g. the given Iterator is not valid).
175
*/
176
bool
setVariable
(
const
std::string& aQName,
Iterator
& aIterator);
177
178
};
179
180
#endif
Please enable JavaScript to view the
comments powered by Disqus.
blog comments powered by
Disqus