22 #ifndef _STATICTYPE_HPP
23 #define _STATICTYPE_HPP
25 #include <xqilla/framework/XQillaExport.hpp>
29 #include <xercesc/framework/XMLBuffer.hpp>
35 class XQILLA_API
StaticType :
public XERCES_CPP_NAMESPACE_QUALIFIER XMemory {
41 DOCUMENT_TYPE = 0x00000001,
42 ELEMENT_TYPE = 0x00000002,
43 ATTRIBUTE_TYPE = 0x00000004,
44 TEXT_TYPE = 0x00000008,
46 COMMENT_TYPE = 0x00000020,
47 NAMESPACE_TYPE = 0x00000040,
49 ANY_SIMPLE_TYPE = 0x00000080,
50 ANY_URI_TYPE = 0x00000100,
51 BASE_64_BINARY_TYPE = 0x00000200,
52 BOOLEAN_TYPE = 0x00000400,
53 DATE_TYPE = 0x00000800,
54 DATE_TIME_TYPE = 0x00001000,
55 DAY_TIME_DURATION_TYPE = 0x00002000,
56 DECIMAL_TYPE = 0x00004000,
57 DOUBLE_TYPE = 0x00008000,
58 DURATION_TYPE = 0x00010000,
59 FLOAT_TYPE = 0x00020000,
60 G_DAY_TYPE = 0x00040000,
61 G_MONTH_TYPE = 0x00080000,
62 G_MONTH_DAY_TYPE = 0x00100000,
63 G_YEAR_TYPE = 0x00200000,
64 G_YEAR_MONTH_TYPE = 0x00400000,
65 HEX_BINARY_TYPE = 0x00800000,
66 NOTATION_TYPE = 0x01000000,
67 QNAME_TYPE = 0x02000000,
68 STRING_TYPE = 0x04000000,
69 TIME_TYPE = 0x08000000,
70 UNTYPED_ATOMIC_TYPE = 0x10000000,
71 YEAR_MONTH_DURATION_TYPE = 0x20000000,
73 FUNCTION_TYPE = 0x40000000,
75 NODE_TYPE = (DOCUMENT_TYPE | ELEMENT_TYPE | ATTRIBUTE_TYPE | TEXT_TYPE | PI_TYPE | COMMENT_TYPE |
78 NUMERIC_TYPE = (DECIMAL_TYPE | FLOAT_TYPE | DOUBLE_TYPE),
80 TIMEZONE_TYPE = (DATE_TYPE | DATE_TIME_TYPE | G_DAY_TYPE | G_MONTH_TYPE | G_MONTH_DAY_TYPE |
81 G_YEAR_TYPE | G_YEAR_MONTH_TYPE | TIME_TYPE),
83 TYPED_ATOMIC_TYPE = (NUMERIC_TYPE | TIMEZONE_TYPE | ANY_SIMPLE_TYPE | ANY_URI_TYPE | BASE_64_BINARY_TYPE |
84 BOOLEAN_TYPE | DAY_TIME_DURATION_TYPE | DURATION_TYPE | HEX_BINARY_TYPE |
85 NOTATION_TYPE | QNAME_TYPE | STRING_TYPE | YEAR_MONTH_DURATION_TYPE),
87 ANY_ATOMIC_TYPE = (TYPED_ATOMIC_TYPE | UNTYPED_ATOMIC_TYPE),
89 ITEM_TYPE = (NODE_TYPE | ANY_ATOMIC_TYPE | FUNCTION_TYPE),
104 unsigned int min = 1,
unsigned int max = 1);
128 StaticType &multiply(
unsigned int min,
unsigned int max);
129 void setCardinality(
unsigned int min,
unsigned int max);
131 bool containsType(
const StaticType &type)
const;
149 unsigned int getMin()
const {
return min_; }
150 unsigned int getMax()
const {
return max_; }
156 void typeToBuf(XERCES_CPP_NAMESPACE_QUALIFIER XMLBuffer &buf)
const;
159 TypeMatchEnum matchesFunctionType(
const StaticType &type)
const;
160 TypeMatchEnum matchesType(
const StaticType &type)
const;
167 unsigned int minArgs_;
168 unsigned int maxArgs_;
Definition: XPath2MemoryManager.hpp:47
unsigned int getMin() const
Definition: StaticType.hpp:149
StaticType::StaticTypeFlags operator&(StaticType::StaticTypeFlags a, StaticType::StaticTypeFlags b)
static const unsigned int UNLIMITED
Definition: StaticType.hpp:94
StaticType::StaticTypeFlags operator|(StaticType::StaticTypeFlags a, StaticType::StaticTypeFlags b)
The parse time static context interface.
Definition: StaticContext.hpp:59
AtomicObjectType
Definition: AnyAtomicType.hpp:36
Definition: StaticType.hpp:142
TypeMatchEnum type
Definition: StaticType.hpp:144
unsigned int getMaxArgs() const
Definition: StaticType.hpp:153
unsigned int getMinArgs() const
Definition: StaticType.hpp:152
unsigned int getMax() const
Definition: StaticType.hpp:150
const StaticType * getReturnType() const
Definition: StaticType.hpp:154
Class that represents the static type of an expression.
Definition: StaticType.hpp:35
StaticTypeFlags
Flags that determine what item types are returned from an expression.
Definition: StaticType.hpp:40
TypeMatchEnum
Definition: StaticType.hpp:135