20 #ifndef _STATICTYPE_HPP 21 #define _STATICTYPE_HPP 23 #include <xqilla/framework/XQillaExport.hpp> 27 #include <xercesc/framework/XMLBuffer.hpp> 33 class XQILLA_API
StaticType :
public XERCES_CPP_NAMESPACE_QUALIFIER XMemory {
39 DOCUMENT_TYPE = 0x00000001,
40 ELEMENT_TYPE = 0x00000002,
41 ATTRIBUTE_TYPE = 0x00000004,
42 TEXT_TYPE = 0x00000008,
44 COMMENT_TYPE = 0x00000020,
45 NAMESPACE_TYPE = 0x00000040,
47 ANY_SIMPLE_TYPE = 0x00000080,
48 ANY_URI_TYPE = 0x00000100,
49 BASE_64_BINARY_TYPE = 0x00000200,
50 BOOLEAN_TYPE = 0x00000400,
51 DATE_TYPE = 0x00000800,
52 DATE_TIME_TYPE = 0x00001000,
53 DAY_TIME_DURATION_TYPE = 0x00002000,
54 DECIMAL_TYPE = 0x00004000,
55 DOUBLE_TYPE = 0x00008000,
56 DURATION_TYPE = 0x00010000,
57 FLOAT_TYPE = 0x00020000,
58 G_DAY_TYPE = 0x00040000,
59 G_MONTH_TYPE = 0x00080000,
60 G_MONTH_DAY_TYPE = 0x00100000,
61 G_YEAR_TYPE = 0x00200000,
62 G_YEAR_MONTH_TYPE = 0x00400000,
63 HEX_BINARY_TYPE = 0x00800000,
64 NOTATION_TYPE = 0x01000000,
65 QNAME_TYPE = 0x02000000,
66 STRING_TYPE = 0x04000000,
67 TIME_TYPE = 0x08000000,
68 UNTYPED_ATOMIC_TYPE = 0x10000000,
69 YEAR_MONTH_DURATION_TYPE = 0x20000000,
71 FUNCTION_TYPE = 0x40000000,
73 NODE_TYPE = (DOCUMENT_TYPE | ELEMENT_TYPE | ATTRIBUTE_TYPE | TEXT_TYPE | PI_TYPE | COMMENT_TYPE |
76 NUMERIC_TYPE = (DECIMAL_TYPE | FLOAT_TYPE | DOUBLE_TYPE),
78 TIMEZONE_TYPE = (DATE_TYPE | DATE_TIME_TYPE | G_DAY_TYPE | G_MONTH_TYPE | G_MONTH_DAY_TYPE |
79 G_YEAR_TYPE | G_YEAR_MONTH_TYPE | TIME_TYPE),
81 TYPED_ATOMIC_TYPE = (NUMERIC_TYPE | TIMEZONE_TYPE | ANY_SIMPLE_TYPE | ANY_URI_TYPE | BASE_64_BINARY_TYPE |
82 BOOLEAN_TYPE | DAY_TIME_DURATION_TYPE | DURATION_TYPE | HEX_BINARY_TYPE |
83 NOTATION_TYPE | QNAME_TYPE | STRING_TYPE | YEAR_MONTH_DURATION_TYPE),
85 ANY_ATOMIC_TYPE = (TYPED_ATOMIC_TYPE | UNTYPED_ATOMIC_TYPE),
87 ITEM_TYPE = (NODE_TYPE | ANY_ATOMIC_TYPE | FUNCTION_TYPE),
102 unsigned int min = 1,
unsigned int max = 1);
126 StaticType &multiply(
unsigned int min,
unsigned int max);
127 void setCardinality(
unsigned int min,
unsigned int max);
129 bool containsType(
const StaticType &type)
const;
147 unsigned int getMin()
const {
return min_; }
148 unsigned int getMax()
const {
return max_; }
154 void typeToBuf(XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &buf)
const;
157 TypeMatchEnum matchesFunctionType(
const StaticType &type)
const;
158 TypeMatchEnum matchesType(
const StaticType &type)
const;
165 unsigned int minArgs_;
166 unsigned int maxArgs_;
unsigned int getMin() const
Definition: StaticType.hpp:147
Definition: XPath2MemoryManager.hpp:45
unsigned int getMaxArgs() const
Definition: StaticType.hpp:151
static const unsigned int UNLIMITED
Definition: StaticType.hpp:92
StaticType::StaticTypeFlags operator|(StaticType::StaticTypeFlags a, StaticType::StaticTypeFlags b)
The parse time static context interface.
Definition: StaticContext.hpp:57
AtomicObjectType
Definition: AnyAtomicType.hpp:34
Definition: StaticType.hpp:140
TypeMatchEnum type
Definition: StaticType.hpp:142
unsigned int getMinArgs() const
Definition: StaticType.hpp:150
const StaticType * getReturnType() const
Definition: StaticType.hpp:152
unsigned int getMax() const
Definition: StaticType.hpp:148
Class that represents the static type of an expression.
Definition: StaticType.hpp:33
StaticTypeFlags
Flags that determine what item types are returned from an expression.
Definition: StaticType.hpp:38
StaticType::StaticTypeFlags operator &(StaticType::StaticTypeFlags a, StaticType::StaticTypeFlags b)
TypeMatchEnum
Definition: StaticType.hpp:133