Qt 4.8
Public Types | Public Functions | List of all members
QPatternist::DynamicContext Class Referenceabstract

Carries information and facilities used at runtime, and hence provides a state for that stage in a thread-safe manner. More...

#include <qdynamiccontext_p.h>

Inheritance diagram for QPatternist::DynamicContext:
QPatternist::ReportContext QSharedData QPatternist::DelegatingDynamicContext QPatternist::StackContextBase< DynamicContext > QPatternist::CurrentItemContext QPatternist::Focus QPatternist::ReceiverDynamicContext QPatternist::TemporaryTreesRedirectingContext QPatternist::GenericDynamicContext

Public Types

typedef QExplicitlySharedDataPointer< DynamicContextPtr
 
typedef QHash< QXmlName, QExplicitlySharedDataPointer< Expression > > TemplateParameterHash
 Carries template parameters at runtime. More...
 
- Public Types inherited from QPatternist::ReportContext
enum  ErrorCode {
  XSDError, XPST0001, XPDY0002, XPST0003,
  XPTY0004, XPST0005, XPTY0006, XPTY0007,
  XPST0008, XQST0009, XPST0010, XQST0012,
  XQST0013, XQST0014, XQST0015, XQST0016,
  XPST0017, XPTY0018, XPTY0019, XPTY0020,
  XPDY0021, XQST0022, XQTY0023, XQTY0024,
  XQDY0025, XQDY0026, XQDY0027, XQTY0028,
  XQDY0029, XQTY0030, XQST0031, XQST0032,
  XQST0033, XQST0034, XQST0035, XQST0036,
  XQST0037, XQST0038, XQST0039, XQST0040,
  XQDY0041, XQST0042, XQST0043, XQDY0044,
  XQST0045, XQST0046, XQST0047, XQST0048,
  XQST0049, XPDY0050, XPST0051, XQDY0052,
  XQST0053, XQST0054, XQST0055, XQST0056,
  XQST0057, XQST0058, XQST0059, XQST0060,
  XQDY0061, XQDY0062, XQST0063, XQDY0064,
  XQST0065, XQST0066, XQST0067, XQST0068,
  XQST0069, XQST0070, XQST0071, XQDY0072,
  XQST0073, XQDY0074, XQST0075, XQST0076,
  XQST0077, XQST0078, XQST0079, XPST0080,
  XPST0081, XQST0082, XPST0083, XQDY0084,
  XQST0085, XQTY0086, XQST0087, XQST0088,
  XQST0089, XQST0090, XQDY0091, XQDY0092,
  XQST0093, FOER0000, FOAR0001, FOAR0002,
  FOCA0001, FOCA0002, FOCA0003, FOCA0005,
  FOCA0006, FOCH0001, FOCH0002, FOCH0003,
  FOCH0004, FODC0001, FODC0002, FODC0003,
  FODC0004, FODC0005, FODT0001, FODT0002,
  FODT0003, FONS0004, FONS0005, FORG0001,
  FORG0002, FORG0003, FORG0004, FORG0005,
  FORG0006, FORG0008, FORG0009, FORX0001,
  FORX0002, FORX0003, FORX0004, FOTY0012,
  SENR0001, SERE0003, SEPM0004, SERE0005,
  SERE0006, SESU0007, SERE0008, SEPM0009,
  SEPM0010, SESU0011, SERE0012, SESU0013,
  SERE0014, SERE0015, SEPM0016, XTSE0010,
  XTSE0020, XTSE0080, XTSE0090, XTSE0110,
  XTSE0120, XTSE0125, XTSE0130, XTSE0150,
  XTSE0165, XTSE0170, XTSE0180, XTSE0190,
  XTSE0200, XTSE0210, XTSE0215, XTSE0220,
  XTSE0260, XTSE0265, XTSE0280, XTSE0340,
  XTSE0350, XTSE0370, XTSE0500, XTSE0530,
  XTSE0550, XTSE0580, XTSE0620, XTSE0630,
  XTSE0650, XTSE0660, XTSE0670, XTSE0680,
  XTSE0690, XTSE0710, XTSE0720, XTSE0740,
  XTSE0760, XTSE0770, XTSE0805, XTSE0808,
  XTSE0809, XTSE0810, XTSE0812, XTSE0840,
  XTSE0870, XTSE0880, XTSE0910, XTSE0940,
  XTTE0950, XTSE0975, XTSE1015, XTSE1017,
  XTSE1040, XTSE1060, XTSE1070, XTSE1080,
  XTSE1090, XTSE1130, XTSE1205, XTSE1210,
  XTSE1220, XTSE1290, XTSE1295, XTSE1300,
  XTSE1430, XTSE1505, XTSE1520, XTSE1530,
  XTSE1560, XTSE1570, XTSE1580, XTSE1590,
  XTSE1600, XTSE1650, XTSE1660, XTTE0505,
  XTTE0510, XTTE0520, XTTE0570, XTTE0590,
  XTTE0600, XTTE0780, XTTE0790, XTTE0990,
  XTTE1000, XTTE1020, XTTE1100, XTTE1120,
  XTTE1510, XTTE1512, XTTE1515, XTTE1540,
  XTTE1545, XTTE1550, XTTE1555, XTDE0030,
  XTDE0040, XTDE0045, XTDE0047, XTDE0050,
  XTDE0060, XTDE0160, XTRE0270, XTDE0290,
  XTDE0410, XTDE0420, XTDE0430, XTDE0440,
  XTDE0485, XTRE0540, XTDE0560, XTDE0610,
  XTDE0640, XTDE0700, XTRE0795, XTDE0820,
  XTDE0830, XTDE0835, XTDE0850, XTDE0855,
  XTDE0860, XTDE0865, XTDE0890, XTDE0905,
  XTDE0920, XTDE0925, XTDE0930, XTDE0980,
  XTDE1030, XTDE1035, XTDE1110, XTDE1140,
  XTDE1145, XTDE1150, XTRE1160, XTDE1170,
  XTDE1190, XTDE1200, XTDE1260, XTDE1270,
  XTDE1280, XTDE1310, XTDE1340, XTDE1350,
  XTDE1360, XTDE1370, XTDE1380, XTDE1390,
  XTMM9000, XTDE1400, XTDE1420, XTDE1425,
  XTDE1428, XTDE1440, XTDE1450, XTDE1460,
  XTDE1480, XTDE1490, XTRE1495, XTRE1500,
  XTRE1620, XTRE1630, XTDE1665
}
 
typedef QHash< const SourceLocationReflection *, QSourceLocationLocationHash
 
typedef QExplicitlySharedDataPointer< ReportContextPtr
 

Public Functions

virtual void addNodeModel (const QAbstractXmlNodeModel::Ptr &nm)=0
 
virtual Item contextItem () const =0
 
virtual xsInteger contextPosition () const =0
 
virtual xsInteger contextSize ()=0
 
DynamicContext::Ptr createFocus ()
 
DynamicContext::Ptr createReceiverContext (QAbstractXmlReceiver *const receiver)
 
DynamicContext::Ptr createStack ()
 
virtual QDateTime currentDateTime () const =0
 
virtual Item currentItem () const =0
 Returns the item that fn:current() returns. More...
 
virtual QExplicitlySharedDataPointer< TemplateModecurrentTemplateMode () const =0
 Returns the current template mode that is in effect. More...
 
virtual QExplicitlySharedDataPointer< ExpressionexpressionVariable (const VariableSlotID slot) const =0
 
virtual ExternalVariableLoader::Ptr externalVariableLoader () const =0
 
virtual Item::Iterator::Ptr focusIterator () const =0
 
virtual ItemCacheCellglobalItemCacheCell (const VariableSlotID slot)=0
 
virtual ItemSequenceCacheCell::VectorglobalItemSequenceCacheCells (const VariableSlotID slot)=0
 
virtual QExplicitlySharedDataPointer< DayTimeDurationimplicitTimezone () const =0
 
virtual ItemCacheCellitemCacheCell (const VariableSlotID slot)=0
 
virtual ItemSequenceCacheCell::VectoritemSequenceCacheCells (const VariableSlotID slot)=0
 
virtual NamePool::Ptr namePool () const =0
 
virtual NodeBuilder::Ptr nodeBuilder (const QUrl &baseURI) const =0
 
virtual QAbstractXmlReceiveroutputReceiver () const =0
 
virtual Item::Iterator::Ptr positionIterator (const VariableSlotID slot) const =0
 
virtual DynamicContext::Ptr previousContext () const =0
 Returns the previous DynamicContext. If this context is the top-level one, null is returned. More...
 
virtual Item rangeVariable (const VariableSlotID slot) const =0
 
virtual ResourceLoader::Ptr resourceLoader () const =0
 
virtual void setExpressionVariable (const VariableSlotID slot, const QExplicitlySharedDataPointer< Expression > &newValue)=0
 
virtual void setFocusIterator (const Item::Iterator::Ptr &it)=0
 
virtual void setPositionIterator (const VariableSlotID slot, const Item::Iterator::Ptr &newValue)=0
 
virtual void setRangeVariable (const VariableSlotID slot, const Item &newValue)=0
 
virtual TemplateParameterHashtemplateParameterStore ()=0
 When a template is called, this member carries the template parameters. More...
 
virtual ~DynamicContext ()
 
- Public Functions inherited from QPatternist::ReportContext
void error (const QString &message, const ReportContext::ErrorCode errorCode, const QSourceLocation &sourceLocation)
 
void error (const QString &message, const ReportContext::ErrorCode errorCode, const SourceLocationReflection *const reflection)
 
void error (const QString &message, const QXmlName qName, const SourceLocationReflection *const r)
 
virtual QSourceLocation locationFor (const SourceLocationReflection *const reflection) const =0
 Returns the source location applying for reflection. More...
 
virtual QAbstractMessageHandlermessageHandler () const =0
 
 ReportContext ()
 Default constructors. More...
 
QUrl resolveURI (const QUrl &relative, const QUrl &baseURI) const
 
virtual const QAbstractUriResolveruriResolver () const =0
 The URI resolver in use. More...
 
void warning (const QString &message, const QSourceLocation &sourceLocation=QSourceLocation())
 
virtual ~ReportContext ()
 
- Public Functions inherited from QSharedData
 QSharedData ()
 Constructs a QSharedData object with a reference count of 0. More...
 
 QSharedData (const QSharedData &)
 Constructs a QSharedData object with reference count 0. More...
 

Additional Inherited Members

- Static Public Functions inherited from QPatternist::ReportContext
static QString codeFromURI (const QString &typeURI, QString &uri)
 
static QString codeToString (const ReportContext::ErrorCode errorCode)
 
- Public Variables inherited from QSharedData
QAtomicInt ref
 

Detailed Description

Carries information and facilities used at runtime, and hence provides a state for that stage in a thread-safe manner.

See also
XQuery 1.0: An XML Query Language, 2.1.2 Dynamic Context
XQuery 1.0: An XML Query Language, 2.2.3.2 Dynamic Evaluation Phase
Author
Frans Englich frans.nosp@m..eng.nosp@m.lich@.nosp@m.noki.nosp@m.a.com

Definition at line 88 of file qdynamiccontext_p.h.

Typedefs

◆ Ptr

Definition at line 98 of file qdynamiccontext_p.h.

◆ TemplateParameterHash

Carries template parameters at runtime.

The key is the name of the parameter, and the value the Expression which supplies the value.

Definition at line 97 of file qdynamiccontext_p.h.

Constructors and Destructors

◆ ~DynamicContext()

virtual QPatternist::DynamicContext::~DynamicContext ( )
inlinevirtual

Definition at line 100 of file qdynamiccontext_p.h.

101  {
102  }

Functions

◆ addNodeModel()

virtual void QPatternist::DynamicContext::addNodeModel ( const QAbstractXmlNodeModel::Ptr nm)
pure virtual

Whenever a tree gets built, this function is called. DynamicContext has the responsibility of keeping a copy of nm, such that it doesn't go out of scope, since no one else will reference nm.

I think this is currently only used for temporary node trees. In other cases they are stored in the ExternalResourceLoader.

The caller guarantees that nm is not null.

Implemented in QPatternist::GenericDynamicContext, QPatternist::TemporaryTreesRedirectingContext, and QPatternist::DelegatingDynamicContext.

Referenced by QPatternist::DelegatingDynamicContext::addNodeModel(), QPatternist::CommentConstructor::evaluateSingleton(), QPatternist::TextNodeConstructor::evaluateSingleton(), QPatternist::ProcessingInstructionConstructor::evaluateSingleton(), QPatternist::AttributeConstructor::evaluateSingleton(), QPatternist::DocumentConstructor::evaluateSingleton(), QPatternist::ElementConstructor::evaluateSingleton(), and ~DynamicContext().

◆ contextItem()

virtual Item QPatternist::DynamicContext::contextItem ( ) const
pure virtual

◆ contextPosition()

virtual xsInteger QPatternist::DynamicContext::contextPosition ( ) const
pure virtual

◆ contextSize()

virtual xsInteger QPatternist::DynamicContext::contextSize ( )
pure virtual

◆ createFocus()

DynamicContext::Ptr DynamicContext::createFocus ( )

◆ createReceiverContext()

DynamicContext::Ptr DynamicContext::createReceiverContext ( QAbstractXmlReceiver *const  receiver)

Definition at line 62 of file qdynamiccontext.cpp.

Referenced by QPatternist::DocumentConstructor::evaluateSingleton(), QPatternist::ElementConstructor::evaluateSingleton(), QPatternist::DocumentConstructor::evaluateToSequenceReceiver(), QPatternist::ElementConstructor::evaluateToSequenceReceiver(), and ~DynamicContext().

63 {
64  Q_ASSERT(receiver);
65  return Ptr(new ReceiverDynamicContext(Ptr(this), receiver));
66 }
#define Q_ASSERT(cond)
Definition: qglobal.h:1823
A DynamicContext that has a specialized QAbstractXmlReceiver.
QExplicitlySharedDataPointer< DynamicContext > Ptr

◆ createStack()

DynamicContext::Ptr DynamicContext::createStack ( )

Definition at line 57 of file qdynamiccontext.cpp.

Referenced by QPatternist::UserFunctionCallsite::bindVariables(), QPatternist::Template::createContext(), and ~DynamicContext().

58 {
59  return Ptr(new StackContext(Ptr(this)));
60 }
StackContextBase< DelegatingDynamicContext > StackContext
A DynamicContext that creates a new scope for variables.
QExplicitlySharedDataPointer< DynamicContext > Ptr

◆ currentDateTime()

virtual QDateTime QPatternist::DynamicContext::currentDateTime ( ) const
pure virtual

◆ currentItem()

virtual Item QPatternist::DynamicContext::currentItem ( ) const
pure virtual

◆ currentTemplateMode()

virtual QExplicitlySharedDataPointer<TemplateMode> QPatternist::DynamicContext::currentTemplateMode ( ) const
pure virtual

Returns the current template mode that is in effect.

If null is returned, it means that the default mode should be used as the current mode.

Implemented in QPatternist::GenericDynamicContext, and QPatternist::DelegatingDynamicContext.

Referenced by QPatternist::DelegatingDynamicContext::currentTemplateMode(), QPatternist::ApplyTemplate::effectiveMode(), and ~DynamicContext().

◆ expressionVariable()

virtual QExplicitlySharedDataPointer<Expression> QPatternist::DynamicContext::expressionVariable ( const VariableSlotID  slot) const
pure virtual

◆ externalVariableLoader()

virtual ExternalVariableLoader::Ptr QPatternist::DynamicContext::externalVariableLoader ( ) const
pure virtual

◆ focusIterator()

virtual Item::Iterator::Ptr QPatternist::DynamicContext::focusIterator ( ) const
pure virtual

◆ globalItemCacheCell()

virtual ItemCacheCell& QPatternist::DynamicContext::globalItemCacheCell ( const VariableSlotID  slot)
pure virtual

Same as itemCacheCell(), but is only used for global varibles. This is needed because sometimes stack frames needs to be created for other kinds of variables(such as in the case of user function calls), while the global variable(s) needs to continue to use the same cache, instead of one for each new stack frame, typically an instance of StackContextBase.

This has two effects:

  • It's an optimization. Instead of that a global variable gets evaluated each time a user function is called, think recursive functions, it's done only once.
  • Query stability, hence affects things like node identity and therefore conformance. Hence affects for instance what nodes a query returns, since node identity affect node deduplication.

Implemented in QPatternist::GenericDynamicContext, and QPatternist::DelegatingDynamicContext.

Referenced by QPatternist::DelegatingDynamicContext::globalItemCacheCell(), and ~DynamicContext().

◆ globalItemSequenceCacheCells()

virtual ItemSequenceCacheCell::Vector& QPatternist::DynamicContext::globalItemSequenceCacheCells ( const VariableSlotID  slot)
pure virtual

◆ implicitTimezone()

virtual QExplicitlySharedDataPointer<DayTimeDuration> QPatternist::DynamicContext::implicitTimezone ( ) const
pure virtual

◆ itemCacheCell()

virtual ItemCacheCell& QPatternist::DynamicContext::itemCacheCell ( const VariableSlotID  slot)
pure virtual

◆ itemSequenceCacheCells()

virtual ItemSequenceCacheCell::Vector& QPatternist::DynamicContext::itemSequenceCacheCells ( const VariableSlotID  slot)
pure virtual

◆ namePool()

virtual NamePool::Ptr QPatternist::DynamicContext::namePool ( ) const
pure virtual

◆ nodeBuilder()

virtual NodeBuilder::Ptr QPatternist::DynamicContext::nodeBuilder ( const QUrl baseURI) const
pure virtual

◆ outputReceiver()

virtual QAbstractXmlReceiver* QPatternist::DynamicContext::outputReceiver ( ) const
pure virtual

◆ positionIterator()

virtual Item::Iterator::Ptr QPatternist::DynamicContext::positionIterator ( const VariableSlotID  slot) const
pure virtual

◆ previousContext()

virtual DynamicContext::Ptr QPatternist::DynamicContext::previousContext ( ) const
pure virtual

Returns the previous DynamicContext. If this context is the top-level one, null is returned.

Implemented in QPatternist::GenericDynamicContext, and QPatternist::DelegatingDynamicContext.

Referenced by ~DynamicContext().

◆ rangeVariable()

virtual Item QPatternist::DynamicContext::rangeVariable ( const VariableSlotID  slot) const
pure virtual

◆ resourceLoader()

virtual ResourceLoader::Ptr QPatternist::DynamicContext::resourceLoader ( ) const
pure virtual

◆ setExpressionVariable()

virtual void QPatternist::DynamicContext::setExpressionVariable ( const VariableSlotID  slot,
const QExplicitlySharedDataPointer< Expression > &  newValue 
)
pure virtual

◆ setFocusIterator()

virtual void QPatternist::DynamicContext::setFocusIterator ( const Item::Iterator::Ptr it)
pure virtual

◆ setPositionIterator()

virtual void QPatternist::DynamicContext::setPositionIterator ( const VariableSlotID  slot,
const Item::Iterator::Ptr newValue 
)
pure virtual

◆ setRangeVariable()

virtual void QPatternist::DynamicContext::setRangeVariable ( const VariableSlotID  slot,
const Item newValue 
)
pure virtual

◆ templateParameterStore()

virtual TemplateParameterHash& QPatternist::DynamicContext::templateParameterStore ( )
pure virtual

When a template is called, this member carries the template parameters.

Hence this is similar to the other variable stack functions such as rangeVariable() and expressionVariable(), the difference being that the order of template parameters as well as its arguments can appear in arbitrary order. Hence the name is used to make the order insignificant.

Implemented in QPatternist::DelegatingDynamicContext, and QPatternist::StackContextBase< DynamicContext >.

Referenced by QPatternist::TemplateParameterReference::evaluateEBV(), QPatternist::TemplateParameterReference::evaluateSequence(), QPatternist::TemplateParameterReference::evaluateSingleton(), QPatternist::DelegatingDynamicContext::templateParameterStore(), and ~DynamicContext().


The documentation for this class was generated from the following files: