zorba::DynamicContext

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()).

#include <zorba/dynamic_context.h>

Public Functions

virtual booladdExternalFunctionParam( const String & aName, void * aValue )
Add a name-value pair to this context.
virtual booladdExternalFunctionParameter( const String & aName, ExternalFunctionParameter * aParam )
Add a name-value pair to this context.
const virtual boolgetContextItemItem & aItem )
Returns the current value of the context item.
const virtual ItemgetCurrentDateTime()
Retrieve the dateTime Item used at the time the query is executed (see setCurrentDateTime()).
const virtual ItemgetDefaultCollection()
Return the value of the default collection that is used when calling the fn:collection function without a parameter.
const virtual boolgetExternalFunctionParam( const String & aName, void *& aValue )
Get the value of a pair that was registered using the addExternalFunctionParam method.
const virtual ExternalFunctionParameter *getExternalFunctionParameter( const String & aName )
Get the value of a pair that was registered using the addExternalFunctionParam method.
const virtual intgetImplicitTimezone()
Retrieve the implicit timezone used in comparisons or arithmetic operations of date, time, or dateTime values.
const virtual boolgetVariable( const String & aNamespace, const String & aLocalname, Item & aItem, Iterator_t & aIterator )
Returns the current value of an external variable.
const virtual boolisBoundContextItem()
Returns true if a context item has been bound to the Dynamic Context.
const virtual boolisBoundExternalVariable( const String & aNamespace, const String & aLocalname )
Returns true if the variable is bound to a value.
virtual boolsetContextItem( const Item & aItem )
Defines the context item.
virtual boolsetCurrentDateTime( const Item & aDateTimeItem )
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.
virtual boolsetDefaultCollection( const Item & aCollectionUri )
Defines the value of the default collection that is used when calling the fn:collection function without a parameter.
virtual boolsetImplicitTimezone( int aTimezone )
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.
virtual boolsetVariable( const String & aQName, const Item & aItem )
Defines the external variable identified by aQName and assigns it the value of aItem.
virtual boolsetVariable( const String & aQName, const Iterator_t & aIterator )
Defines the external variable identified by aQName and assigns it the sequence that is returned by evaluating aIterator.
virtual boolsetVariable( const String & aNamespace, const String & aLocalname, const Iterator_t & aIterator )
Defines the external variable identified by an expanded QName and assigns it the sequence that is returned by evaluating aIterator.

Protected Functions

inline virtual ~DynamicContext()
Destructor.

Public Functions

addExternalFunctionParam

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

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

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

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.

getContextItem

const virtual bool getContextItem(
    Item & aItem
)

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.

getCurrentDateTime

const virtual Item getCurrentDateTime()

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

const virtual Item getDefaultCollection()

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

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

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

const virtual ExternalFunctionParameter * getExternalFunctionParameter(
    const String & aName
)

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

const virtual int getImplicitTimezone()

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

Returns

int the implicit timezone. Note that 0 is returned if an error occured and an DiagnosticHandler is used.

Parameters

if an error occured.

getVariable

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

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

const virtual bool isBoundContextItem()

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

isBoundExternalVariable

const virtual bool isBoundExternalVariable(
    const String & aNamespace,
    const String & aLocalname
)

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

setContextItem

virtual bool setContextItem(
    const Item & aItem
)

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).

setCurrentDateTime

virtual bool setCurrentDateTime(
    const Item & aDateTimeItem
)

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

virtual bool setDefaultCollection(
    const Item & aCollectionUri
)

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

virtual bool setImplicitTimezone(
    int aTimezone
)

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 implicit timezone as int that should be used.

Returns

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

Parameters

if an error occured.

setVariable

virtual bool setVariable(
    const String & aQName,
    const Item & aItem
)

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

virtual bool setVariable(
    const String & aQName,
    const Iterator_t & aIterator
)

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

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

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

inline virtual  ~DynamicContext()

Destructor.

blog comments powered by Disqus