zorba-coders team mailing list archive
-
zorba-coders team
-
Mailing list archive
-
Message #25947
[Merge] lp:~zorba-coders/zorba/markos-scratch into lp:zorba
Markos Zaharioudakis has proposed merging lp:~zorba-coders/zorba/markos-scratch into lp:zorba.
Commit message:
Added/fixed some comments for SequenceType.
Requested reviews:
Markos Zaharioudakis (markos-za)
For more details, see:
https://code.launchpad.net/~zorba-coders/zorba/markos-scratch/+merge/188000
Added/fixed some comments for SequenceType.
--
https://code.launchpad.net/~zorba-coders/zorba/markos-scratch/+merge/188000
Your team Zorba Coders is subscribed to branch lp:zorba.
=== modified file 'include/zorba/typeident.h'
--- include/zorba/typeident.h 2013-09-26 20:20:24 +0000
+++ include/zorba/typeident.h 2013-09-27 09:23:49 +0000
@@ -85,13 +85,18 @@
static SequenceType createItemType(Quantifier q = QUANT_ONE);
/**
- * \brief Create an AtomicOrUnion type with quantifier
+ * \brief Create a generalized atomic type (see
+ * http://www.w3.org/TR/xquery-30/#dt-generalized-atomic-type ) with quantifier
*
- * An AtomicOrUnion type is specified simply as a QName, which may identify
- * an XMLSchema builtin atomic type or a user-defined atomic or union type.
+ * A generalized atomic type is specified simply as a QName, which may identify
+ * an XMLSchema builtin atomic type or a user-defined atomic or pure union type.
* In the case of user-defined types, the QName must be among the in-scope
* type names of a given static context. Otherwise, for builtin types, the
* given sctx may be NULL.
+ *
+ * If the given QName (uri and local name pair) does not specify a generalized
+ * atomic type among the in-scope type names of a given static context, an
+ * invalid SequenceType is returned.
*/
static SequenceType createAtomicOrUnionType(
const StaticContext_t& sctx,
@@ -128,12 +133,18 @@
bool nillable,
Quantifier quant = QUANT_ONE);
+ /**
+ *
+ */
static SequenceType createSchemaElementType(
const StaticContext_t& sctx,
const String& uri,
const String& localName,
Quantifier quant = QUANT_ONE);
+ /**
+ *
+ */
static SequenceType createAttributeType(
const StaticContext_t& sctx,
const String& nodeUri,
@@ -142,29 +153,59 @@
const String& contentTypeLocalName,
Quantifier quant = QUANT_ONE);
+ /**
+ *
+ */
static SequenceType createSchemaAttributeType(
const StaticContext_t& sctx,
const String& uri,
const String& localName,
Quantifier quant = QUANT_ONE);
+ /**
+ *
+ */
static SequenceType createPIType(Quantifier q = QUANT_ONE);
+ /**
+ *
+ */
static SequenceType createTextType(Quantifier q = QUANT_ONE);
+ /**
+ *
+ */
static SequenceType createCommentType(Quantifier q = QUANT_ONE);
+ /**
+ *
+ */
static SequenceType createNamespaceType(Quantifier q = QUANT_ONE);
+ /**
+ *
+ */
static SequenceType createJSONItemType(Quantifier q = QUANT_ONE);
+ /**
+ *
+ */
static SequenceType createJSONObjectType(Quantifier q = QUANT_ONE);
+ /**
+ *
+ */
static SequenceType createJSONArrayType(Quantifier q = QUANT_ONE);
public:
+ /**
+ * Constructor for an invalid (NULL) type.
+ */
SequenceType();
+ /**
+ * Copy constructor
+ */
SequenceType(const SequenceType& other);
/**
@@ -173,7 +214,7 @@
~SequenceType();
/**
- *
+ * Returns true if this a valid (non-NULL) type; otherwise, returns false.
*/
bool isValid() const;
@@ -188,29 +229,32 @@
Quantifier getQuantifier() const;
/**
- * If this is an atomic or union type, this method returns the URI of
+ * If this is a generalized atomic type, this method returns the URI of
* the type name. For other kinds of types, an empty string is returned.
*/
String getTypeUri() const;
/**
- * If this is an atomic or union type, this method returns the local part of
+ * If this is a generalized atomic type, this method returns the local part of
* the type name. For other kinds of types, an empty string is returned.
*/
String getTypeLocalName() const;
/**
* If this is an element() or attribute() type that contains a NodeName,
- * this method returns the URI of that NodeName. In all other cases, an
- * empty string is returned.
+ * this method returns the URI of that NodeName. If this is a schema-element(N)
+ * or schema-attribute(N) type, the method returns the URI of N. In all other
+ * cases, an empty string is returned.
*/
String getNodeUri() const;
/**
* If this is an element() or attribute() type that contains a NodeName,
- * this method returns the URI of that NodeName. If this is a
- * processing-instruction() that contains a TargetName, that TargetName is
- * returned. In all other cases, an empty string is returned.
+ * this method returns the local part of that NodeName. If this is a
+ * schema-element(N) or schema-attribute(N) type, the method returns the
+ * local part of N. If this is a processing-instruction() that contains a
+ * TargetName, that TargetName is returned. In all other cases, an empty
+ * string is returned.
*/
String getNodeLocalName() const;
=== modified file 'src/api/sequencetype.cpp'
--- src/api/sequencetype.cpp 2013-09-26 20:20:24 +0000
+++ src/api/sequencetype.cpp 2013-09-27 09:23:49 +0000
@@ -150,7 +150,10 @@
xqtref_t type = tm->create_named_type(qname, quant, QueryLoc::null, false);
- return Unmarshaller::createSequenceType(type.getp());
+ if (type->isGenAtomicAny())
+ return Unmarshaller::createSequenceType(type.getp());
+
+ return Unmarshaller::createSequenceType(NULL);
}
@@ -711,6 +714,24 @@
}
+bool SequenceType::isWildcard() const
+{
+ if (theType->type_kind() == XQType::NODE_TYPE_KIND)
+ {
+ const NodeXQType* nt = static_cast<const NodeXQType*>(theType);
+
+ store::StoreConsts::NodeKind nodeKind = nt->get_node_kind();
+
+ if (nt->get_node_name() == NULL &&
+ (nodeKind == store::StoreConsts::elementNode ||
+ nodeKind == store::StoreConsts::attributeNode))
+ return true;
+ }
+
+ return false;
+}
+
+
SequenceType SequenceType::getContentType() const
{
switch (theType->type_kind())
@@ -735,6 +756,7 @@
}
}
+
String SequenceType::getContentTypeUri() const
{
switch (theType->type_kind())
@@ -789,24 +811,6 @@
}
-bool SequenceType::isWildcard() const
-{
- if (theType->type_kind() == XQType::NODE_TYPE_KIND)
- {
- const NodeXQType* nt = static_cast<const NodeXQType*>(theType);
-
- store::StoreConsts::NodeKind nodeKind = nt->get_node_kind();
-
- if (nt->get_node_name() == NULL &&
- (nodeKind == store::StoreConsts::elementNode ||
- nodeKind == store::StoreConsts::attributeNode))
- return true;
- }
-
- return false;
-}
-
-
bool SequenceType::isSchemaTest() const
{
if (theType->type_kind() == XQType::NODE_TYPE_KIND)
=== modified file 'src/types/typeimpl.cpp'
--- src/types/typeimpl.cpp 2013-09-23 09:11:02 +0000
+++ src/types/typeimpl.cpp 2013-09-27 09:23:49 +0000
@@ -316,7 +316,8 @@
/*******************************************************************************
- Returns true if the ItemType of the given sequence type is an atomic type.
+ Returns true if the ItemType of the given sequence type is a generalized atomic
+ type.
********************************************************************************/
bool XQType::isGenAtomicAny() const
{
Follow ups