Qt 4.8
Public Functions | Properties | List of all members
QPatternist::Focus Class Reference

A DynamicContext that maintains the focus, a sequence of items. More...

#include <qfocus_p.h>

Inheritance diagram for QPatternist::Focus:
QPatternist::DelegatingDynamicContext QPatternist::DynamicContext QPatternist::ReportContext QSharedData

Public Functions

virtual Item contextItem () const
 
virtual xsInteger contextPosition () const
 
virtual xsInteger contextSize ()
 
virtual Item currentItem () const
 
 Focus (const DynamicContext::Ptr &prevContext)
 
virtual Item::Iterator::Ptr focusIterator () const
 
virtual void setFocusIterator (const Item::Iterator::Ptr &it)
 
- Public Functions inherited from QPatternist::DelegatingDynamicContext
virtual void addNodeModel (const QAbstractXmlNodeModel::Ptr &nm)
 
virtual QDateTime currentDateTime () const
 
virtual QExplicitlySharedDataPointer< TemplateModecurrentTemplateMode () const
 Returns the current template mode that is in effect. More...
 
virtual Expression::Ptr expressionVariable (const VariableSlotID slotNumber) const
 
virtual ExternalVariableLoader::Ptr externalVariableLoader () const
 
virtual ItemCacheCellglobalItemCacheCell (const VariableSlotID slot)
 
virtual ItemSequenceCacheCell::VectorglobalItemSequenceCacheCells (const VariableSlotID slot)
 
virtual QExplicitlySharedDataPointer< DayTimeDurationimplicitTimezone () const
 
virtual ItemCacheCellitemCacheCell (const VariableSlotID slot)
 
virtual ItemSequenceCacheCell::VectoritemSequenceCacheCells (const VariableSlotID slot)
 
virtual QSourceLocation locationFor (const SourceLocationReflection *const reflection) const
 Returns the source location applying for reflection. More...
 
virtual QAbstractMessageHandlermessageHandler () const
 
virtual NamePool::Ptr namePool () const
 
virtual NodeBuilder::Ptr nodeBuilder (const QUrl &baseURI) const
 
virtual QAbstractXmlReceiveroutputReceiver () const
 
virtual Item::Iterator::Ptr positionIterator (const VariableSlotID slot) const
 
virtual DynamicContext::Ptr previousContext () const
 Returns the previous DynamicContext. If this context is the top-level one, null is returned. More...
 
virtual Item rangeVariable (const VariableSlotID slotNumber) const
 
virtual ResourceLoader::Ptr resourceLoader () const
 
virtual void setExpressionVariable (const VariableSlotID slotNumber, const Expression::Ptr &newValue)
 
virtual void setPositionIterator (const VariableSlotID slot, const Item::Iterator::Ptr &newValue)
 
virtual void setRangeVariable (const VariableSlotID slotNumber, const Item &newValue)
 
virtual TemplateParameterHashtemplateParameterStore ()
 When a template is called, this member carries the template parameters. More...
 
virtual const QAbstractUriResolveruriResolver () const
 The URI resolver in use. More...
 
- Public Functions inherited from QPatternist::DynamicContext
DynamicContext::Ptr createFocus ()
 
DynamicContext::Ptr createReceiverContext (QAbstractXmlReceiver *const receiver)
 
DynamicContext::Ptr createStack ()
 
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 ~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)
 
 ReportContext ()
 Default constructors. More...
 
QUrl resolveURI (const QUrl &relative, const QUrl &baseURI) const
 
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...
 

Properties

xsInteger m_contextSizeCached
 
Item::Iterator::Ptr m_focusIterator
 

Additional Inherited Members

- Public Types inherited from QPatternist::DynamicContext
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
 
- 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
 
- Protected Functions inherited from QPatternist::DelegatingDynamicContext
 DelegatingDynamicContext (const DynamicContext::Ptr &prevContext)
 
- Protected Variables inherited from QPatternist::DelegatingDynamicContext
const DynamicContext::Ptr m_prevContext
 

Detailed Description

A DynamicContext that maintains the focus, a sequence of items.

Focus implements both the outer and inner focus. The focus is one of the things that characterizes the XPath language. The focus is what's iterated over in a predicate, whose current item can be received via the context item expression, .(the dot), and whose size is retrievable via the function fn:last().

Author
Frans Englich frans.nosp@m..eng.nosp@m.lich@.nosp@m.noki.nosp@m.a.com

Definition at line 75 of file qfocus_p.h.

Constructors and Destructors

◆ Focus()

Focus::Focus ( const DynamicContext::Ptr prevContext)

Definition at line 50 of file qfocus.cpp.

50  : DelegatingDynamicContext(prevContext),
52 {
53  Q_ASSERT(prevContext);
54  Q_ASSERT(prevContext != this);
55 }
DelegatingDynamicContext(const DynamicContext::Ptr &prevContext)
#define Q_ASSERT(cond)
Definition: qglobal.h:1823
xsInteger m_contextSizeCached
Definition: qfocus_p.h:95

Functions

◆ contextItem()

Item Focus::contextItem ( ) const
virtual

Reimplemented from QPatternist::DelegatingDynamicContext.

Definition at line 63 of file qfocus.cpp.

64 {
66  return m_focusIterator->current();
67 }
#define Q_ASSERT(cond)
Definition: qglobal.h:1823
Item::Iterator::Ptr m_focusIterator
Definition: qfocus_p.h:94

◆ contextPosition()

xsInteger Focus::contextPosition ( ) const
virtual

Reimplemented from QPatternist::DelegatingDynamicContext.

Definition at line 57 of file qfocus.cpp.

58 {
60  return m_focusIterator->position();
61 }
#define Q_ASSERT(cond)
Definition: qglobal.h:1823
Item::Iterator::Ptr m_focusIterator
Definition: qfocus_p.h:94

◆ contextSize()

xsInteger Focus::contextSize ( )
virtual

Reimplemented from QPatternist::DelegatingDynamicContext.

Definition at line 69 of file qfocus.cpp.

70 {
72  if(m_contextSizeCached == -1)
73  m_contextSizeCached = m_focusIterator->copy()->count();
74 
76  "If our cache is not the same as the real count, something is wrong.");
77 
78  return m_contextSizeCached;
79 }
#define Q_ASSERT(cond)
Definition: qglobal.h:1823
Item::Iterator::Ptr m_focusIterator
Definition: qfocus_p.h:94
xsInteger m_contextSizeCached
Definition: qfocus_p.h:95
#define Q_ASSERT_X(cond, where, what)
Definition: qglobal.h:1837
#define Q_FUNC_INFO
Definition: qglobal.h:1871

◆ currentItem()

Item Focus::currentItem ( ) const
virtual

If there is no top level expression that sets the current item, the focus should be used. This implementation ensures that.

Reimplemented from QPatternist::DelegatingDynamicContext.

Definition at line 92 of file qfocus.cpp.

93 {
94  /* In the case that there is no top level expression that creates a focus,
95  * fn:current() should return the focus. This logic achieves this.
96  * Effectively we traverse up our "context stack" through recursion, and
97  * start returning when we've found the top most focus. */
98 
99  const Item current(m_prevContext->currentItem());
100 
101  if(current.isNull())
102  return m_focusIterator->current();
103  else
104  return current;
105 }
Item::Iterator::Ptr m_focusIterator
Definition: qfocus_p.h:94
Represents an item in the XPath 2.0 Data Model.
Definition: qitem_p.h:182
virtual Item currentItem() const =0
Returns the item that fn:current() returns.

◆ focusIterator()

Item::Iterator::Ptr Focus::focusIterator ( ) const
virtual

Reimplemented from QPatternist::DelegatingDynamicContext.

Definition at line 87 of file qfocus.cpp.

88 {
89  return m_focusIterator;
90 }
Item::Iterator::Ptr m_focusIterator
Definition: qfocus_p.h:94

◆ setFocusIterator()

void Focus::setFocusIterator ( const Item::Iterator::Ptr it)
virtual

Reimplemented from QPatternist::DelegatingDynamicContext.

Definition at line 81 of file qfocus.cpp.

82 {
83  Q_ASSERT(it);
85 }
#define it(className, varName)
#define Q_ASSERT(cond)
Definition: qglobal.h:1823
Item::Iterator::Ptr m_focusIterator
Definition: qfocus_p.h:94

Properties

◆ m_contextSizeCached

xsInteger QPatternist::Focus::m_contextSizeCached
private

Definition at line 95 of file qfocus_p.h.

Referenced by contextSize().

◆ m_focusIterator

Item::Iterator::Ptr QPatternist::Focus::m_focusIterator
private

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