zorba::DynamicContext

#include <zorba/dynamic_context.h>

Instances of the class DynamicContext contain the information that is available at the time the query is executed. The class contains the information that is defined in the XQuery specification (see http://www.w3.org/TR/xquery/#eval_context).A dynamic context always belongs to a particular query and, hence, can be retrieved by calling getDynamicContext on a compiled query (see XQuery::getDynamicContext()).

Public Functions

bool

addExternalFunctionParam(const String &aName, void *aValue)=0

Add a name-value pair to this context.

bool

addExternalFunctionParameter(const String &aName, ExternalFunctionParameter *aParam) const =0

Add a name-value pair to this context.

time::calendar::type

getCalendar() const =0

Gets the current calendar.

bool

getContextItem(Item &aItem) const =0

Returns the current value of the context item.

bool

getContextPosition(Item &aItem) const =0

Returns the current value of the context item position.

bool

getContextSize(Item &aItem) const =0

Returns the current value of the context item size.

Item

getCurrentDateTime() const =0

Retrieve the dateTime Item used at the time the query is executed (see setCurrentDateTime()).

Item

getDefaultCollection() const =0

Return the value of the default collection that is used when calling the fn:collection function without a parameter.

bool

getExternalFunctionParam(const String &aName, void *&aValue) const =0

Get the value of a pair that was registered using the addExternalFunctionParam method.

ExternalFunctionParameter *

getExternalFunctionParameter(const String &aName) const =0

Get the value of a pair that was registered using the addExternalFunctionParam method.

int

getImplicitTimezone() const =0

Retrieve the implicit timezone used in comparisons or arithmetic operations of date, time, or dateTime values.

void

getLocale(locale::iso639_1::type *aLang, locale::iso3166_1::type *aCountry) const =0

Gets the locale.

bool

getVariable(const String &aNamespace, const String &aLocalname, Item &aItem, Iterator_t &aIterator) const =0

Returns the current value of an external variable.

bool

isBoundContextItem() const =0

Returns true if a context item has been bound to the Dynamic Context.

bool

isBoundExternalVariable(const String &aNamespace, const String &aLocalname) const =0

Returns true if the variable is bound to a value.

void

setCalendar(time::calendar::type aCalendar)=0

Sets the calendar.

bool

setContextItem(const Item &aItem)=0

Defines the context item.

bool

setContextPosition(const Item &aItem)=0

Defines the context item position.

bool

setContextSize(const Item &aItem)=0

Defines the context item size.

bool

setCurrentDateTime(const Item &aDateTimeItem)=0

Defines the value of the current date time that can be accessed by the fn:current-dateTime() function at the time the query is executed.

bool

setDefaultCollection(const Item &aCollectionUri)=0

Defines the value of the default collection that is used when calling the fn:collection function without a parameter.

bool

setImplicitTimezone(int aTimezone)=0

Defines the variable of the implicit timezone to be used when a date, time, or dateTime value that does not have a timezone is used in a comparison or arithmetic operation.

void

setLocale(locale::iso639_1::type aLang, locale::iso3166_1::type aCountry)=0

Sets the locale.

bool

setVariable(const String &aQName, const Item &aItem)=0

Defines the external variable identified by aQName and assigns it the value of aItem.

bool

setVariable(const String &inNamespace, const String &inLocalname, const Item &inValue)=0

Defines the external variable identified by an expanded QName and assigns it the value of aItem.

bool

setVariable(const String &aQName, const Iterator_t &aIterator)=0

Defines the external variable identified by aQName and assigns it the sequence that is returned by evaluating aIterator.

bool

setVariable(const String &aNamespace, const String &aLocalname, const Iterator_t &aIterator)=0

Defines the external variable identified by an expanded QName and assigns it the sequence that is returned by evaluating aIterator.

Protected Functions

~DynamicContext()

Destructor.

Public Functions

addExternalFunctionParam

bool addExternalFunctionParam(const String &aName, void *aValue)=0

Add a name-value pair to this context.

The value can be accessed in the evaluate method of external functions (see ContextualExternalFunction).

Parameters

aName the name of the parameter to add. If an entry with the same name already exists, the existing entry is replaced.
aValue the value that can be accessed in the evaluate method.

Returns

returns true if an entry with the same name did not already exist, false otherwise.

addExternalFunctionParameter

bool addExternalFunctionParameter(const String &aName, ExternalFunctionParameter *aParam) const =0

Add a name-value pair to this context.

The value can be accessed in the evaluate method of external functions (see ContextualExternalFunction).

Parameters

aName the name of the parameter to add. If an entry with the same name already exists, the existing entry is replaced.
aParam the parameter to add

Returns

true if an entry with the same name did not exist already, false otherwise.

getCalendar

time::calendar::type getCalendar() const =0

Gets the current calendar.

Returns

the current calendar.

getContextItem

bool getContextItem(Item &aItem) const =0

Returns the current value of the context item.

Parameters

aItem an Item representing the current value of the context item.

Returns

true if the variable has been retrieved successfully, false otherwise.

Parameters

if an error occured.

getContextPosition

bool getContextPosition(Item &aItem) const =0

Returns the current value of the context item position.

Parameters

aItem an Item representing the current value of the context item position.

Returns

true if the variable has been retrieved successfully, false otherwise.

Parameters

if an error occured.

getContextSize

bool getContextSize(Item &aItem) const =0

Returns the current value of the context item size.

Parameters

aItem an Item representing the current value of the context item size.

Returns

true if the variable has been retrieved successfully, false otherwise.

Parameters

if an error occured.

getCurrentDateTime

Item getCurrentDateTime() const =0

Retrieve the dateTime Item used at the time the query is executed (see setCurrentDateTime()).

Returns

Item the dateTime Item used at the time the query is executed.

getDefaultCollection

Item getDefaultCollection() const =0

Return the value of the default collection that is used when calling the fn:collection function without a parameter.

Returns

Item the default collection that is set in this dynamic context.

Parameters

if an error occured.

getExternalFunctionParam

bool getExternalFunctionParam(const String &aName, void *&aValue) const =0

Get the value of a pair that was registered using the addExternalFunctionParam method.

This can be used in the evaluate method of external functions (see ContextualExternalFunction).

Parameters

aName the name of the parameter to retrieve
aValue the value matching the given name if true is returned.

Returns

true if an entry with the given name was found, false otherwise.

getExternalFunctionParameter

ExternalFunctionParameter * getExternalFunctionParameter(const String &aName) const =0

Get the value of a pair that was registered using the addExternalFunctionParam method.

This can be used in the evaluate method of external functions (see ContextualExternalFunction).

Parameters

aName the name of the parameter to retrieve

Returns

the ExternalFunctionParameter* that was added using addExternalFunctionParameter, or 0 if no entry with the given name was found.

getImplicitTimezone

int getImplicitTimezone() const =0

Retrieve the implicit timezone used in comparisons or arithmetic operations of date, time, or dateTime values.

Returns

the implicit timezone as the number of seconds east of the prime medidian. Note that 0 is returned if an error occured and an DiagnosticHandler is used.

Parameters

if an error occured.

getLocale

void getLocale(locale::iso639_1::type *aLang, locale::iso3166_1::type *aCountry) const =0

Gets the locale.

Parameters

aLang A pointer to a iso639_1::type to receive the language. If null, this is not set.
aCountry A pointer to a iso3166_1::type to receive the country. If null, this is not set.

getVariable

bool getVariable(const String &aNamespace, const String &aLocalname, Item &aItem, Iterator_t &aIterator) const =0

Returns the current value of an external variable.

Exactly one of the two return values (aItem or aIterator) will be non-null; that is, have isNull() == false.The named external variable may be located in the main query or in any modules imported directly or indirectly by the query.

Parameters

aNamespace the namespace URI of the variable's expanded QName
aLocalname the local name of the variable's expanded QName
aItem an Item representing the current (single-item) value of the external variable.
aIterator an Iterator representing the current (possibly multi-item) value of the external variable.

Returns

true if the variable has been retrieved successfully, false otherwise.

Parameters

if an error occured.

isBoundContextItem

bool isBoundContextItem() const =0

Returns true if a context item has been bound to the Dynamic Context.

isBoundExternalVariable

bool isBoundExternalVariable(const String &aNamespace, const String &aLocalname) const =0

Returns true if the variable is bound to a value.

Parameters

aNamespace the namespace of the qname of the variable to check
aLocalname the localname of the qname of the variable to check

setCalendar

void setCalendar(time::calendar::type aCalendar)=0

Sets the calendar.

Parameters

aCalendar The calendar to use.

setContextItem

bool setContextItem(const Item &aItem)=0

Defines the context item.

Parameters

aItem the Item that is used as value for the context item.

Returns

true if the context item was set, false otherwise.

Parameters

if an error occured (e.g. the given Item is not valid).

setContextPosition

bool setContextPosition(const Item &aItem)=0

Defines the context item position.

Parameters

aItem the Item that is used as value for the context item position.

Returns

true if the context item position was set, false otherwise.

Parameters

if an error occured (e.g. the given Item is not valid).

setContextSize

bool setContextSize(const Item &aItem)=0

Defines the context item size.

Parameters

aItem the Item that is used as value for the context item size.

Returns

true if the context item size was set, false otherwise.

Parameters

if an error occured (e.g. the given Item is not valid).

setCurrentDateTime

bool setCurrentDateTime(const Item &aDateTimeItem)=0

Defines the value of the current date time that can be accessed by the fn:current-dateTime() function at the time the query is executed.

If the current date time has not been set explicitly the value of the date and time is used at the time the query is created or cloned, respectively.

Parameters

aDateTimeItem the dateTime Item.

Returns

true if the variable has been set successfully, false otherwise.

Parameters

if an error occured (e.g. the given Item is invalid or not a Item of type dateTime)

setDefaultCollection

bool setDefaultCollection(const Item &aCollectionUri)=0

Defines the value of the default collection that is used when calling the fn:collection function without a parameter.

Parameters

aCollectionUri the URI of the collection used by the fn:collection function.

Returns

true if the default collection has been set successfully, false otherwise.

Parameters

if an error occured.

setImplicitTimezone

bool setImplicitTimezone(int aTimezone)=0

Defines the variable of the implicit timezone to be used when a date, time, or dateTime value that does not have a timezone is used in a comparison or arithmetic operation.

Parameters

aTimezone the number of seconds east of the prime meridian.

Returns

true if the implicit timezone has been set successfully, false otherwise.

Parameters

if an error occured.

setLocale

void setLocale(locale::iso639_1::type aLang, locale::iso3166_1::type aCountry)=0

Sets the locale.

Parameters

aLang The language to set.
aCountry The country to set.

setVariable

bool setVariable(const String &aQName, const Item &aItem)=0

Defines the external variable identified by aQName and assigns it the value of aItem.

aQName may be in one of two forms: A lexical QName (eg. "ns:foo"), or a James Clark-style universal name (eg. "{nsuri}:foo"). If it is a universal name, then this method will find the named external variable in the main query or in any modules imported directly or indirectly by the query. If it is a lexical QName, then it is only possible to resolve the prefix in the the context of the main query, hence only external variables in the main query or those in directly-imported modules may be bound.

Parameters

aQName the QName that identifies the external variable.
aItem the Item that is used as value for the variable.

Returns

true if the variable has been set, false otherwise.

Parameters

if an error occured (e.g. the given Item is not valid).

setVariable

bool setVariable(const String &inNamespace, const String &inLocalname, const Item &inValue)=0

Defines the external variable identified by an expanded QName and assigns it the value of aItem.

The named external variable may be located in the main query or in any modules imported directly or indirectly by the query.

Parameters

aNamespace the namespace URI of the variable's expanded QName
aLocalname the local name of the variable's expanded QName
aItem the Item that is used as value for the variable.

Returns

true if the variable has been set successfully, false otherwise.

Parameters

if an error occured (e.g. the given Item is not valid).

setVariable

bool setVariable(const String &aQName, const Iterator_t &aIterator)=0

Defines the external variable identified by aQName and assigns it the sequence that is returned by evaluating aIterator.

aQName may be in one of two forms: A lexical QName (eg. "ns:foo"), or a James Clark-style universal name (eg. "{nsuri}:foo"). If it is a universal name, then this method will find the named external variable in the main query or in any modules imported directly or indirectly by the query. If it is a lexical QName, then it is only possible to resolve the prefix in the the context of the main query, hence only external variables in the main query or those in directly-imported modules may be bound.

Parameters

aQName the QName that identifies the external variable.
aIterator the Iterator producing the sequence that is assigned to the variable.

Returns

true if the variable has been set successfully, false otherwise.

Parameters

if an error occured (e.g. the given Iterator is not valid).

setVariable

bool setVariable(const String &aNamespace, const String &aLocalname, const Iterator_t &aIterator)=0

Defines the external variable identified by an expanded QName and assigns it the sequence that is returned by evaluating aIterator.

The named external variable may be located in the main query or in any modules imported directly or indirectly by the query.

Parameters

aNamespace the namespace URI of the variable's expanded QName
aLocalname the local name of the variable's expanded QName
aIterator the Iterator producing the sequence that is assigned to the variable.

Returns

true if the variable has been set successfully, false otherwise.

Parameters

if an error occured (e.g. the given Iterator is not valid).

Protected Functions

~DynamicContext

 ~DynamicContext()

Destructor.