zorba-coders team mailing list archive
-
zorba-coders team
-
Mailing list archive
-
Message #22783
[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:
relaxed type restrictions for jsoniq navigation and related functions
Requested reviews:
Markos Zaharioudakis (markos-za)
For more details, see:
https://code.launchpad.net/~zorba-coders/zorba/markos-scratch/+merge/167465
relaxed type restrictions for jsoniq navigation and related functions
--
https://code.launchpad.net/~zorba-coders/zorba/markos-scratch/+merge/167465
Your team Zorba Coders is subscribed to branch lp:zorba.
=== modified file 'modules/org/jsoniq/www/functions.xq'
--- modules/org/jsoniq/www/functions.xq 2013-03-22 18:22:17 +0000
+++ modules/org/jsoniq/www/functions.xq 2013-06-05 07:09:43 +0000
@@ -193,7 +193,7 @@
: @param $o A JSON Object.
: @return The names of pairs in the object.
:)
-declare function jn:keys($o as object()) as xs:string* external;
+declare function jn:keys($o as item()) as xs:string* external;
(:~
@@ -205,7 +205,19 @@
: @return the value of specified pair within the given object, or the empty sequence.
:)
(: obsolete - use $o($name) instead :)
-declare function jn:value($o as object(), $name as xs:string) as item()? external;
+declare function jn:value($o as item(), $name as item()?) as item()? external;
+
+
+(:~
+ : Creates an object from the specified pairs of another given object.
+ : Specifically, for each name in $names, if the object $o has a pair with
+ : that name, then a copy of that pair is included in the new object.
+ :
+ : @param $o A JSON Object.
+ : @param $names The names of the pairs to copy out of $o and insert into the new object
+ : @return The new object.
+ :)
+declare function jn:project($o as object(), $names as xs:string*) as object() external;
(:~
@@ -227,19 +239,8 @@
: @return The member at the specified position, or empty sequence.
:)
(: obsolete - use $a($p) instead :)
-declare function jn:member($a as array(), $p as xs:integer) as item()? external;
-
-
-(:~
- : Creates an object from the specified pairs of another given object.
- : Specifically, for each name in $names, if the object $o has a pair with
- : that name, then a copy of that pair is included in the new object.
- :
- : @param $o A JSON Object.
- : @param $names The names of the pairs to copy out of $o and insert into the new object
- : @return The new object.
- :)
-declare function jn:project($o as object(), $names as xs:string*) as object() external;
+declare function jn:member($a as item(), $p as item()?) as item()? external;
+
(:~
: Returns the members of an Array.
@@ -247,25 +248,31 @@
: @param $a A JSON Array.
: @return The members of the specified array.
:)
-declare function jn:members($o as array()) as item()* external;
+declare function jn:members($o as item()) as item()* external;
(:~
: Recursively "flatten" a JSON Array, by replacing any arrays with their
: members. Equivalent to
:
- : define function jn:flatten($arg as array()) {
- : for $value in jn:values($arg)
- : return
- : if ($value instance of array())
- : then jn:flatten($value)
- : else $value
+ : define function jn:flatten($arg as item())
+ : {
+ : if ($arg instance of array())
+ : then
+ : for $value in jn:values($arg)
+ : return
+ : if ($value instance of array())
+ : then jn:flatten($value)
+ : else $value
+ : else
+ : ()
: };
:
: @param $a A JSON Array.
: @return The flattened version of $a.
:)
-declare function jn:flatten($a as array()) as item()* external;
+declare function jn:flatten($a as item()) as item()* external;
+
(:~
: Returns the JSON null.
@@ -274,6 +281,7 @@
:)
declare function jn:null() as js:null external;
+
(:~
: Tests whether the supplied atomic item is a JSON null.
:
=== modified file 'src/api/item.cpp'
--- src/api/item.cpp 2013-05-15 23:22:01 +0000
+++ src/api/item.cpp 2013-06-05 07:09:43 +0000
@@ -180,6 +180,7 @@
return store::XS_ANY_ATOMIC;
}
+
Item Item::getType() const
{
ITEM_TRY
@@ -192,18 +193,16 @@
return Item();
}
-#ifdef ZORBA_WITH_JSON
bool
Item::isJSONItem() const
{
ITEM_TRY
- return m_item->isJSONItem();
+ return m_item->isObject() || m_item->isArray();
ITEM_CATCH
return false;
}
-#endif /* ZORBA_WITH_JSON */
Iterator_t Item::getAtomizationValue() const
{
=== modified file 'src/api/serialization/serializer.cpp'
--- src/api/serialization/serializer.cpp 2013-05-09 00:21:51 +0000
+++ src/api/serialization/serializer.cpp 2013-06-05 07:09:43 +0000
@@ -458,8 +458,7 @@
}
emit_node(item, 0);
}
-#ifdef ZORBA_WITH_JSON
- else if (item->isJSONItem())
+ else if (item->isObject() || item->isArray())
{
zstring lMethod;
ser->getSerializationMethod(lMethod);
@@ -467,7 +466,6 @@
throw ZORBA_EXCEPTION(jerr::JNSE0022,
ERROR_PARAMS(lMethod, item->getType()->getStringValue()));
}
-#endif
else if (item->isFunction())
{
throw XQUERY_EXCEPTION(err::SENR0001,
@@ -1000,26 +998,32 @@
{
// This is called for any item within a JSON array or object, or for a
// top-level item. JSON rules for simple types apply here.
- if (item->isJSONObject()) {
+ if (item->isObject())
+ {
emit_json_object(item, depth);
}
- else if (item->isJSONArray()) {
+ else if (item->isArray())
+ {
emit_json_array(item, depth);
}
- else if (item->isAtomic()) {
+ else if (item->isAtomic())
+ {
store::SchemaTypeCode type = item->getTypeCode();
- switch (type) {
+ switch (type)
+ {
case store::XS_STRING:
emit_json_string(item->getStringValue());
break;
case store::XS_DOUBLE:
case store::XS_FLOAT:
- if (item->isNaN()) {
+ if (item->isNaN())
+ {
emit_json_string("NaN");
break;
}
- else if (item->isPosOrNegInf()) {
+ else if (item->isPosOrNegInf())
+ {
// QQQ with Cloudscript, this is supposed to be INF or -INF - how can
// I tell which I have?
emit_json_string("INF");
@@ -1052,17 +1056,20 @@
tr << "null";
break;
- default: {
+ default:
+ {
emit_json_string(item->getStringValue());
break;
}
}
}
- else {
+ else
+ {
emit_jsoniq_xdm_node(item, depth);
}
}
+
/*******************************************************************************
********************************************************************************/
@@ -1072,36 +1079,46 @@
store::Iterator_t it = obj->getObjectKeys();
it->open();
bool first = true;
- if (ser->indent) {
+ if (ser->indent)
+ {
tr << "{" <<ser->END_OF_LINE;
}
- else {
+ else
+ {
tr << "{ ";
}
depth++;
- while (it->next(key)) {
+ while (it->next(key))
+ {
if (first) {
first = false;
}
- else {
+ else
+ {
tr << ", ";
- if (ser->indent) {
+ if (ser->indent)
+ {
tr << ser->END_OF_LINE;
}
}
- if (ser->indent) {
+
+ if (ser->indent)
+ {
emit_indentation(depth);
}
+
emit_json_item(key, depth);
tr << " : ";
emit_json_item(obj->getObjectValue(key).getp(), depth);
}
- if (ser->indent) {
+ if (ser->indent)
+ {
tr << ser->END_OF_LINE;
emit_indentation(depth-1);
tr << "}";
}
- else {
+ else
+ {
tr << " }";
}
}
@@ -1113,7 +1130,8 @@
{
xs_integer size = array->getArraySize();
tr << "[ ";
- for (xs_integer i = xs_integer(1); i <= size; ++i) {
+ for (xs_integer i = xs_integer(1); i <= size; ++i)
+ {
if (i != 1) {
tr << ", ";
}
@@ -1171,11 +1189,13 @@
void serializer::hybrid_emitter::emit_item(store::Item *item)
{
- if (item->isJSONItem()) {
+ if (item->isJSONItem())
+ {
theEmitterState = JESTATE_JDM;
json_emitter::emit_item(item);
}
- else {
+ else
+ {
if (theEmitterState == JESTATE_UNDETERMINED) {
theXMLEmitter->emit_declaration();
}
=== modified file 'src/compiler/translator/translator.cpp'
--- src/compiler/translator/translator.cpp 2013-06-04 23:51:34 +0000
+++ src/compiler/translator/translator.cpp 2013-06-05 07:09:43 +0000
@@ -1140,7 +1140,9 @@
if (theSctx->is_feature_set(feature::common_language))
{
theCCB->theXQueryDiagnostics->add_warning(
- NEW_XQUERY_WARNING(zwarn::ZWST0009_COMMON_LANGUAGE_WARNING, WARN_PARAMS(ZED(ZWST0009_NO_PREFIX_IN_TYPE)), WARN_LOC(loc)));
+ NEW_XQUERY_WARNING(zwarn::ZWST0009_COMMON_LANGUAGE_WARNING,
+ WARN_PARAMS(ZED(ZWST0009_NO_PREFIX_IN_TYPE)),
+ WARN_LOC(loc)));
}
ns = XML_SCHEMA_NS;
@@ -12073,18 +12075,22 @@
}
case FunctionConsts::FN_JSONIQ_VALUE_2:
{
- arguments[1] = CREATE(cast)(theRootSctx, theUDF, loc,
- arguments[1],
- theRTM.STRING_TYPE_ONE,
- false);
+ arguments[1] =
+ create_cast_expr(loc, arguments[1], theRTM.STRING_TYPE_ONE, true, true);
+
break;
}
case FunctionConsts::FN_JSONIQ_MEMBER_2:
{
- arguments[1] = CREATE(cast)(theRootSctx, theUDF, loc,
- arguments[1],
- theRTM.INTEGER_TYPE_ONE,
- false);
+ arguments[1] =
+ create_cast_expr(loc, arguments[1], theRTM.INTEGER_TYPE_ONE, true, true);
+
+ break;
+ }
+ case FunctionConsts::OP_ZORBA_JSON_ITEM_ACCESSOR_2:
+ {
+ arguments[1] = wrap_in_atomization(arguments[1]);
+
break;
}
case FunctionConsts::FN_CONCAT_N:
@@ -12324,6 +12330,8 @@
expr* sourceExpr = pop_nodestack();
ZORBA_ASSERT(sourceExpr != 0);
+ TypeManager* tm = sourceExpr->get_type_manager();
+
// special case: partial function invocation
if (v.normalizeArgs() && sourceExpr->get_expr_kind() == function_item_expr_kind)
{
@@ -12340,13 +12348,14 @@
// Implementing implicit iteration over the sequence returned by the source expr
flwor_expr* flworExpr = wrap_expr_in_flwor(sourceExpr, false);
- for_clause* fc = reinterpret_cast<for_clause*>(flworExpr->get_clause(0));
+ for_clause* fc = static_cast<for_clause*>(flworExpr->get_clause(0));
expr* flworVarExpr = CREATE(wrapper)(theRootSctx, theUDF, loc, fc->get_var());
- TypeManager* tm = sourceExpr->get_type_manager();
xqtref_t srcType = sourceExpr->get_return_type();
+ // Note: if numArgs > 1 and the input contains a json item, DynamicFnCallIterator
+ // will raise an error. However, no error will be raised if the input is empty.
if (TypeOps::is_subtype(tm, *srcType, *theRTM.JSON_ITEM_TYPE_STAR) && numArgs <= 1)
{
function* func;
@@ -12366,10 +12375,6 @@
{
func = BUILTIN_FUNC(OP_ZORBA_JSON_ITEM_ACCESSOR_2);
}
-
- arguments.insert(arguments.begin(), flworVarExpr);
-
- accessorExpr = generate_fn_body(func, arguments, loc);
}
else
{
@@ -12385,20 +12390,16 @@
{
func = BUILTIN_FUNC(OP_ZORBA_JSON_ITEM_ACCESSOR_1);
}
-
- accessorExpr = CREATE(fo)(theRootSctx, theUDF, loc, func, flworVarExpr);
-
- normalize_fo(static_cast<fo_expr*>(accessorExpr));
}
+ arguments.insert(arguments.begin(), flworVarExpr);
+
+ accessorExpr = generate_fn_body(func, arguments, loc);
+
flworExpr->set_return_expr(accessorExpr);
}
else
{
- // This is needed to make sure that the flwor is not thrown away by the optimizer
- // when the FunctionItem expression is an empty sequence.
- fc->set_allowing_empty(true);
-
expr* dynFuncInvocation =
CREATE(dynamic_function_invocation)(theRootSctx, theUDF, loc,
flworVarExpr,
@@ -12959,7 +12960,9 @@
if (theSctx->is_feature_set(feature::common_language))
{
theCCB->theXQueryDiagnostics->add_warning(
- NEW_XQUERY_WARNING(zwarn::ZWST0009_COMMON_LANGUAGE_WARNING, WARN_PARAMS(ZED(ZWST0009_JSON_OBJECT_LOOKUP)), WARN_LOC(v.get_dot_loc())));
+ NEW_XQUERY_WARNING(zwarn::ZWST0009_COMMON_LANGUAGE_WARNING,
+ WARN_PARAMS(ZED(ZWST0009_JSON_OBJECT_LOOKUP)),
+ WARN_LOC(v.get_dot_loc())));
}
return no_state;
}
@@ -12969,12 +12972,10 @@
{
TRACE_VISIT_OUT();
- expr* selectExpr = 0;
- if (v.get_selector_expr())
- selectExpr = pop_nodestack();
-
+ expr* selectExpr = pop_nodestack();
expr* objectExpr = pop_nodestack();
- ZORBA_ASSERT(objectExpr != 0);
+
+ assert(selectExpr && objectExpr);
flwor_expr* flworExpr = wrap_expr_in_flwor(objectExpr, false);
@@ -12982,17 +12983,15 @@
expr* flworVarExpr = CREATE(wrapper)(theRootSctx, theUDF, loc, fc->get_var());
- function* func =
- selectExpr ?
- BUILTIN_FUNC(FN_JSONIQ_VALUE_2) :
- BUILTIN_FUNC(FN_JSONIQ_KEYS_1);
-
- fo_expr* accessorExpr =
- selectExpr ?
- CREATE(fo)(theRootSctx, theUDF, loc, func, flworVarExpr, selectExpr) :
- CREATE(fo)(theRootSctx, theUDF, loc, func, flworVarExpr);
-
- normalize_fo(accessorExpr);
+ expr* accessorExpr;
+
+ std::vector<expr*> args(2);
+ args[0] = flworVarExpr;
+ args[1] = selectExpr;
+
+ accessorExpr = generate_fn_body(BUILTIN_FUNC(FN_JSONIQ_VALUE_2), args, loc);
+
+ assert(accessorExpr->get_expr_kind() == fo_expr_kind);
flworExpr->set_return_expr(accessorExpr);
@@ -13001,6 +13000,7 @@
push_nodestack(flworExpr);
}
+
/*******************************************************************************
JSONConstructor ::= ArrayConstructor |
SimpleObjectUnion |
=== modified file 'src/functions/pregenerated/func_jsoniq_functions.cpp'
--- src/functions/pregenerated/func_jsoniq_functions.cpp 2013-04-05 22:56:02 +0000
+++ src/functions/pregenerated/func_jsoniq_functions.cpp 2013-06-05 07:09:43 +0000
@@ -30,7 +30,7 @@
namespace zorba{
-#ifdef ZORBA_WITH_JSON
+
PlanIter_t fn_jsoniq_decode_from_roundtrip::codegen(
CompilerCB*,
static_context* sctx,
@@ -41,8 +41,6 @@
return new JSONDecodeFromRoundtripIterator(sctx, loc, argv);
}
-#endif
-#ifdef ZORBA_WITH_JSON
PlanIter_t fn_jsoniq_encode_for_roundtrip::codegen(
CompilerCB*,
static_context* sctx,
@@ -53,11 +51,27 @@
return new JSONEncodeForRoundtripIterator(sctx, loc, argv);
}
-#endif
-#ifdef ZORBA_WITH_JSON
-
-#endif
-#ifdef ZORBA_WITH_JSON
+
+PlanIter_t fn_jsoniq_json_doc::codegen(
+ CompilerCB*,
+ static_context* sctx,
+ const QueryLoc& loc,
+ std::vector<PlanIter_t>& argv,
+ expr& ann) const
+{
+ return new JSONDocIterator(sctx, loc, argv);
+}
+
+PlanIter_t op_zorba_json_item_accessor::codegen(
+ CompilerCB*,
+ static_context* sctx,
+ const QueryLoc& loc,
+ std::vector<PlanIter_t>& argv,
+ expr& ann) const
+{
+ return new JSONItemAccessorIterator(sctx, loc, argv);
+}
+
PlanIter_t fn_jsoniq_keys::codegen(
CompilerCB*,
static_context* sctx,
@@ -68,8 +82,6 @@
return new JSONObjectNamesIterator(sctx, loc, argv[0]);
}
-#endif
-#ifdef ZORBA_WITH_JSON
PlanIter_t fn_jsoniq_value::codegen(
CompilerCB*,
static_context* sctx,
@@ -80,8 +92,6 @@
return new JSONObjectValueIterator(sctx, loc, argv[0], argv[1]);
}
-#endif
-#ifdef ZORBA_WITH_JSON
PlanIter_t fn_jsoniq_project::codegen(
CompilerCB*,
static_context* sctx,
@@ -92,20 +102,6 @@
return new JSONObjectProjectIterator(sctx, loc, argv[0], argv[1]);
}
-#endif
-#ifdef ZORBA_WITH_JSON
-PlanIter_t fn_jsoniq_size::codegen(
- CompilerCB*,
- static_context* sctx,
- const QueryLoc& loc,
- std::vector<PlanIter_t>& argv,
- expr& ann) const
-{
- return new JSONArraySizeIterator(sctx, loc, argv[0]);
-}
-
-#endif
-#ifdef ZORBA_WITH_JSON
PlanIter_t fn_jsoniq_member::codegen(
CompilerCB*,
static_context* sctx,
@@ -116,8 +112,6 @@
return new JSONArrayMemberIterator(sctx, loc, argv[0], argv[1]);
}
-#endif
-#ifdef ZORBA_WITH_JSON
PlanIter_t fn_jsoniq_members::codegen(
CompilerCB*,
static_context* sctx,
@@ -128,8 +122,16 @@
return new JSONArrayMembersIterator(sctx, loc, argv[0]);
}
-#endif
-#ifdef ZORBA_WITH_JSON
+PlanIter_t fn_jsoniq_size::codegen(
+ CompilerCB*,
+ static_context* sctx,
+ const QueryLoc& loc,
+ std::vector<PlanIter_t>& argv,
+ expr& ann) const
+{
+ return new JSONArraySizeIterator(sctx, loc, argv[0]);
+}
+
PlanIter_t fn_jsoniq_flatten::codegen(
CompilerCB*,
static_context* sctx,
@@ -140,32 +142,6 @@
return new JSONArrayFlattenIterator(sctx, loc, argv[0]);
}
-#endif
-#ifdef ZORBA_WITH_JSON
-PlanIter_t fn_jsoniq_json_doc::codegen(
- CompilerCB*,
- static_context* sctx,
- const QueryLoc& loc,
- std::vector<PlanIter_t>& argv,
- expr& ann) const
-{
- return new JSONDocIterator(sctx, loc, argv);
-}
-
-#endif
-#ifdef ZORBA_WITH_JSON
-PlanIter_t op_zorba_json_item_accessor::codegen(
- CompilerCB*,
- static_context* sctx,
- const QueryLoc& loc,
- std::vector<PlanIter_t>& argv,
- expr& ann) const
-{
- return new JSONItemAccessorIterator(sctx, loc, argv);
-}
-
-#endif
-#ifdef ZORBA_WITH_JSON
PlanIter_t fn_jsoniq_null::codegen(
CompilerCB*,
static_context* sctx,
@@ -176,8 +152,6 @@
return new JSONNullIterator(sctx, loc);
}
-#endif
-#ifdef ZORBA_WITH_JSON
PlanIter_t fn_jsoniq_is_null::codegen(
CompilerCB*,
static_context* sctx,
@@ -188,8 +162,6 @@
return new JSONIsNullIterator(sctx, loc, argv[0]);
}
-#endif
-#ifdef ZORBA_WITH_JSON
PlanIter_t op_zorba_json_object_insert::codegen(
CompilerCB*,
static_context* sctx,
@@ -200,8 +172,6 @@
return new JSONObjectInsertIterator(sctx, loc, argv);
}
-#endif
-#ifdef ZORBA_WITH_JSON
PlanIter_t op_zorba_json_array_insert::codegen(
CompilerCB*,
static_context* sctx,
@@ -212,8 +182,6 @@
return new JSONArrayInsertIterator(sctx, loc, argv);
}
-#endif
-#ifdef ZORBA_WITH_JSON
PlanIter_t op_zorba_json_delete::codegen(
CompilerCB*,
static_context* sctx,
@@ -224,11 +192,7 @@
return new JSONDeleteIterator(sctx, loc, argv);
}
-#endif
-#ifdef ZORBA_WITH_JSON
-#endif
-#ifdef ZORBA_WITH_JSON
PlanIter_t op_zorba_json_rename::codegen(
CompilerCB*,
static_context* sctx,
@@ -239,8 +203,6 @@
return new JSONRenameIterator(sctx, loc, argv);
}
-#endif
-#ifdef ZORBA_WITH_JSON
PlanIter_t op_zorba_json_array_append::codegen(
CompilerCB*,
static_context* sctx,
@@ -251,8 +213,6 @@
return new JSONArrayAppendIterator(sctx, loc, argv);
}
-#endif
-#ifdef ZORBA_WITH_JSON
PlanIter_t op_zorba_json_box::codegen(
CompilerCB*,
static_context* sctx,
@@ -263,13 +223,9 @@
return new JSONBoxIterator(sctx, loc, argv[0]);
}
-#endif
-
void populate_context_jsoniq_functions(static_context* sctx)
{
-#ifdef ZORBA_WITH_JSON
-
{
DECL_WITH_KIND(sctx, fn_jsoniq_decode_from_roundtrip,
@@ -281,10 +237,6 @@
}
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
{
@@ -298,10 +250,6 @@
}
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
{
@@ -314,10 +262,6 @@
}
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
{
@@ -331,10 +275,6 @@
}
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
{
@@ -347,10 +287,6 @@
}
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
{
@@ -364,43 +300,68 @@
}
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
+
+
+ {
+ DECL_WITH_KIND(sctx, fn_jsoniq_json_doc,
+ (createQName("http://jsoniq.org/functions","","json-doc"),
+ GENV_TYPESYSTEM.STRING_TYPE_QUESTION,
+ GENV_TYPESYSTEM.JSON_ITEM_TYPE_STAR),
+ FunctionConsts::FN_JSONIQ_JSON_DOC_1);
+
+ }
+
+
+
+
+ {
+ DECL_WITH_KIND(sctx, op_zorba_json_item_accessor,
+ (createQName("http://www.zorba-xquery.com/internal/zorba-ops","","json-item-accessor"),
+ GENV_TYPESYSTEM.ITEM_TYPE_ONE,
+ GENV_TYPESYSTEM.ITEM_TYPE_STAR),
+ FunctionConsts::OP_ZORBA_JSON_ITEM_ACCESSOR_1);
+
+ }
+
+
+
+
+ {
+ DECL_WITH_KIND(sctx, op_zorba_json_item_accessor,
+ (createQName("http://www.zorba-xquery.com/internal/zorba-ops","","json-item-accessor"),
+ GENV_TYPESYSTEM.ITEM_TYPE_ONE,
+ GENV_TYPESYSTEM.ITEM_TYPE_QUESTION,
+ GENV_TYPESYSTEM.ITEM_TYPE_QUESTION),
+ FunctionConsts::OP_ZORBA_JSON_ITEM_ACCESSOR_2);
+
+ }
+
+
{
DECL_WITH_KIND(sctx, fn_jsoniq_keys,
(createQName("http://jsoniq.org/functions","","keys"),
- GENV_TYPESYSTEM.JSON_OBJECT_TYPE_ONE,
+ GENV_TYPESYSTEM.ITEM_TYPE_ONE,
GENV_TYPESYSTEM.STRING_TYPE_STAR),
FunctionConsts::FN_JSONIQ_KEYS_1);
}
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
{
DECL_WITH_KIND(sctx, fn_jsoniq_value,
(createQName("http://jsoniq.org/functions","","value"),
- GENV_TYPESYSTEM.JSON_OBJECT_TYPE_ONE,
- GENV_TYPESYSTEM.STRING_TYPE_ONE,
+ GENV_TYPESYSTEM.ITEM_TYPE_ONE,
+ GENV_TYPESYSTEM.ITEM_TYPE_QUESTION,
GENV_TYPESYSTEM.ITEM_TYPE_QUESTION),
FunctionConsts::FN_JSONIQ_VALUE_2);
}
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
{
@@ -414,124 +375,55 @@
}
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
-
-
- {
- DECL_WITH_KIND(sctx, fn_jsoniq_size,
- (createQName("http://jsoniq.org/functions","","size"),
- GENV_TYPESYSTEM.JSON_ARRAY_TYPE_ONE,
- GENV_TYPESYSTEM.INTEGER_TYPE_ONE),
- FunctionConsts::FN_JSONIQ_SIZE_1);
-
- }
-
-
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
{
DECL_WITH_KIND(sctx, fn_jsoniq_member,
(createQName("http://jsoniq.org/functions","","member"),
- GENV_TYPESYSTEM.JSON_ARRAY_TYPE_ONE,
- GENV_TYPESYSTEM.INTEGER_TYPE_ONE,
+ GENV_TYPESYSTEM.ITEM_TYPE_ONE,
+ GENV_TYPESYSTEM.ITEM_TYPE_QUESTION,
GENV_TYPESYSTEM.ITEM_TYPE_QUESTION),
FunctionConsts::FN_JSONIQ_MEMBER_2);
}
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
{
DECL_WITH_KIND(sctx, fn_jsoniq_members,
(createQName("http://jsoniq.org/functions","","members"),
- GENV_TYPESYSTEM.JSON_ARRAY_TYPE_ONE,
+ GENV_TYPESYSTEM.ITEM_TYPE_ONE,
GENV_TYPESYSTEM.ITEM_TYPE_STAR),
FunctionConsts::FN_JSONIQ_MEMBERS_1);
}
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
+
+
+ {
+ DECL_WITH_KIND(sctx, fn_jsoniq_size,
+ (createQName("http://jsoniq.org/functions","","size"),
+ GENV_TYPESYSTEM.JSON_ARRAY_TYPE_ONE,
+ GENV_TYPESYSTEM.INTEGER_TYPE_ONE),
+ FunctionConsts::FN_JSONIQ_SIZE_1);
+
+ }
+
+
{
DECL_WITH_KIND(sctx, fn_jsoniq_flatten,
(createQName("http://jsoniq.org/functions","","flatten"),
- GENV_TYPESYSTEM.JSON_ARRAY_TYPE_ONE,
+ GENV_TYPESYSTEM.ITEM_TYPE_ONE,
GENV_TYPESYSTEM.ITEM_TYPE_STAR),
FunctionConsts::FN_JSONIQ_FLATTEN_1);
}
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
-
-
- {
- DECL_WITH_KIND(sctx, fn_jsoniq_json_doc,
- (createQName("http://jsoniq.org/functions","","json-doc"),
- GENV_TYPESYSTEM.STRING_TYPE_QUESTION,
- GENV_TYPESYSTEM.JSON_ITEM_TYPE_STAR),
- FunctionConsts::FN_JSONIQ_JSON_DOC_1);
-
- }
-
-
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
-
-
- {
- DECL_WITH_KIND(sctx, op_zorba_json_item_accessor,
- (createQName("http://www.zorba-xquery.com/internal/zorba-ops","","json-item-accessor"),
- GENV_TYPESYSTEM.JSON_ITEM_TYPE_ONE,
- GENV_TYPESYSTEM.ITEM_TYPE_STAR),
- FunctionConsts::OP_ZORBA_JSON_ITEM_ACCESSOR_1);
-
- }
-
-
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
-
-
- {
- DECL_WITH_KIND(sctx, op_zorba_json_item_accessor,
- (createQName("http://www.zorba-xquery.com/internal/zorba-ops","","json-item-accessor"),
- GENV_TYPESYSTEM.JSON_ITEM_TYPE_ONE,
- GENV_TYPESYSTEM.ANY_ATOMIC_TYPE_ONE,
- GENV_TYPESYSTEM.ITEM_TYPE_QUESTION),
- FunctionConsts::OP_ZORBA_JSON_ITEM_ACCESSOR_2);
-
- }
-
-
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
{
@@ -543,10 +435,6 @@
}
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
{
@@ -559,10 +447,6 @@
}
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
{
@@ -576,10 +460,6 @@
}
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
{
@@ -594,10 +474,6 @@
}
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
{
@@ -611,10 +487,6 @@
}
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
{
@@ -629,10 +501,6 @@
}
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
{
@@ -647,10 +515,6 @@
}
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
{
@@ -664,10 +528,6 @@
}
-#endif
-
-
-#ifdef ZORBA_WITH_JSON
{
@@ -679,8 +539,6 @@
}
-
-#endif
}
=== modified file 'src/functions/pregenerated/func_jsoniq_functions.h'
--- src/functions/pregenerated/func_jsoniq_functions.h 2013-03-05 23:11:50 +0000
+++ src/functions/pregenerated/func_jsoniq_functions.h 2013-06-05 07:09:43 +0000
@@ -36,7 +36,7 @@
void populate_context_jsoniq_functions(static_context* sctx);
-#ifdef ZORBA_WITH_JSON
+
//fn-jsoniq:decode-from-roundtrip
class fn_jsoniq_decode_from_roundtrip : public function
@@ -55,8 +55,7 @@
CODEGEN_DECL();
};
-#endif
-#ifdef ZORBA_WITH_JSON
+
//fn-jsoniq:encode-for-roundtrip
class fn_jsoniq_encode_for_roundtrip : public function
@@ -75,8 +74,7 @@
CODEGEN_DECL();
};
-#endif
-#ifdef ZORBA_WITH_JSON
+
//fn-jsoniq:parse-json
class fn_jsoniq_parse_json : public function
@@ -95,8 +93,45 @@
CODEGEN_DECL();
};
-#endif
-#ifdef ZORBA_WITH_JSON
+
+
+//fn-jsoniq:json-doc
+class fn_jsoniq_json_doc : public function
+{
+public:
+ fn_jsoniq_json_doc(const signature& sig, FunctionConsts::FunctionKind kind)
+ :
+ function(sig, kind)
+ {
+
+ }
+
+ bool accessesDynCtx() const { return true; }
+
+ bool isSource() const { return true; }
+
+ CODEGEN_DECL();
+};
+
+
+//op-zorba:json-item-accessor
+class op_zorba_json_item_accessor : public function
+{
+public:
+ op_zorba_json_item_accessor(const signature& sig, FunctionConsts::FunctionKind kind)
+ :
+ function(sig, kind)
+ {
+
+ }
+
+ bool propagatesInputNodes(expr* fo, csize producer) const { return producer == 0; }
+
+ bool mustCopyInputNodes(expr* fo, csize producer) const { return false; }
+
+ CODEGEN_DECL();
+};
+
//fn-jsoniq:keys
class fn_jsoniq_keys : public function
@@ -115,8 +150,7 @@
CODEGEN_DECL();
};
-#endif
-#ifdef ZORBA_WITH_JSON
+
//fn-jsoniq:value
class fn_jsoniq_value : public function
@@ -135,8 +169,7 @@
CODEGEN_DECL();
};
-#endif
-#ifdef ZORBA_WITH_JSON
+
//fn-jsoniq:project
class fn_jsoniq_project : public function
@@ -155,28 +188,7 @@
CODEGEN_DECL();
};
-#endif
-#ifdef ZORBA_WITH_JSON
-
-//fn-jsoniq:size
-class fn_jsoniq_size : public function
-{
-public:
- fn_jsoniq_size(const signature& sig, FunctionConsts::FunctionKind kind)
- :
- function(sig, kind)
- {
-
- }
-
- bool propagatesInputNodes(expr* fo, csize producer) const { return false; }
-
- bool mustCopyInputNodes(expr* fo, csize producer) const { return false; }
-
- CODEGEN_DECL();
-};
-#endif
-#ifdef ZORBA_WITH_JSON
+
//fn-jsoniq:member
class fn_jsoniq_member : public function
@@ -195,8 +207,7 @@
CODEGEN_DECL();
};
-#endif
-#ifdef ZORBA_WITH_JSON
+
//fn-jsoniq:members
class fn_jsoniq_members : public function
@@ -215,8 +226,26 @@
CODEGEN_DECL();
};
-#endif
-#ifdef ZORBA_WITH_JSON
+
+
+//fn-jsoniq:size
+class fn_jsoniq_size : public function
+{
+public:
+ fn_jsoniq_size(const signature& sig, FunctionConsts::FunctionKind kind)
+ :
+ function(sig, kind)
+ {
+
+ }
+
+ bool propagatesInputNodes(expr* fo, csize producer) const { return false; }
+
+ bool mustCopyInputNodes(expr* fo, csize producer) const { return false; }
+
+ CODEGEN_DECL();
+};
+
//fn-jsoniq:flatten
class fn_jsoniq_flatten : public function
@@ -235,48 +264,7 @@
CODEGEN_DECL();
};
-#endif
-#ifdef ZORBA_WITH_JSON
-
-//fn-jsoniq:json-doc
-class fn_jsoniq_json_doc : public function
-{
-public:
- fn_jsoniq_json_doc(const signature& sig, FunctionConsts::FunctionKind kind)
- :
- function(sig, kind)
- {
-
- }
-
- bool accessesDynCtx() const { return true; }
-
- bool isSource() const { return true; }
-
- CODEGEN_DECL();
-};
-#endif
-#ifdef ZORBA_WITH_JSON
-
-//op-zorba:json-item-accessor
-class op_zorba_json_item_accessor : public function
-{
-public:
- op_zorba_json_item_accessor(const signature& sig, FunctionConsts::FunctionKind kind)
- :
- function(sig, kind)
- {
-
- }
-
- bool propagatesInputNodes(expr* fo, csize producer) const { return producer == 0; }
-
- bool mustCopyInputNodes(expr* fo, csize producer) const { return false; }
-
- CODEGEN_DECL();
-};
-#endif
-#ifdef ZORBA_WITH_JSON
+
//fn-jsoniq:null
class fn_jsoniq_null : public function
@@ -291,8 +279,7 @@
CODEGEN_DECL();
};
-#endif
-#ifdef ZORBA_WITH_JSON
+
//fn-jsoniq:is-null
class fn_jsoniq_is_null : public function
@@ -307,8 +294,7 @@
CODEGEN_DECL();
};
-#endif
-#ifdef ZORBA_WITH_JSON
+
//op-zorba:json-object-insert
class op_zorba_json_object_insert : public function
@@ -329,8 +315,7 @@
CODEGEN_DECL();
};
-#endif
-#ifdef ZORBA_WITH_JSON
+
//op-zorba:json-array-insert
class op_zorba_json_array_insert : public function
@@ -351,8 +336,7 @@
CODEGEN_DECL();
};
-#endif
-#ifdef ZORBA_WITH_JSON
+
//op-zorba:json-delete
class op_zorba_json_delete : public function
@@ -371,8 +355,7 @@
CODEGEN_DECL();
};
-#endif
-#ifdef ZORBA_WITH_JSON
+
//op-zorba:json-replace-value
class op_zorba_json_replace_value : public function
@@ -393,8 +376,7 @@
CODEGEN_DECL();
};
-#endif
-#ifdef ZORBA_WITH_JSON
+
//op-zorba:json-rename
class op_zorba_json_rename : public function
@@ -413,8 +395,7 @@
CODEGEN_DECL();
};
-#endif
-#ifdef ZORBA_WITH_JSON
+
//op-zorba:json-array-append
class op_zorba_json_array_append : public function
@@ -435,8 +416,7 @@
CODEGEN_DECL();
};
-#endif
-#ifdef ZORBA_WITH_JSON
+
//op-zorba:json-box
class op_zorba_json_box : public function
@@ -459,7 +439,6 @@
CODEGEN_DECL();
};
-#endif
} //namespace zorba
=== modified file 'src/functions/pregenerated/function_enum.h'
--- src/functions/pregenerated/function_enum.h 2013-06-04 21:47:40 +0000
+++ src/functions/pregenerated/function_enum.h 2013-06-05 07:09:43 +0000
@@ -251,16 +251,16 @@
FN_JSONIQ_ENCODE_FOR_ROUNDTRIP_2,
FN_JSONIQ_PARSE_JSON_1,
FN_JSONIQ_PARSE_JSON_2,
+ FN_JSONIQ_JSON_DOC_1,
+ OP_ZORBA_JSON_ITEM_ACCESSOR_1,
+ OP_ZORBA_JSON_ITEM_ACCESSOR_2,
FN_JSONIQ_KEYS_1,
FN_JSONIQ_VALUE_2,
FN_JSONIQ_PROJECT_2,
- FN_JSONIQ_SIZE_1,
FN_JSONIQ_MEMBER_2,
FN_JSONIQ_MEMBERS_1,
+ FN_JSONIQ_SIZE_1,
FN_JSONIQ_FLATTEN_1,
- FN_JSONIQ_JSON_DOC_1,
- OP_ZORBA_JSON_ITEM_ACCESSOR_1,
- OP_ZORBA_JSON_ITEM_ACCESSOR_2,
FN_JSONIQ_NULL_0,
FN_JSONIQ_IS_NULL_1,
OP_ZORBA_JSON_OBJECT_INSERT_2,
=== modified file 'src/runtime/accessors/accessors_impl.cpp'
--- src/runtime/accessors/accessors_impl.cpp 2013-05-24 22:52:47 +0000
+++ src/runtime/accessors/accessors_impl.cpp 2013-06-05 07:09:43 +0000
@@ -234,10 +234,13 @@
{
STACK_PUSH(true, state);
}
- else if (resKind == store::Item::JSONIQ)
- {
- RAISE_ERROR(jerr::JNTY0004, loc,
- ERROR_PARAMS(result->isJSONObject() ? "object" : "array"));
+ else if (resKind == store::Item::OBJECT)
+ {
+ RAISE_ERROR(jerr::JNTY0004, loc, ERROR_PARAMS("object"));
+ }
+ else if (resKind == store::Item::ARRAY)
+ {
+ RAISE_ERROR(jerr::JNTY0004, loc, ERROR_PARAMS("array"));
}
else if (resKind == store::Item::FUNCTION)
{
=== modified file 'src/runtime/core/constructors.cpp'
--- src/runtime/core/constructors.cpp 2013-05-25 14:36:27 +0000
+++ src/runtime/core/constructors.cpp 2013-06-05 07:09:43 +0000
@@ -1200,7 +1200,8 @@
}
}
}
- else if (resKind == store::Item::JSONIQ)
+ else if (resKind == store::Item::OBJECT ||
+ resKind == store::Item::ARRAY)
{
RAISE_ERROR_NO_PARAMS(jerr::JNTY0011, loc);
}
@@ -1307,7 +1308,8 @@
STACK_PUSH(true, state);
}
}
- else if (resKind == store::Item::JSONIQ)
+ else if (resKind == store::Item::OBJECT ||
+ resKind == store::Item::ARRAY)
{
RAISE_ERROR_NO_PARAMS(jerr::JNTY0011, loc);
}
=== modified file 'src/runtime/hof/dynamic_fncall_iterator.cpp'
--- src/runtime/hof/dynamic_fncall_iterator.cpp 2013-05-08 20:14:47 +0000
+++ src/runtime/hof/dynamic_fncall_iterator.cpp 2013-06-05 07:09:43 +0000
@@ -180,8 +180,6 @@
store::Item_t selectorItem1;
store::Item_t selectorItem2;
store::Item_t selectorItem3;
- bool isObjectNav;
- bool selectorError;
TypeManager* tm = theSctx->get_typemanager();
@@ -259,16 +257,15 @@
STACK_PUSH(true, state);
}
- // need to close here early in case the plan is completely
- // consumed. Otherwise, the plan would still be opened
- // if destroyed from the state's destructor.
+ // Need to close here early in case the plan is completely consumed.
+ // Otherwise, the plan would still be opened if destroyed from the
+ // state's destructor.
state->thePlan->close(planState);
state->theIsOpen = false;
- } // if (theIsPartialApply)
-
+ } // if (!theIsPartialApply)
} // if (targetItem->isFunction())
- else if (targetItem->isJSONObject() || targetItem->isJSONArray())
+ else if (targetItem->isJSONItem())
{
if (theChildren.size() > 2)
{
@@ -276,84 +273,93 @@
}
else if (theChildren.size() == 2)
{
- isObjectNav = targetItem->isJSONObject();
- selectorError = false;
-
- if (!consumeNext(selectorItem1, theChildren[1], planState))
- {
- selectorError = true;
- }
- else
- {
- try
- {
- if (selectorItem1->isNode())
+ if (consumeNext(selectorItem1, theChildren[1], planState))
+ {
+ if (consumeNext(item, theChildren[1], planState))
+ {
+ RAISE_ERROR(err::XPTY0004, loc,
+ ERROR_PARAMS(ZED(NoSeqCastToTypeWithQuantOneOrQuestion)));
+ }
+
+ // Atomize the selector item
+ switch (selectorItem1->getKind())
+ {
+ case store::Item::ATOMIC:
+ {
+ selectorItem2.transfer(selectorItem1);
+ break;
+ }
+ case store::Item::NODE:
+ {
+ store::Iterator_t iter;
+ selectorItem1->getTypedValue(selectorItem2, iter);
+
+ if (iter != NULL && iter->next(selectorItem2))
{
- store::Iterator_t iter;
-
- selectorItem1->getTypedValue(selectorItem2, iter);
-
- if (iter != NULL)
+ if (iter->next(item))
{
- if (!iter->next(selectorItem2) || iter->next(item))
- {
- selectorError = true;
- }
+ RAISE_ERROR(err::XPTY0004, loc,
+ ERROR_PARAMS(ZED(NoSeqCastToTypeWithQuantOneOrQuestion)));
}
}
+
+ break;
+ }
+ case store::Item::OBJECT:
+ {
+ RAISE_ERROR(jerr::JNTY0004, loc, ERROR_PARAMS("object"));
+ }
+ case store::Item::ARRAY:
+ {
+ RAISE_ERROR(jerr::JNTY0004, loc, ERROR_PARAMS("array"));
+ }
+ case store::Item::FUNCTION:
+ {
+ store::Item_t fnName = selectorItem1->getFunctionName();
+ RAISE_ERROR(err::FOTY0013, loc,
+ ERROR_PARAMS(fnName.getp() ?
+ result->getFunctionName()->getStringValue() :
+ zstring("???")));
+ }
+ default:
+ {
+ ZORBA_ASSERT(false);
+ }
+ }
+
+ if (selectorItem2 != NULL)
+ {
+ if (targetItem->isObject())
+ {
+ GenericCast::castToBuiltinAtomic(selectorItem3,
+ selectorItem2,
+ store::XS_STRING,
+ NULL,
+ loc);
+
+ result = targetItem->getObjectValue(selectorItem3);
+ }
else
{
- selectorItem2.transfer(selectorItem1);
- }
-
- if (!selectorError)
- {
- if (!selectorItem2->isAtomic())
- {
- selectorError = true;
- }
- else
- {
- store::SchemaTypeCode selectorType =
- (isObjectNav ? store::XS_STRING : store::XS_INTEGER);
-
- GenericCast::castToBuiltinAtomic(selectorItem3,
- selectorItem2,
- selectorType,
- NULL,
- loc);
- selectorError = false;
- }
- }
- }
- catch (...)
- {
- selectorError = true;
- }
- }
-
- if (selectorError)
- {
- item = (selectorItem1 == NULL ? selectorItem2 : selectorItem1);
-
- zstring selectorType = tm->create_value_type(item)->toSchemaString();
-
- RAISE_ERROR(err::XPTY0004, loc,
- ERROR_PARAMS(ZED(XPTY0004_JSONIQ_SELECTOR), selectorType));
- }
-
- if (isObjectNav)
- result = targetItem->getObjectValue(selectorItem3);
+ GenericCast::castToBuiltinAtomic(selectorItem3,
+ selectorItem2,
+ store::XS_INTEGER,
+ NULL,
+ loc);
+
+ result = targetItem->getArrayValue(selectorItem3->getIntegerValue());
+ }
+
+ STACK_PUSH(result != NULL, state);
+ }
+ } // there is a selector item
+ } // 1 argument
+ else // no arguments
+ {
+ if (targetItem->isObject())
+ state->theIterator = targetItem->getObjectKeys();
else
- result = targetItem->getArrayValue(selectorItem3->getIntegerValue());
- STACK_PUSH(result != NULL, state);
- }
- else
- {
- if (targetItem->isJSONArray())
state->theIterator = targetItem->getArrayValues();
- else if (targetItem->isJSONObject())
- state->theIterator = targetItem->getObjectKeys();
state->theIterator->open();
@@ -365,7 +371,7 @@
state->theIterator->close();
}
}
- else
+ else if (theSctx->language_kind() == StaticContextConsts::language_kind_xquery)
{
xqtref_t type = tm->create_value_type(targetItem);
=== modified file 'src/runtime/json/jsoniq_functions_impl.cpp'
--- src/runtime/json/jsoniq_functions_impl.cpp 2013-05-08 20:14:47 +0000
+++ src/runtime/json/jsoniq_functions_impl.cpp 2013-06-05 07:09:43 +0000
@@ -395,11 +395,11 @@
store::Item_t& aResult,
JSONDecodeFromRoundtripIteratorState* aState) const
{
- if (anItem->isJSONObject())
+ if (anItem->isObject())
{
return decodeObject(anItem, aResult, aState);
}
- else if (anItem->isJSONArray())
+ else if (anItem->isArray())
{
return decodeArray(anItem, aResult, aState);
}
@@ -672,11 +672,11 @@
store::Item_t& aResult,
JSONEncodeForRoundtripIteratorState* aState) const
{
- if (anItem->isJSONObject())
+ if (anItem->isObject())
{
return encodeObject(anItem, aResult, aState);
}
- else if (anItem->isJSONArray())
+ else if (anItem->isArray())
{
return encodeArray(anItem, aResult, aState);
}
@@ -757,10 +757,11 @@
/*******************************************************************************
+ fn-jsoniq:parse-json(source as xs:string?) as json-item()*
+ fn-jsoniq:parse-json(source as xs:string?, $options as $object()) as json-item()*
********************************************************************************/
-void
-JSONParseIteratorState::init(PlanState& aState)
+void JSONParseIteratorState::init(PlanState& aState)
{
PlanIteratorState::init(aState);
theAllowMultiple = true; // default
@@ -769,11 +770,12 @@
loader_ = nullptr;
}
-void
-JSONParseIteratorState::reset(PlanState& aState)
+
+void JSONParseIteratorState::reset(PlanState& aState)
{
PlanIteratorState::reset(aState);
- if (theInput == NULL) {
+ if (theInput == NULL)
+ {
delete theInputStream;
theInputStream = nullptr;
}
@@ -787,33 +789,34 @@
{
if (theInput == NULL)
delete theInputStream;
+
delete loader_;
}
-bool JSONParseIterator::processBooleanOption( store::Item_t const &options,
- char const *option_name,
- bool *option_value ) const
+bool JSONParseIterator::processBooleanOption(
+ const store::Item_t& options,
+ char const *option_name,
+ bool* option_value) const
{
store::Item_t i_option_name;
zstring z_option_name( option_name );
+
GENV_ITEMFACTORY->createString( i_option_name, z_option_name );
+
store::Item_t i_option_value = options->getObjectValue( i_option_name );
- if ( i_option_value ) {
+ if ( i_option_value )
+ {
store::SchemaTypeCode const option_type = i_option_value->getTypeCode();
- if ( !TypeOps::is_subtype( option_type, store::XS_BOOLEAN ) ) {
+
+ if ( !TypeOps::is_subtype( option_type, store::XS_BOOLEAN ) )
+ {
TypeManager const *const tm = theSctx->get_typemanager();
xqtref_t const option_type = tm->create_value_type( i_option_value, loc );
- throw XQUERY_EXCEPTION(
- jerr::JNTY0020,
- ERROR_PARAMS(
- option_type->toSchemaString(),
- z_option_name,
- "xs:boolean"
- ),
- ERROR_LOC( loc )
- );
+
+ RAISE_ERROR(jerr::JNTY0020, loc,
+ ERROR_PARAMS(option_type->toSchemaString(), z_option_name, "xs:boolean"));
}
*option_value = i_option_value->getBooleanValue();
return true;
@@ -822,10 +825,9 @@
}
-bool
-JSONParseIterator::nextImpl(
- store::Item_t& result,
- PlanState& planState) const
+bool JSONParseIterator::nextImpl(
+ store::Item_t& result,
+ PlanState& planState) const
{
store::Item_t lInput;
bool lStripTopLevelArray = false;
@@ -895,11 +897,186 @@
/*******************************************************************************
- json:names($o as object()) as xs:string*
+
+********************************************************************************/
+void JSONDocIteratorState::init(PlanState& aState)
+{
+ PlanIteratorState::init(aState);
+ theStream = nullptr;
+ theGotOne = false;
+ loader_ = nullptr;
+}
+
+
+void JSONDocIteratorState::reset(PlanState& aState)
+{
+ PlanIteratorState::reset(aState);
+ theGotOne = false;
+ delete loader_;
+ loader_ = nullptr;
+}
+
+
+JSONDocIteratorState::~JSONDocIteratorState()
+{
+ delete loader_;
+}
+
+
+bool JSONDocIterator::nextImpl(store::Item_t& result, PlanState& planState) const
+{
+ store::Item_t uriItem;
+ JSONDocIteratorState* state;
+ zstring uriString;
+ zstring lErrorMessage;
+ internal::StreamResource* lStreamResource;
+ zstring lNormUri;
+ DEFAULT_STACK_INIT(JSONDocIteratorState, state, planState);
+
+ if (consumeNext(uriItem, theChildren[0].getp(), planState))
+ {
+ uriItem->getStringValue2(uriString);
+ // Normalize input to handle filesystem paths, etc.
+ normalizeInputUri(uriString, theSctx, loc, &lNormUri);
+
+ // Resolve URI to a stream
+ state->theResource = theSctx->resolve_uri(
+ lNormUri,
+ internal::EntityData::DOCUMENT,
+ lErrorMessage);
+
+ lStreamResource =
+ dynamic_cast<internal::StreamResource*>(state->theResource.get());
+ if (lStreamResource == NULL)
+ {
+ throw XQUERY_EXCEPTION(
+ err::FODC0002,
+ ERROR_PARAMS(uriString, lErrorMessage),
+ ERROR_LOC(loc));
+ }
+
+ state->theStream = lStreamResource->getStream();
+ if (state->theStream == NULL)
+ {
+ throw XQUERY_EXCEPTION(
+ err::FODC0002,
+ ERROR_PARAMS( uriString ),
+ ERROR_LOC(loc));
+ }
+
+ state->theGotOne = false;
+ state->loader_ = new json::loader( *state->theStream, true );
+
+ while ( state->loader_->next( &result ) )
+ {
+ if (!state->theGotOne)
+ {
+ state->theGotOne = true;
+ STACK_PUSH(true, state);
+ }
+ else
+ {
+ RAISE_ERROR(jerr::JNDY0021, loc,
+ ERROR_PARAMS(ZED(JNDY0021_UnexpectedExtraContent)));
+ }
+ }
+ }
+
+ STACK_END(state);
+}
+
+
+/*******************************************************************************
+ op_zorba:json-item-accessor($i as item(), $sel as item()) as item()?
+
+ op_zorba:json-item-accessor($i as item()) as item()?
+
+ These two are zorba internal functions that are introduced by the translator
+ when translating a dynamic function invocation (DFI) expr and we know statically
+ that the source of the DFI is a json item, but we don't know if it's going to
+ be an object or an array.
+
+ Note: the translator always wraps the $sel param to with fn:data(), so we can
+ assume here that the selector item is atomic.
+********************************************************************************/
+bool JSONItemAccessorIterator::nextImpl(
+ store::Item_t& result,
+ PlanState& planState) const
+{
+ store::Item_t input;
+ store::Item_t selector;
+ store::Item_t selector2;
+
+ JSONItemAccessorIteratorState* state;
+ DEFAULT_STACK_INIT(JSONItemAccessorIteratorState, state, planState);
+
+ consumeNext(input, theChildren[0].getp(), planState);
+
+ if (input->isArray())
+ {
+ if (theChildren.size() == 2 &&
+ consumeNext(selector, theChildren[1].getp(), planState))
+ {
+ GenericCast::castToBuiltinAtomic(selector2,
+ selector,
+ store::XS_INTEGER,
+ NULL,
+ loc);
+
+ result = input->getArrayValue(selector2->getIntegerValue());
+
+ STACK_PUSH(result != 0, state);
+ }
+ else
+ {
+ state->theIterator = input->getArrayValues();
+
+ state->theIterator->open();
+ while (state->theIterator->next(result))
+ {
+ STACK_PUSH(true, state);
+ }
+ state->theIterator->close();
+ }
+ }
+ else if (input->isObject())
+ {
+ if (theChildren.size() == 2 &&
+ consumeNext(selector, theChildren[1].getp(), planState))
+ {
+ GenericCast::castToBuiltinAtomic(selector2,
+ selector,
+ store::XS_STRING,
+ NULL,
+ loc);
+
+ result = input->getObjectValue(selector2);
+
+ STACK_PUSH(result != 0, state);
+ }
+ else
+ {
+ state->theIterator = input->getObjectKeys();
+
+ state->theIterator->open();
+ while (state->theIterator->next(result))
+ {
+ STACK_PUSH(true, state);
+ }
+ state->theIterator->close();
+ }
+ }
+
+ STACK_END(state);
+}
+
+
+/*******************************************************************************
+ json:names($o as item()) as xs:string*
********************************************************************************/
bool JSONObjectNamesIterator::nextImpl(
- store::Item_t& result,
- PlanState& planState) const
+ store::Item_t& result,
+ PlanState& planState) const
{
store::Item_t input;
@@ -908,14 +1085,17 @@
consumeNext(input, theChild.getp(), planState);
- state->theNames = input->getObjectKeys();
- state->theNames->open();
-
- while (state->theNames->next(result))
+ if (input->isObject())
{
- STACK_PUSH (true, state);
+ state->theNames = input->getObjectKeys();
+ state->theNames->open();
+
+ while (state->theNames->next(result))
+ {
+ STACK_PUSH (true, state);
+ }
+ state->theNames = NULL;
}
- state->theNames = NULL;
STACK_END(state);
}
@@ -933,33 +1113,47 @@
ZORBA_ASSERT(consumeNext(obj, theChild.getp(), planState));
- count = obj->getNumObjectPairs();
-
+ if (obj->isObject())
+ {
+ count = obj->getNumObjectPairs();
+ }
+ else
+ {
+ count = 0;
+ }
+
STACK_PUSH(GENV_ITEMFACTORY->createInteger(result, count), state);
STACK_END(state);
}
/*******************************************************************************
- json:value($o as object(), $name as xs:string) as item()?
+ json:value($o as item(), $name as item()?) as item()?
+
+ Note: the translator always wraps the $name param to a [cast as xs:string?]
+ expr, so we don's have to check the type of the selector item here.
********************************************************************************/
-bool
-JSONObjectValueIterator::nextImpl(
+bool JSONObjectValueIterator::nextImpl(
store::Item_t& result,
PlanState& planState) const
{
- store::Item_t lInput;
- store::Item_t lName;
+ store::Item_t input;
+ store::Item_t name;
PlanIteratorState* state;
DEFAULT_STACK_INIT(PlanIteratorState, state, planState);
- consumeNext(lInput, theChild0.getp(), planState);
- consumeNext(lName, theChild1.getp(), planState);
-
- result = lInput->getObjectValue(lName);
-
- STACK_PUSH(result != 0, state);
+ consumeNext(input, theChild0.getp(), planState);
+
+ if (input->isObject())
+ {
+ if (consumeNext(name, theChild1.getp(), planState))
+ {
+ result = input->getObjectValue(name);
+
+ STACK_PUSH(result != NULL, state);
+ }
+ }
STACK_END(state);
}
@@ -968,8 +1162,7 @@
/*******************************************************************************
json:project($o as object(), $names as xs:string*) as object()
********************************************************************************/
-bool
-JSONObjectProjectIterator::nextImpl(
+bool JSONObjectProjectIterator::nextImpl(
store::Item_t& result,
PlanState& planState) const
{
@@ -1032,10 +1225,9 @@
/*******************************************************************************
j:size($i as array()) as xs:integer*
********************************************************************************/
-bool
-JSONArraySizeIterator::nextImpl(
- store::Item_t& result,
- PlanState& planState) const
+bool JSONArraySizeIterator::nextImpl(
+ store::Item_t& result,
+ PlanState& planState) const
{
store::Item_t lJSONItem;
xs_integer lSize;
@@ -1054,32 +1246,39 @@
/*******************************************************************************
- json:member($a as array(), $pos as xs:integer) as item()?
+ json:member($a as item(), $pos as item()?) as item()?
+
+ Note: the translator always wraps the $pos param to a [cast as xs:integer?]
+ expr, so we don's have to check the type of the selector item here.
********************************************************************************/
-bool
-JSONArrayMemberIterator::nextImpl(
- store::Item_t& result,
- PlanState& planState) const
+bool JSONArrayMemberIterator::nextImpl(
+ store::Item_t& result,
+ PlanState& planState) const
{
- store::Item_t lInput;
- store::Item_t lPosition;
+ store::Item_t input;
+ store::Item_t position;
PlanIteratorState* state;
DEFAULT_STACK_INIT(PlanIteratorState, state, planState);
- consumeNext(lInput, theChild0.getp(), planState);
- consumeNext(lPosition, theChild1.getp(), planState);
-
- result = lInput->getArrayValue(lPosition->getIntegerValue());
-
- STACK_PUSH(result != 0, state);
+ consumeNext(input, theChild0.getp(), planState);
+
+ if (input->isArray())
+ {
+ if (consumeNext(position, theChild1.getp(), planState))
+ {
+ result = input->getArrayValue(position->getIntegerValue());
+
+ STACK_PUSH(result != 0, state);
+ }
+ }
STACK_END(state);
}
/*******************************************************************************
- json:members($a as array()) as item()*
+ json:members($a as item()) as item()*
********************************************************************************/
bool JSONArrayMembersIterator::nextImpl(
store::Item_t& result,
@@ -1092,13 +1291,17 @@
consumeNext(array, theChild.getp(), planState);
- state->theMembers = array->getArrayValues();
- state->theMembers->open();
- while (state->theMembers->next(result))
+ if (array->isArray())
{
- STACK_PUSH(true, state);
+ state->theMembers = array->getArrayValues();
+
+ state->theMembers->open();
+ while (state->theMembers->next(result))
+ {
+ STACK_PUSH(true, state);
+ }
+ state->theMembers->close();
}
- state->theMembers->close();
STACK_END(state);
}
@@ -1115,13 +1318,21 @@
ZORBA_ASSERT(consumeNext(array, theChild.getp(), planState));
- STACK_PUSH(GENV_ITEMFACTORY->createInteger(result, array->getArraySize()), state);
+ if (array->isArray())
+ {
+ STACK_PUSH(GENV_ITEMFACTORY->createInteger(result, array->getArraySize()), state);
+ }
+ else
+ {
+ STACK_PUSH(GENV_ITEMFACTORY->createInteger(result, xs_integer(0)), state);
+ }
+
STACK_END(state);
}
/*******************************************************************************
- json:flatten($a as array()) as item()*
+ json:flatten($a as item()) as item()*
op-zorba:flatten-internal($a as item()*) as item()*
********************************************************************************/
@@ -1140,121 +1351,44 @@
PlanState& planState) const
{
store::Item_t item;
- bool lFoundArray = false;
+ bool foundArray = false;
JSONArrayFlattenIteratorState* state;
DEFAULT_STACK_INIT(JSONArrayFlattenIteratorState, state, planState);
consumeNext(item, theChild.getp(), planState);
- assert(item->isJSONArray());
-
- state->theStack.push(item->getArrayValues());
- state->theStack.top()->open();
-
- while (!state->theStack.empty())
+ if (item->isArray())
{
- while (state->theStack.top()->next(result))
+ state->theStack.push(item->getArrayValues());
+
+ state->theStack.top()->open();
+
+ while (!state->theStack.empty())
{
- if (result->isJSONArray())
+ while (state->theStack.top()->next(result))
{
- state->theStack.push(result->getArrayValues());
- state->theStack.top()->open();
- lFoundArray = true;
- break;
- }
+ if (result->isArray())
+ {
+ state->theStack.push(result->getArrayValues());
+ state->theStack.top()->open();
+
+ foundArray = true;
+ break;
+ }
- STACK_PUSH(true, state);
- }
-
- if (lFoundArray)
- {
- lFoundArray = false;
- continue;
- }
-
- state->theStack.top()->close();
- state->theStack.pop();
- }
-
- STACK_END(state);
-}
-
-
-/*******************************************************************************
- op_zorba:json-item-accessor($i as json-item(), $s as xs:anyAtomic) as item()?
-********************************************************************************/
-bool
-JSONItemAccessorIterator::nextImpl(
- store::Item_t& result,
- PlanState& planState) const
-{
- store::Item_t input;
- store::Item_t selector;
-
- const TypeManager* tm = theSctx->get_typemanager();
-
- JSONItemAccessorIteratorState* state;
- DEFAULT_STACK_INIT(JSONItemAccessorIteratorState, state, planState);
-
- consumeNext(input, theChildren[0].getp(), planState);
- ZORBA_ASSERT(input->isJSONArray() || input->isJSONObject());
-
- if (theChildren.size() == 2 &&
- consumeNext(selector, theChildren[1].getp(), planState))
- {
- if (input->isJSONArray())
- {
- store::SchemaTypeCode type = selector->getTypeCode();
-
- if (!TypeOps::is_subtype(type, store::XS_INTEGER))
- {
- xqtref_t type = tm->create_value_type(selector, loc);
-
- RAISE_ERROR(err::XPTY0004, loc,
- ERROR_PARAMS(ZED(XPTY0004_NoTypePromote_23),
- type->toSchemaString(),
- GENV_TYPESYSTEM.INTEGER_TYPE_ONE->toSchemaString()));
- }
-
- result = input->getArrayValue(selector->getIntegerValue());
- }
- else if (input->isJSONObject())
- {
- store::SchemaTypeCode type = selector->getTypeCode();
-
- if (!TypeOps::is_subtype(type, store::XS_STRING) &&
- !TypeOps::is_subtype(type, store::XS_UNTYPED_ATOMIC) &&
- !TypeOps::is_subtype(type, store::XS_ANY_URI))
- {
- xqtref_t type = tm->create_value_type(selector, loc);
-
- RAISE_ERROR(err::XPTY0004, loc,
- ERROR_PARAMS(ZED(XPTY0004_NoTypePromote_23),
- type->toSchemaString(),
- GENV_TYPESYSTEM.STRING_TYPE_ONE->toSchemaString()));
- }
-
- result = input->getObjectValue(selector);
- }
- STACK_PUSH(result != 0, state);
- }
- else
- {
- if (input->isJSONArray())
- {
- state->theIterator = input->getArrayValues();
- }
- else if (input->isJSONObject())
- {
- state->theIterator = input->getObjectKeys();
- }
- state->theIterator->open();
- while (state->theIterator->next(result))
- {
- STACK_PUSH(true, state);
- }
- state->theIterator->close();
+ STACK_PUSH(true, state);
+ }
+
+ if (foundArray)
+ {
+ foundArray = false;
+ continue;
+ }
+
+ state->theStack.top()->close();
+ state->theStack.pop();
+ }
}
STACK_END(state);
@@ -1264,10 +1398,9 @@
/*******************************************************************************
jn:null() as jn:null
********************************************************************************/
-bool
-JSONNullIterator::nextImpl(
- store::Item_t& result,
- PlanState& planState) const
+bool JSONNullIterator::nextImpl(
+ store::Item_t& result,
+ PlanState& planState) const
{
PlanIteratorState* state;
DEFAULT_STACK_INIT(PlanIteratorState, state, planState);
@@ -1281,10 +1414,9 @@
/*******************************************************************************
jn:is-null(xs:anyAtomicType) as xs:boolean
********************************************************************************/
-bool
-JSONIsNullIterator::nextImpl(
- store::Item_t& result,
- PlanState& planState) const
+bool JSONIsNullIterator::nextImpl(
+ store::Item_t& result,
+ PlanState& planState) const
{
PlanIteratorState* state;
store::Item_t lItem;
@@ -1308,8 +1440,8 @@
$c as object())
********************************************************************************/
bool JSONObjectInsertIterator::nextImpl(
- store::Item_t& result,
- PlanState& planState) const
+ store::Item_t& result,
+ PlanState& planState) const
{
store::Item_t target;
store::Item_t content;
@@ -1352,8 +1484,8 @@
$values as item()*,
********************************************************************************/
bool JSONArrayInsertIterator::nextImpl(
- store::Item_t& result,
- PlanState& planState) const
+ store::Item_t& result,
+ PlanState& planState) const
{
store::Item_t array;
store::Item_t member;
@@ -1402,8 +1534,8 @@
$values as item()*)
********************************************************************************/
bool JSONArrayAppendIterator::nextImpl(
- store::Item_t& result,
- PlanState& planState) const
+ store::Item_t& result,
+ PlanState& planState) const
{
store::Item_t array;
store::Item_t member;
@@ -1467,7 +1599,7 @@
pul = GENV_ITEMFACTORY->createPendingUpdateList();
- if (target->isJSONObject())
+ if (target->isObject())
{
store::SchemaTypeCode type = selector->getTypeCode();
@@ -1481,7 +1613,7 @@
pul->addJSONObjectDelete(&loc, target, selector);
}
- else if (target->isJSONArray())
+ else if (target->isArray())
{
store::SchemaTypeCode type = selector->getTypeCode();
@@ -1560,7 +1692,7 @@
pul = GENV_ITEMFACTORY->createPendingUpdateList();
- if (target->isJSONObject())
+ if (target->isObject())
{
store::SchemaTypeCode type = selector->getTypeCode();
@@ -1574,7 +1706,7 @@
pul->addJSONObjectReplaceValue(&loc, target, selector, newValue);
}
- else if (target->isJSONArray())
+ else if (target->isArray())
{
store::SchemaTypeCode type = selector->getTypeCode();
@@ -1604,8 +1736,8 @@
$newName as xs:string)
********************************************************************************/
bool JSONRenameIterator::nextImpl(
- store::Item_t& result,
- PlanState& planState) const
+ store::Item_t& result,
+ PlanState& planState) const
{
store::Item_t target;
store::Item_t name;
@@ -1635,8 +1767,8 @@
********************************************************************************/
bool JSONBoxIterator::nextImpl(
- store::Item_t& result,
- PlanState& planState) const
+ store::Item_t& result,
+ PlanState& planState) const
{
store::Item_t value1;
store::Item_t value2;
@@ -1668,92 +1800,7 @@
STACK_END(state);
}
-/*******************************************************************************
-
-********************************************************************************/
-
-void
-JSONDocIteratorState::init(PlanState& aState)
-{
- PlanIteratorState::init(aState);
- theStream = nullptr;
- theGotOne = false;
- loader_ = nullptr;
-}
-
-void
-JSONDocIteratorState::reset(PlanState& aState)
-{
- PlanIteratorState::reset(aState);
- theGotOne = false;
- delete loader_;
- loader_ = nullptr;
-}
-
-JSONDocIteratorState::~JSONDocIteratorState()
-{
- delete loader_;
-}
-
-bool JSONDocIterator::nextImpl(store::Item_t& result, PlanState& planState) const
-{
- store::Item_t uriItem;
- JSONDocIteratorState* state;
- zstring uriString;
- zstring lErrorMessage;
- internal::StreamResource* lStreamResource;
- zstring lNormUri;
- DEFAULT_STACK_INIT(JSONDocIteratorState, state, planState);
-
- if (consumeNext(uriItem, theChildren[0].getp(), planState))
- {
- uriItem->getStringValue2(uriString);
- // Normalize input to handle filesystem paths, etc.
- normalizeInputUri(uriString, theSctx, loc, &lNormUri);
-
- // Resolve URI to a stream
- state->theResource = theSctx->resolve_uri(
- lNormUri,
- internal::EntityData::DOCUMENT,
- lErrorMessage);
-
- lStreamResource =
- dynamic_cast<internal::StreamResource*>(state->theResource.get());
- if (lStreamResource == NULL) {
- throw XQUERY_EXCEPTION(
- err::FODC0002,
- ERROR_PARAMS(uriString, lErrorMessage),
- ERROR_LOC(loc));
- }
-
- state->theStream = lStreamResource->getStream();
- if (state->theStream == NULL) {
- throw XQUERY_EXCEPTION(
- err::FODC0002,
- ERROR_PARAMS( uriString ),
- ERROR_LOC(loc));
- }
-
- state->theGotOne = false;
- state->loader_ = new json::loader( *state->theStream, true );
-
- while ( state->loader_->next( &result ) )
- {
- if (!state->theGotOne)
- {
- state->theGotOne = true;
- STACK_PUSH(true, state);
- } else {
- RAISE_ERROR(
- jerr::JNDY0021,
- loc,
- ERROR_PARAMS(ZED(JNDY0021_UnexpectedExtraContent)));
- }
- }
- }
-
- STACK_END(state);
-}
+
} /* namespace zorba */
=== modified file 'src/runtime/json/pregenerated/jsoniq_functions.cpp'
--- src/runtime/json/pregenerated/jsoniq_functions.cpp 2013-04-05 22:56:02 +0000
+++ src/runtime/json/pregenerated/jsoniq_functions.cpp 2013-06-05 07:09:43 +0000
@@ -32,7 +32,6 @@
namespace zorba {
-#ifdef ZORBA_WITH_JSON
// <JSONDecodeFromRoundtripIterator>
SERIALIZABLE_CLASS_VERSIONS(JSONDecodeFromRoundtripIterator)
@@ -72,8 +71,7 @@
}
// </JSONDecodeFromRoundtripIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONEncodeForRoundtripIterator>
SERIALIZABLE_CLASS_VERSIONS(JSONEncodeForRoundtripIterator)
@@ -113,8 +111,7 @@
}
// </JSONEncodeForRoundtripIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONParseIterator>
SERIALIZABLE_CLASS_VERSIONS(JSONParseIterator)
@@ -146,8 +143,77 @@
// </JSONParseIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
+// <JSONDocIterator>
+SERIALIZABLE_CLASS_VERSIONS(JSONDocIterator)
+
+void JSONDocIterator::serialize(::zorba::serialization::Archiver& ar)
+{
+ serialize_baseclass(ar,
+ (NaryBaseIterator<JSONDocIterator, JSONDocIteratorState>*)this);
+}
+
+
+void JSONDocIterator::accept(PlanIterVisitor& v) const
+{
+ v.beginVisit(*this);
+
+ std::vector<PlanIter_t>::const_iterator lIter = theChildren.begin();
+ std::vector<PlanIter_t>::const_iterator lEnd = theChildren.end();
+ for ( ; lIter != lEnd; ++lIter ){
+ (*lIter)->accept(v);
+ }
+
+ v.endVisit(*this);
+}
+
+JSONDocIterator::~JSONDocIterator() {}
+
+JSONDocIteratorState::JSONDocIteratorState() {}
+
+// </JSONDocIterator>
+
+
+// <JSONItemAccessorIterator>
+SERIALIZABLE_CLASS_VERSIONS(JSONItemAccessorIterator)
+
+void JSONItemAccessorIterator::serialize(::zorba::serialization::Archiver& ar)
+{
+ serialize_baseclass(ar,
+ (NaryBaseIterator<JSONItemAccessorIterator, JSONItemAccessorIteratorState>*)this);
+}
+
+
+void JSONItemAccessorIterator::accept(PlanIterVisitor& v) const
+{
+ v.beginVisit(*this);
+
+ std::vector<PlanIter_t>::const_iterator lIter = theChildren.begin();
+ std::vector<PlanIter_t>::const_iterator lEnd = theChildren.end();
+ for ( ; lIter != lEnd; ++lIter ){
+ (*lIter)->accept(v);
+ }
+
+ v.endVisit(*this);
+}
+
+JSONItemAccessorIterator::~JSONItemAccessorIterator() {}
+
+JSONItemAccessorIteratorState::JSONItemAccessorIteratorState() {}
+
+JSONItemAccessorIteratorState::~JSONItemAccessorIteratorState() {}
+
+
+void JSONItemAccessorIteratorState::init(PlanState& planState) {
+ PlanIteratorState::init(planState);
+}
+
+void JSONItemAccessorIteratorState::reset(PlanState& planState) {
+ PlanIteratorState::reset(planState);
+}
+// </JSONItemAccessorIterator>
+
+
// <JSONObjectNamesIterator>
SERIALIZABLE_CLASS_VERSIONS(JSONObjectNamesIterator)
@@ -183,8 +249,7 @@
}
// </JSONObjectNamesIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONObjectValueIterator>
SERIALIZABLE_CLASS_VERSIONS(JSONObjectValueIterator)
@@ -209,8 +274,7 @@
// </JSONObjectValueIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONObjectProjectIterator>
SERIALIZABLE_CLASS_VERSIONS(JSONObjectProjectIterator)
@@ -235,33 +299,7 @@
// </JSONObjectProjectIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
-// <JSONArraySizeIterator>
-SERIALIZABLE_CLASS_VERSIONS(JSONArraySizeIterator)
-
-void JSONArraySizeIterator::serialize(::zorba::serialization::Archiver& ar)
-{
- serialize_baseclass(ar,
- (UnaryBaseIterator<JSONArraySizeIterator, PlanIteratorState>*)this);
-}
-
-
-void JSONArraySizeIterator::accept(PlanIterVisitor& v) const
-{
- v.beginVisit(*this);
-
- theChild->accept(v);
-
- v.endVisit(*this);
-}
-
-JSONArraySizeIterator::~JSONArraySizeIterator() {}
-
-// </JSONArraySizeIterator>
-
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONArrayMemberIterator>
SERIALIZABLE_CLASS_VERSIONS(JSONArrayMemberIterator)
@@ -286,8 +324,7 @@
// </JSONArrayMemberIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONArrayMembersIterator>
SERIALIZABLE_CLASS_VERSIONS(JSONArrayMembersIterator)
@@ -323,8 +360,31 @@
}
// </JSONArrayMembersIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
+// <JSONArraySizeIterator>
+SERIALIZABLE_CLASS_VERSIONS(JSONArraySizeIterator)
+
+void JSONArraySizeIterator::serialize(::zorba::serialization::Archiver& ar)
+{
+ serialize_baseclass(ar,
+ (UnaryBaseIterator<JSONArraySizeIterator, PlanIteratorState>*)this);
+}
+
+
+void JSONArraySizeIterator::accept(PlanIterVisitor& v) const
+{
+ v.beginVisit(*this);
+
+ theChild->accept(v);
+
+ v.endVisit(*this);
+}
+
+JSONArraySizeIterator::~JSONArraySizeIterator() {}
+
+// </JSONArraySizeIterator>
+
+
// <JSONArrayFlattenIterator>
SERIALIZABLE_CLASS_VERSIONS(JSONArrayFlattenIterator)
@@ -356,80 +416,7 @@
}
// </JSONArrayFlattenIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
-// <JSONDocIterator>
-SERIALIZABLE_CLASS_VERSIONS(JSONDocIterator)
-
-void JSONDocIterator::serialize(::zorba::serialization::Archiver& ar)
-{
- serialize_baseclass(ar,
- (NaryBaseIterator<JSONDocIterator, JSONDocIteratorState>*)this);
-}
-
-
-void JSONDocIterator::accept(PlanIterVisitor& v) const
-{
- v.beginVisit(*this);
-
- std::vector<PlanIter_t>::const_iterator lIter = theChildren.begin();
- std::vector<PlanIter_t>::const_iterator lEnd = theChildren.end();
- for ( ; lIter != lEnd; ++lIter ){
- (*lIter)->accept(v);
- }
-
- v.endVisit(*this);
-}
-
-JSONDocIterator::~JSONDocIterator() {}
-
-JSONDocIteratorState::JSONDocIteratorState() {}
-
-// </JSONDocIterator>
-
-#endif
-#ifdef ZORBA_WITH_JSON
-// <JSONItemAccessorIterator>
-SERIALIZABLE_CLASS_VERSIONS(JSONItemAccessorIterator)
-
-void JSONItemAccessorIterator::serialize(::zorba::serialization::Archiver& ar)
-{
- serialize_baseclass(ar,
- (NaryBaseIterator<JSONItemAccessorIterator, JSONItemAccessorIteratorState>*)this);
-}
-
-
-void JSONItemAccessorIterator::accept(PlanIterVisitor& v) const
-{
- v.beginVisit(*this);
-
- std::vector<PlanIter_t>::const_iterator lIter = theChildren.begin();
- std::vector<PlanIter_t>::const_iterator lEnd = theChildren.end();
- for ( ; lIter != lEnd; ++lIter ){
- (*lIter)->accept(v);
- }
-
- v.endVisit(*this);
-}
-
-JSONItemAccessorIterator::~JSONItemAccessorIterator() {}
-
-JSONItemAccessorIteratorState::JSONItemAccessorIteratorState() {}
-
-JSONItemAccessorIteratorState::~JSONItemAccessorIteratorState() {}
-
-
-void JSONItemAccessorIteratorState::init(PlanState& planState) {
- PlanIteratorState::init(planState);
-}
-
-void JSONItemAccessorIteratorState::reset(PlanState& planState) {
- PlanIteratorState::reset(planState);
-}
-// </JSONItemAccessorIterator>
-
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONNullIterator>
SERIALIZABLE_CLASS_VERSIONS(JSONNullIterator)
@@ -453,8 +440,7 @@
// </JSONNullIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONIsNullIterator>
SERIALIZABLE_CLASS_VERSIONS(JSONIsNullIterator)
@@ -478,8 +464,7 @@
// </JSONIsNullIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONObjectInsertIterator>
SERIALIZABLE_CLASS_VERSIONS(JSONObjectInsertIterator)
@@ -507,8 +492,7 @@
// </JSONObjectInsertIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONArrayInsertIterator>
SERIALIZABLE_CLASS_VERSIONS(JSONArrayInsertIterator)
@@ -536,8 +520,7 @@
// </JSONArrayInsertIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONDeleteIterator>
SERIALIZABLE_CLASS_VERSIONS(JSONDeleteIterator)
@@ -565,8 +548,7 @@
// </JSONDeleteIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONReplaceValueIterator>
SERIALIZABLE_CLASS_VERSIONS(JSONReplaceValueIterator)
@@ -596,8 +578,7 @@
// </JSONReplaceValueIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONRenameIterator>
SERIALIZABLE_CLASS_VERSIONS(JSONRenameIterator)
@@ -625,8 +606,7 @@
// </JSONRenameIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONArrayAppendIterator>
SERIALIZABLE_CLASS_VERSIONS(JSONArrayAppendIterator)
@@ -654,8 +634,7 @@
// </JSONArrayAppendIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONBoxIterator>
SERIALIZABLE_CLASS_VERSIONS(JSONBoxIterator)
@@ -679,7 +658,7 @@
// </JSONBoxIterator>
-#endif
+
}
=== modified file 'src/runtime/json/pregenerated/jsoniq_functions.h'
--- src/runtime/json/pregenerated/jsoniq_functions.h 2013-04-05 22:56:02 +0000
+++ src/runtime/json/pregenerated/jsoniq_functions.h 2013-06-05 07:09:43 +0000
@@ -35,7 +35,6 @@
namespace zorba {
-#ifdef ZORBA_WITH_JSON
/**
*
* Author:
@@ -85,9 +84,7 @@
bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
};
-#endif
-#ifdef ZORBA_WITH_JSON
/**
*
* Author:
@@ -138,9 +135,7 @@
bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
};
-#endif
-#ifdef ZORBA_WITH_JSON
/**
*
* Author:
@@ -193,9 +188,96 @@
bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
};
-#endif
-
-#ifdef ZORBA_WITH_JSON
+
+/**
+ * jn:json-doc
+ * Author: Zorba Team
+ */
+class JSONDocIteratorState : public PlanIteratorState
+{
+public:
+ std::auto_ptr<internal::Resource> theResource; //
+ std::istream* theStream; //
+ bool theGotOne; //
+ json::loader* loader_; //
+
+ JSONDocIteratorState();
+
+ ~JSONDocIteratorState();
+
+ void init(PlanState&);
+ void reset(PlanState&);
+};
+
+class JSONDocIterator : public NaryBaseIterator<JSONDocIterator, JSONDocIteratorState>
+{
+public:
+ SERIALIZABLE_CLASS(JSONDocIterator);
+
+ SERIALIZABLE_CLASS_CONSTRUCTOR2T(JSONDocIterator,
+ NaryBaseIterator<JSONDocIterator, JSONDocIteratorState>);
+
+ void serialize( ::zorba::serialization::Archiver& ar);
+
+ JSONDocIterator(
+ static_context* sctx,
+ const QueryLoc& loc,
+ std::vector<PlanIter_t>& children)
+ :
+ NaryBaseIterator<JSONDocIterator, JSONDocIteratorState>(sctx, loc, children)
+ {}
+
+ virtual ~JSONDocIterator();
+
+ void accept(PlanIterVisitor& v) const;
+
+ bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
+};
+
+
+/**
+ *
+ * Author:
+ */
+class JSONItemAccessorIteratorState : public PlanIteratorState
+{
+public:
+ store::Iterator_t theIterator; //
+
+ JSONItemAccessorIteratorState();
+
+ ~JSONItemAccessorIteratorState();
+
+ void init(PlanState&);
+ void reset(PlanState&);
+};
+
+class JSONItemAccessorIterator : public NaryBaseIterator<JSONItemAccessorIterator, JSONItemAccessorIteratorState>
+{
+public:
+ SERIALIZABLE_CLASS(JSONItemAccessorIterator);
+
+ SERIALIZABLE_CLASS_CONSTRUCTOR2T(JSONItemAccessorIterator,
+ NaryBaseIterator<JSONItemAccessorIterator, JSONItemAccessorIteratorState>);
+
+ void serialize( ::zorba::serialization::Archiver& ar);
+
+ JSONItemAccessorIterator(
+ static_context* sctx,
+ const QueryLoc& loc,
+ std::vector<PlanIter_t>& children)
+ :
+ NaryBaseIterator<JSONItemAccessorIterator, JSONItemAccessorIteratorState>(sctx, loc, children)
+ {}
+
+ virtual ~JSONItemAccessorIterator();
+
+ void accept(PlanIterVisitor& v) const;
+
+ bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
+};
+
+
/**
*
* Author:
@@ -240,9 +322,7 @@
bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
};
-#endif
-#ifdef ZORBA_WITH_JSON
/**
*
* Author:
@@ -272,9 +352,7 @@
bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
};
-#endif
-#ifdef ZORBA_WITH_JSON
/**
*
* Author:
@@ -304,41 +382,7 @@
bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
};
-#endif
-
-#ifdef ZORBA_WITH_JSON
-/**
- *
- * Author:
- */
-class JSONArraySizeIterator : public UnaryBaseIterator<JSONArraySizeIterator, PlanIteratorState>
-{
-public:
- SERIALIZABLE_CLASS(JSONArraySizeIterator);
-
- SERIALIZABLE_CLASS_CONSTRUCTOR2T(JSONArraySizeIterator,
- UnaryBaseIterator<JSONArraySizeIterator, PlanIteratorState>);
-
- void serialize( ::zorba::serialization::Archiver& ar);
-
- JSONArraySizeIterator(
- static_context* sctx,
- const QueryLoc& loc,
- PlanIter_t& child)
- :
- UnaryBaseIterator<JSONArraySizeIterator, PlanIteratorState>(sctx, loc, child)
- {}
-
- virtual ~JSONArraySizeIterator();
-
- void accept(PlanIterVisitor& v) const;
-
- bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
-};
-
-#endif
-
-#ifdef ZORBA_WITH_JSON
+
/**
*
* Author:
@@ -368,9 +412,7 @@
bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
};
-#endif
-#ifdef ZORBA_WITH_JSON
/**
*
* Author:
@@ -415,9 +457,37 @@
bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
};
-#endif
-
-#ifdef ZORBA_WITH_JSON
+
+/**
+ *
+ * Author:
+ */
+class JSONArraySizeIterator : public UnaryBaseIterator<JSONArraySizeIterator, PlanIteratorState>
+{
+public:
+ SERIALIZABLE_CLASS(JSONArraySizeIterator);
+
+ SERIALIZABLE_CLASS_CONSTRUCTOR2T(JSONArraySizeIterator,
+ UnaryBaseIterator<JSONArraySizeIterator, PlanIteratorState>);
+
+ void serialize( ::zorba::serialization::Archiver& ar);
+
+ JSONArraySizeIterator(
+ static_context* sctx,
+ const QueryLoc& loc,
+ PlanIter_t& child)
+ :
+ UnaryBaseIterator<JSONArraySizeIterator, PlanIteratorState>(sctx, loc, child)
+ {}
+
+ virtual ~JSONArraySizeIterator();
+
+ void accept(PlanIterVisitor& v) const;
+
+ bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
+};
+
+
/**
*
* jsoniq:flatten function
@@ -462,102 +532,7 @@
bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
};
-#endif
-
-#ifdef ZORBA_WITH_JSON
-/**
- * jn:json-doc
- * Author: Zorba Team
- */
-class JSONDocIteratorState : public PlanIteratorState
-{
-public:
- std::auto_ptr<internal::Resource> theResource; //
- std::istream* theStream; //
- bool theGotOne; //
- json::loader* loader_; //
-
- JSONDocIteratorState();
-
- ~JSONDocIteratorState();
-
- void init(PlanState&);
- void reset(PlanState&);
-};
-
-class JSONDocIterator : public NaryBaseIterator<JSONDocIterator, JSONDocIteratorState>
-{
-public:
- SERIALIZABLE_CLASS(JSONDocIterator);
-
- SERIALIZABLE_CLASS_CONSTRUCTOR2T(JSONDocIterator,
- NaryBaseIterator<JSONDocIterator, JSONDocIteratorState>);
-
- void serialize( ::zorba::serialization::Archiver& ar);
-
- JSONDocIterator(
- static_context* sctx,
- const QueryLoc& loc,
- std::vector<PlanIter_t>& children)
- :
- NaryBaseIterator<JSONDocIterator, JSONDocIteratorState>(sctx, loc, children)
- {}
-
- virtual ~JSONDocIterator();
-
- void accept(PlanIterVisitor& v) const;
-
- bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
-};
-
-#endif
-
-#ifdef ZORBA_WITH_JSON
-/**
- *
- * Author:
- */
-class JSONItemAccessorIteratorState : public PlanIteratorState
-{
-public:
- store::Iterator_t theIterator; //
-
- JSONItemAccessorIteratorState();
-
- ~JSONItemAccessorIteratorState();
-
- void init(PlanState&);
- void reset(PlanState&);
-};
-
-class JSONItemAccessorIterator : public NaryBaseIterator<JSONItemAccessorIterator, JSONItemAccessorIteratorState>
-{
-public:
- SERIALIZABLE_CLASS(JSONItemAccessorIterator);
-
- SERIALIZABLE_CLASS_CONSTRUCTOR2T(JSONItemAccessorIterator,
- NaryBaseIterator<JSONItemAccessorIterator, JSONItemAccessorIteratorState>);
-
- void serialize( ::zorba::serialization::Archiver& ar);
-
- JSONItemAccessorIterator(
- static_context* sctx,
- const QueryLoc& loc,
- std::vector<PlanIter_t>& children)
- :
- NaryBaseIterator<JSONItemAccessorIterator, JSONItemAccessorIteratorState>(sctx, loc, children)
- {}
-
- virtual ~JSONItemAccessorIterator();
-
- void accept(PlanIterVisitor& v) const;
-
- bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
-};
-
-#endif
-
-#ifdef ZORBA_WITH_JSON
+
/**
*
* Author:
@@ -586,9 +561,7 @@
bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
};
-#endif
-#ifdef ZORBA_WITH_JSON
/**
*
* Author:
@@ -618,9 +591,7 @@
bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
};
-#endif
-#ifdef ZORBA_WITH_JSON
/**
*
* internal function
@@ -652,9 +623,7 @@
bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
};
-#endif
-#ifdef ZORBA_WITH_JSON
/**
*
* internal function
@@ -686,9 +655,7 @@
bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
};
-#endif
-#ifdef ZORBA_WITH_JSON
/**
*
* json:delete-member
@@ -720,9 +687,7 @@
bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
};
-#endif
-#ifdef ZORBA_WITH_JSON
/**
*
* internal function
@@ -755,9 +720,7 @@
bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
};
-#endif
-#ifdef ZORBA_WITH_JSON
/**
*
*
@@ -789,9 +752,7 @@
bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
};
-#endif
-#ifdef ZORBA_WITH_JSON
/**
*
* internal function
@@ -823,9 +784,7 @@
bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
};
-#endif
-#ifdef ZORBA_WITH_JSON
/**
*
*
@@ -857,7 +816,6 @@
bool nextImpl(store::Item_t& result, PlanState& aPlanState) const;
};
-#endif
}
#endif
=== modified file 'src/runtime/pregenerated/iterator_enum.h'
--- src/runtime/pregenerated/iterator_enum.h 2013-06-04 21:47:40 +0000
+++ src/runtime/pregenerated/iterator_enum.h 2013-06-05 07:09:43 +0000
@@ -167,15 +167,15 @@
TYPE_JSONDecodeFromRoundtripIterator,
TYPE_JSONEncodeForRoundtripIterator,
TYPE_JSONParseIterator,
+ TYPE_JSONDocIterator,
+ TYPE_JSONItemAccessorIterator,
TYPE_JSONObjectNamesIterator,
TYPE_JSONObjectValueIterator,
TYPE_JSONObjectProjectIterator,
- TYPE_JSONArraySizeIterator,
TYPE_JSONArrayMemberIterator,
TYPE_JSONArrayMembersIterator,
+ TYPE_JSONArraySizeIterator,
TYPE_JSONArrayFlattenIterator,
- TYPE_JSONDocIterator,
- TYPE_JSONItemAccessorIterator,
TYPE_JSONNullIterator,
TYPE_JSONIsNullIterator,
TYPE_JSONObjectInsertIterator,
=== modified file 'src/runtime/sequences/sequences_impl.cpp'
--- src/runtime/sequences/sequences_impl.cpp 2013-05-21 21:44:25 +0000
+++ src/runtime/sequences/sequences_impl.cpp 2013-06-05 07:09:43 +0000
@@ -1123,8 +1123,8 @@
XQPCollator* collator,
int timezone)
{
- assert(item1->isJSONObject());
- assert(item2->isJSONObject());
+ assert(item1->isObject());
+ assert(item2->isObject());
if (item1->getNumObjectPairs() != item2->getNumObjectPairs())
return false;
@@ -1159,8 +1159,8 @@
XQPCollator* collator,
int timezone)
{
- assert(item1->isJSONArray());
- assert(item2->isJSONArray());
+ assert(item1->isArray());
+ assert(item2->isArray());
if (item1->getArraySize() != item2->getArraySize())
return false;
@@ -1231,16 +1231,13 @@
{
return DeepEqualNodes(loc, sctx, item1, item2, collator, timezone);
}
- case store::Item::JSONIQ:
- {
- if (item1->isJSONObject())
- {
- return DeepEqualObjects(loc, sctx, item1, item2, collator, timezone);
- }
- else
- {
- return DeepEqualArrays(loc, sctx, item1, item2, collator, timezone);
- }
+ case store::Item::OBJECT:
+ {
+ return DeepEqualObjects(loc, sctx, item1, item2, collator, timezone);
+ }
+ case store::Item::ARRAY:
+ {
+ return DeepEqualArrays(loc, sctx, item1, item2, collator, timezone);
}
default:
{
=== modified file 'src/runtime/spec/json/jsoniq_functions.xml'
--- src/runtime/spec/json/jsoniq_functions.xml 2013-04-05 22:56:02 +0000
+++ src/runtime/spec/json/jsoniq_functions.xml 2013-06-05 07:09:43 +0000
@@ -18,8 +18,7 @@
/*******************************************************************************
********************************************************************************/
-->
-<zorba:iterator name="JSONDecodeFromRoundtripIterator"
- preprocessorGuard="#ifdef ZORBA_WITH_JSON">
+<zorba:iterator name="JSONDecodeFromRoundtripIterator">
<zorba:function isDeterministic="true">
@@ -88,8 +87,7 @@
/*******************************************************************************
********************************************************************************/
-->
-<zorba:iterator name="JSONEncodeForRoundtripIterator"
- preprocessorGuard="#ifdef ZORBA_WITH_JSON">
+<zorba:iterator name="JSONEncodeForRoundtripIterator">
<zorba:function isDeterministic="true">
@@ -154,8 +152,7 @@
/*******************************************************************************
********************************************************************************/
-->
-<zorba:iterator name="JSONParseIterator" arity="nary"
- preprocessorGuard="#ifdef ZORBA_WITH_JSON">
+<zorba:iterator name="JSONParseIterator" arity="nary">
<zorba:function isDeterministic="true" generateCodegen="false">
<zorba:signature localname="parse-json" prefix="fn-jsoniq">
@@ -203,13 +200,79 @@
/*******************************************************************************
********************************************************************************/
-->
-<zorba:iterator name="JSONObjectNamesIterator" arity="unary"
- preprocessorGuard="#ifdef ZORBA_WITH_JSON">
+<zorba:iterator name="JSONDocIterator">
+
+ <zorba:description author="Zorba Team">jn:json-doc</zorba:description>
+
+ <zorba:function>
+
+ <zorba:signature localname="json-doc" prefix="fn-jsoniq">
+ <zorba:param>xs:string?</zorba:param>
+ <zorba:output>json-item()*</zorba:output>
+ </zorba:signature>
+
+ <zorba:methods>
+ <zorba:accessesDynCtx returnValue="true"/>
+ <zorba:isSource returnValue="true"/>
+ </zorba:methods>
+
+ </zorba:function>
+
+ <zorba:state generateInit="false" generateReset="false" generateDestructor="false">
+ <zorba:member type="std::auto_ptr<internal::Resource>" name="theResource" brief=""/>
+ <zorba:member type="std::istream*" name="theStream" brief=""/>
+ <zorba:member type="bool" name="theGotOne" brief=""/>
+ <zorba:member type="json::loader*" name="loader_" brief=""/>
+ </zorba:state>
+
+</zorba:iterator>
+
+
+
+<!--
+/*******************************************************************************
+********************************************************************************/
+-->
+<zorba:iterator name="JSONItemAccessorIterator">
+
+ <zorba:function isDeterministic="true">
+
+ <zorba:signature localname="json-item-accessor" prefix="op-zorba">
+ <zorba:param>item()</zorba:param>
+ <zorba:output>item()*</zorba:output>
+ </zorba:signature>
+
+ <zorba:signature localname="json-item-accessor" prefix="op-zorba">
+ <zorba:param>item()</zorba:param>
+ <zorba:param>item()?</zorba:param>
+ <zorba:output>item()?</zorba:output>
+ </zorba:signature>
+
+ <zorba:methods>
+ <zorba:propagatesInputNodes producer="0"/>
+ <zorba:mustCopyInputNodes value="false"/>
+ </zorba:methods>
+
+ </zorba:function>
+
+ <zorba:state>
+ <zorba:member type="store::Iterator_t" name="theIterator" brief=""/>
+ </zorba:state>
+
+</zorba:iterator>
+
+
+
+<!--
+/*******************************************************************************
+********************************************************************************/
+-->
+<zorba:iterator name="JSONObjectNamesIterator" arity="unary">
<zorba:function isDeterministic="true">
<zorba:signature localname="keys" prefix="fn-jsoniq">
- <zorba:param>object()</zorba:param>
+ <zorba:param>item()</zorba:param>
<zorba:output>xs:string*</zorba:output>
</zorba:signature>
@@ -236,14 +299,13 @@
/*******************************************************************************
********************************************************************************/
-->
-<zorba:iterator name="JSONObjectValueIterator" arity="binary"
- preprocessorGuard="#ifdef ZORBA_WITH_JSON">
+<zorba:iterator name="JSONObjectValueIterator" arity="binary">
<zorba:function isDeterministic="true">
<zorba:signature localname="value" prefix="fn-jsoniq">
- <zorba:param>object()</zorba:param>
- <zorba:param>xs:string</zorba:param>
+ <zorba:param>item()</zorba:param>
+ <zorba:param>item()?</zorba:param>
<zorba:output>item()?</zorba:output>
</zorba:signature>
@@ -261,8 +323,7 @@
/*******************************************************************************
********************************************************************************/
-->
-<zorba:iterator name="JSONObjectProjectIterator" arity="binary"
- preprocessorGuard="#ifdef ZORBA_WITH_JSON">
+<zorba:iterator name="JSONObjectProjectIterator" arity="binary">
<zorba:function isDeterministic="true">
@@ -286,37 +347,13 @@
/*******************************************************************************
********************************************************************************/
-->
-<zorba:iterator name="JSONArraySizeIterator" arity="unary"
- preprocessorGuard="#ifdef ZORBA_WITH_JSON">
-
- <zorba:function isDeterministic="true">
- <zorba:signature localname="size" prefix="fn-jsoniq">
- <zorba:param>array()</zorba:param>
- <zorba:output>xs:integer</zorba:output>
- </zorba:signature>
-
- <zorba:methods>
- <zorba:propagatesInputNodes value="false"/>
- <zorba:mustCopyInputNodes value="false"/>
- </zorba:methods>
-
- </zorba:function>
-
-</zorba:iterator>
-
-
-<!--
-/*******************************************************************************
-********************************************************************************/
--->
-<zorba:iterator name="JSONArrayMemberIterator" arity="binary"
- preprocessorGuard="#ifdef ZORBA_WITH_JSON">
+<zorba:iterator name="JSONArrayMemberIterator" arity="binary">
<zorba:function isDeterministic="true">
<zorba:signature localname="member" prefix="fn-jsoniq">
- <zorba:param>array()</zorba:param>
- <zorba:param>xs:integer</zorba:param>
+ <zorba:param>item()</zorba:param>
+ <zorba:param>item()?</zorba:param>
<zorba:output>item()?</zorba:output>
</zorba:signature>
@@ -334,13 +371,12 @@
/*******************************************************************************
********************************************************************************/
-->
-<zorba:iterator name="JSONArrayMembersIterator" arity="unary"
- preprocessorGuard="#ifdef ZORBA_WITH_JSON">
+<zorba:iterator name="JSONArrayMembersIterator" arity="unary">
<zorba:function isDeterministic="true">
<zorba:signature localname="members" prefix="fn-jsoniq">
- <zorba:param>array()</zorba:param>
+ <zorba:param>item()</zorba:param>
<zorba:output>item()*</zorba:output>
</zorba:signature>
@@ -367,8 +403,29 @@
/*******************************************************************************
********************************************************************************/
-->
-<zorba:iterator name="JSONArrayFlattenIterator" arity="unary"
- preprocessorGuard="#ifdef ZORBA_WITH_JSON">
+<zorba:iterator name="JSONArraySizeIterator" arity="unary">
+
+ <zorba:function isDeterministic="true">
+ <zorba:signature localname="size" prefix="fn-jsoniq">
+ <zorba:param>array()</zorba:param>
+ <zorba:output>xs:integer</zorba:output>
+ </zorba:signature>
+
+ <zorba:methods>
+ <zorba:propagatesInputNodes value="false"/>
+ <zorba:mustCopyInputNodes value="false"/>
+ </zorba:methods>
+
+ </zorba:function>
+
+</zorba:iterator>
+
+
+<!--
+/*******************************************************************************
+********************************************************************************/
+-->
+<zorba:iterator name="JSONArrayFlattenIterator" arity="unary">
<zorba:description author="Zorba Team">
jsoniq:flatten function
@@ -377,7 +434,7 @@
<zorba:function isDeterministic="true">
<zorba:signature localname="flatten" prefix="fn-jsoniq">
- <zorba:param>array()</zorba:param>
+ <zorba:param>item()</zorba:param>
<zorba:output>item()*</zorba:output>
</zorba:signature>
@@ -394,78 +451,12 @@
</zorba:iterator>
-<!--
-/*******************************************************************************
-********************************************************************************/
--->
-<zorba:iterator name="JSONDocIterator"
- preprocessorGuard="#ifdef ZORBA_WITH_JSON">
-
- <zorba:description author="Zorba Team">jn:json-doc</zorba:description>
-
- <zorba:function>
-
- <zorba:signature localname="json-doc" prefix="fn-jsoniq">
- <zorba:param>xs:string?</zorba:param>
- <zorba:output>json-item()*</zorba:output>
- </zorba:signature>
-
- <zorba:methods>
- <zorba:accessesDynCtx returnValue="true"/>
- <zorba:isSource returnValue="true"/>
- </zorba:methods>
-
- </zorba:function>
-
- <zorba:state generateInit="false" generateReset="false" generateDestructor="false">
- <zorba:member type="std::auto_ptr<internal::Resource>" name="theResource" brief=""/>
- <zorba:member type="std::istream*" name="theStream" brief=""/>
- <zorba:member type="bool" name="theGotOne" brief=""/>
- <zorba:member type="json::loader*" name="loader_" brief=""/>
- </zorba:state>
-
-</zorba:iterator>
-
-<!--
-/*******************************************************************************
-********************************************************************************/
--->
-<zorba:iterator name="JSONItemAccessorIterator"
- preprocessorGuard="#ifdef ZORBA_WITH_JSON">
-
- <zorba:function isDeterministic="true">
-
- <zorba:signature localname="json-item-accessor" prefix="op-zorba">
- <zorba:param>json-item()</zorba:param>
- <zorba:output>item()*</zorba:output>
- </zorba:signature>
-
- <zorba:signature localname="json-item-accessor" prefix="op-zorba">
- <zorba:param>json-item()</zorba:param>
- <zorba:param>xs:anyAtomicType</zorba:param>
- <zorba:output>item()?</zorba:output>
- </zorba:signature>
-
- <zorba:methods>
- <zorba:propagatesInputNodes producer="0"/>
- <zorba:mustCopyInputNodes value="false"/>
- </zorba:methods>
-
- </zorba:function>
-
- <zorba:state>
- <zorba:member type="store::Iterator_t" name="theIterator" brief=""/>
- </zorba:state>
-
-</zorba:iterator>
-
-
-<!--
-/*******************************************************************************
-********************************************************************************/
--->
- <zorba:iterator name="JSONNullIterator" arity="noary"
- preprocessorGuard="#ifdef ZORBA_WITH_JSON">
+
+<!--
+/*******************************************************************************
+********************************************************************************/
+-->
+ <zorba:iterator name="JSONNullIterator" arity="noary">
<zorba:function isDeterministic="true">
<zorba:signature localname="null" prefix="fn-jsoniq">
@@ -481,8 +472,7 @@
/*******************************************************************************
********************************************************************************/
-->
- <zorba:iterator name="JSONIsNullIterator" arity="unary"
- preprocessorGuard="#ifdef ZORBA_WITH_JSON">
+ <zorba:iterator name="JSONIsNullIterator" arity="unary">
<zorba:function isDeterministic="true">
<zorba:signature localname="is-null" prefix="fn-jsoniq">
@@ -499,8 +489,7 @@
/*******************************************************************************
********************************************************************************/
-->
-<zorba:iterator name="JSONObjectInsertIterator" arity="nary"
- preprocessorGuard="#ifdef ZORBA_WITH_JSON">
+<zorba:iterator name="JSONObjectInsertIterator" arity="nary">
<zorba:description author="Zorba Team">
internal function
@@ -530,8 +519,7 @@
********************************************************************************/
-->
<zorba:iterator name="JSONArrayInsertIterator"
- arity="nary"
- preprocessorGuard="#ifdef ZORBA_WITH_JSON">
+ arity="nary">
<zorba:description author="Zorba Team">
internal function
@@ -562,8 +550,7 @@
********************************************************************************/
-->
<zorba:iterator name="JSONDeleteIterator"
- arity="nary"
- preprocessorGuard="#ifdef ZORBA_WITH_JSON">
+ arity="nary">
<zorba:description author="Zorba Team">
json:delete-member
@@ -592,7 +579,6 @@
********************************************************************************/
-->
<zorba:iterator name="JSONReplaceValueIterator" arity="nary"
- preprocessorGuard="#ifdef ZORBA_WITH_JSON"
generateConstructor="false">
<zorba:description author="Zorba Team">
@@ -630,8 +616,7 @@
********************************************************************************/
-->
<zorba:iterator name="JSONRenameIterator"
- arity="nary"
- preprocessorGuard="#ifdef ZORBA_WITH_JSON">
+ arity="nary">
<zorba:description author="Zorba Team">
@@ -660,8 +645,7 @@
********************************************************************************/
-->
<zorba:iterator name="JSONArrayAppendIterator"
- arity="nary"
- preprocessorGuard="#ifdef ZORBA_WITH_JSON">
+ arity="nary">
<zorba:description author="Zorba Team">
internal function
@@ -691,8 +675,7 @@
********************************************************************************/
-->
<zorba:iterator name="JSONBoxIterator"
- arity="unary"
- preprocessorGuard="#ifdef ZORBA_WITH_JSON">
+ arity="unary">
<zorba:description author="Zorba Team">
=== modified file 'src/runtime/uris/uris_impl.cpp'
--- src/runtime/uris/uris_impl.cpp 2013-05-03 00:51:34 +0000
+++ src/runtime/uris/uris_impl.cpp 2013-06-05 07:09:43 +0000
@@ -246,7 +246,7 @@
consumeNext(lItemURI, theChildren[0].getp(), planState);
lHasSchemeField = lHasOpaqueField = lHasNotOpaqueField = false;
- if(lItemURI->isJSONObject()) {
+ if(lItemURI->isObject()) {
lKeys = lItemURI->getObjectKeys();
if(!lKeys.isNull()){
lKeys->open();
=== modified file 'src/runtime/visitors/pregenerated/planiter_visitor.h'
--- src/runtime/visitors/pregenerated/planiter_visitor.h 2013-06-04 21:47:40 +0000
+++ src/runtime/visitors/pregenerated/planiter_visitor.h 2013-06-05 07:09:43 +0000
@@ -334,69 +334,48 @@
class JSONSerializeInternal;
-#ifdef ZORBA_WITH_JSON
class JSONDecodeFromRoundtripIterator;
-#endif
-#ifdef ZORBA_WITH_JSON
+
class JSONEncodeForRoundtripIterator;
-#endif
-#ifdef ZORBA_WITH_JSON
+
class JSONParseIterator;
-#endif
-#ifdef ZORBA_WITH_JSON
+
+ class JSONDocIterator;
+
+ class JSONItemAccessorIterator;
+
class JSONObjectNamesIterator;
-#endif
-#ifdef ZORBA_WITH_JSON
+
class JSONObjectValueIterator;
-#endif
-#ifdef ZORBA_WITH_JSON
+
class JSONObjectProjectIterator;
-#endif
-#ifdef ZORBA_WITH_JSON
- class JSONArraySizeIterator;
-#endif
-#ifdef ZORBA_WITH_JSON
+
class JSONArrayMemberIterator;
-#endif
-#ifdef ZORBA_WITH_JSON
+
class JSONArrayMembersIterator;
-#endif
-#ifdef ZORBA_WITH_JSON
+
+ class JSONArraySizeIterator;
+
class JSONArrayFlattenIterator;
-#endif
-#ifdef ZORBA_WITH_JSON
- class JSONDocIterator;
-#endif
-#ifdef ZORBA_WITH_JSON
- class JSONItemAccessorIterator;
-#endif
-#ifdef ZORBA_WITH_JSON
+
class JSONNullIterator;
-#endif
-#ifdef ZORBA_WITH_JSON
+
class JSONIsNullIterator;
-#endif
-#ifdef ZORBA_WITH_JSON
+
class JSONObjectInsertIterator;
-#endif
-#ifdef ZORBA_WITH_JSON
+
class JSONArrayInsertIterator;
-#endif
-#ifdef ZORBA_WITH_JSON
+
class JSONDeleteIterator;
-#endif
-#ifdef ZORBA_WITH_JSON
+
class JSONReplaceValueIterator;
-#endif
-#ifdef ZORBA_WITH_JSON
+
class JSONRenameIterator;
-#endif
-#ifdef ZORBA_WITH_JSON
+
class JSONArrayAppendIterator;
-#endif
-#ifdef ZORBA_WITH_JSON
+
class JSONBoxIterator;
-#endif
+
class SqrtIterator;
class ExpIterator;
@@ -1230,90 +1209,69 @@
virtual void beginVisit ( const JSONSerializeInternal& ) = 0;
virtual void endVisit ( const JSONSerializeInternal& ) = 0;
-#ifdef ZORBA_WITH_JSON
virtual void beginVisit ( const JSONDecodeFromRoundtripIterator& ) = 0;
virtual void endVisit ( const JSONDecodeFromRoundtripIterator& ) = 0;
-#endif
-#ifdef ZORBA_WITH_JSON
+
virtual void beginVisit ( const JSONEncodeForRoundtripIterator& ) = 0;
virtual void endVisit ( const JSONEncodeForRoundtripIterator& ) = 0;
-#endif
-#ifdef ZORBA_WITH_JSON
+
virtual void beginVisit ( const JSONParseIterator& ) = 0;
virtual void endVisit ( const JSONParseIterator& ) = 0;
-#endif
-#ifdef ZORBA_WITH_JSON
+
+ virtual void beginVisit ( const JSONDocIterator& ) = 0;
+ virtual void endVisit ( const JSONDocIterator& ) = 0;
+
+ virtual void beginVisit ( const JSONItemAccessorIterator& ) = 0;
+ virtual void endVisit ( const JSONItemAccessorIterator& ) = 0;
+
virtual void beginVisit ( const JSONObjectNamesIterator& ) = 0;
virtual void endVisit ( const JSONObjectNamesIterator& ) = 0;
-#endif
-#ifdef ZORBA_WITH_JSON
+
virtual void beginVisit ( const JSONObjectValueIterator& ) = 0;
virtual void endVisit ( const JSONObjectValueIterator& ) = 0;
-#endif
-#ifdef ZORBA_WITH_JSON
+
virtual void beginVisit ( const JSONObjectProjectIterator& ) = 0;
virtual void endVisit ( const JSONObjectProjectIterator& ) = 0;
-#endif
-#ifdef ZORBA_WITH_JSON
- virtual void beginVisit ( const JSONArraySizeIterator& ) = 0;
- virtual void endVisit ( const JSONArraySizeIterator& ) = 0;
-#endif
-#ifdef ZORBA_WITH_JSON
+
virtual void beginVisit ( const JSONArrayMemberIterator& ) = 0;
virtual void endVisit ( const JSONArrayMemberIterator& ) = 0;
-#endif
-#ifdef ZORBA_WITH_JSON
+
virtual void beginVisit ( const JSONArrayMembersIterator& ) = 0;
virtual void endVisit ( const JSONArrayMembersIterator& ) = 0;
-#endif
-#ifdef ZORBA_WITH_JSON
+
+ virtual void beginVisit ( const JSONArraySizeIterator& ) = 0;
+ virtual void endVisit ( const JSONArraySizeIterator& ) = 0;
+
virtual void beginVisit ( const JSONArrayFlattenIterator& ) = 0;
virtual void endVisit ( const JSONArrayFlattenIterator& ) = 0;
-#endif
-#ifdef ZORBA_WITH_JSON
- virtual void beginVisit ( const JSONDocIterator& ) = 0;
- virtual void endVisit ( const JSONDocIterator& ) = 0;
-#endif
-#ifdef ZORBA_WITH_JSON
- virtual void beginVisit ( const JSONItemAccessorIterator& ) = 0;
- virtual void endVisit ( const JSONItemAccessorIterator& ) = 0;
-#endif
-#ifdef ZORBA_WITH_JSON
+
virtual void beginVisit ( const JSONNullIterator& ) = 0;
virtual void endVisit ( const JSONNullIterator& ) = 0;
-#endif
-#ifdef ZORBA_WITH_JSON
+
virtual void beginVisit ( const JSONIsNullIterator& ) = 0;
virtual void endVisit ( const JSONIsNullIterator& ) = 0;
-#endif
-#ifdef ZORBA_WITH_JSON
+
virtual void beginVisit ( const JSONObjectInsertIterator& ) = 0;
virtual void endVisit ( const JSONObjectInsertIterator& ) = 0;
-#endif
-#ifdef ZORBA_WITH_JSON
+
virtual void beginVisit ( const JSONArrayInsertIterator& ) = 0;
virtual void endVisit ( const JSONArrayInsertIterator& ) = 0;
-#endif
-#ifdef ZORBA_WITH_JSON
+
virtual void beginVisit ( const JSONDeleteIterator& ) = 0;
virtual void endVisit ( const JSONDeleteIterator& ) = 0;
-#endif
-#ifdef ZORBA_WITH_JSON
+
virtual void beginVisit ( const JSONReplaceValueIterator& ) = 0;
virtual void endVisit ( const JSONReplaceValueIterator& ) = 0;
-#endif
-#ifdef ZORBA_WITH_JSON
+
virtual void beginVisit ( const JSONRenameIterator& ) = 0;
virtual void endVisit ( const JSONRenameIterator& ) = 0;
-#endif
-#ifdef ZORBA_WITH_JSON
+
virtual void beginVisit ( const JSONArrayAppendIterator& ) = 0;
virtual void endVisit ( const JSONArrayAppendIterator& ) = 0;
-#endif
-#ifdef ZORBA_WITH_JSON
+
virtual void beginVisit ( const JSONBoxIterator& ) = 0;
virtual void endVisit ( const JSONBoxIterator& ) = 0;
-#endif
+
virtual void beginVisit ( const SqrtIterator& ) = 0;
virtual void endVisit ( const SqrtIterator& ) = 0;
=== modified file 'src/runtime/visitors/pregenerated/printer_visitor.cpp'
--- src/runtime/visitors/pregenerated/printer_visitor.cpp 2013-06-04 21:47:40 +0000
+++ src/runtime/visitors/pregenerated/printer_visitor.cpp 2013-06-05 07:09:43 +0000
@@ -2012,7 +2012,7 @@
}
// </JSONSerializeInternal>
-#ifdef ZORBA_WITH_JSON
+
// <JSONDecodeFromRoundtripIterator>
void PrinterVisitor::beginVisit ( const JSONDecodeFromRoundtripIterator& a) {
thePrinter.startBeginVisit("JSONDecodeFromRoundtripIterator", ++theId);
@@ -2026,8 +2026,7 @@
}
// </JSONDecodeFromRoundtripIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONEncodeForRoundtripIterator>
void PrinterVisitor::beginVisit ( const JSONEncodeForRoundtripIterator& a) {
thePrinter.startBeginVisit("JSONEncodeForRoundtripIterator", ++theId);
@@ -2041,8 +2040,7 @@
}
// </JSONEncodeForRoundtripIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONParseIterator>
void PrinterVisitor::beginVisit ( const JSONParseIterator& a) {
thePrinter.startBeginVisit("JSONParseIterator", ++theId);
@@ -2056,8 +2054,35 @@
}
// </JSONParseIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
+// <JSONDocIterator>
+void PrinterVisitor::beginVisit ( const JSONDocIterator& a) {
+ thePrinter.startBeginVisit("JSONDocIterator", ++theId);
+ printCommons( &a, theId );
+ thePrinter.endBeginVisit( theId );
+}
+
+void PrinterVisitor::endVisit ( const JSONDocIterator& ) {
+ thePrinter.startEndVisit();
+ thePrinter.endEndVisit();
+}
+// </JSONDocIterator>
+
+
+// <JSONItemAccessorIterator>
+void PrinterVisitor::beginVisit ( const JSONItemAccessorIterator& a) {
+ thePrinter.startBeginVisit("JSONItemAccessorIterator", ++theId);
+ printCommons( &a, theId );
+ thePrinter.endBeginVisit( theId );
+}
+
+void PrinterVisitor::endVisit ( const JSONItemAccessorIterator& ) {
+ thePrinter.startEndVisit();
+ thePrinter.endEndVisit();
+}
+// </JSONItemAccessorIterator>
+
+
// <JSONObjectNamesIterator>
void PrinterVisitor::beginVisit ( const JSONObjectNamesIterator& a) {
thePrinter.startBeginVisit("JSONObjectNamesIterator", ++theId);
@@ -2071,8 +2096,7 @@
}
// </JSONObjectNamesIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONObjectValueIterator>
void PrinterVisitor::beginVisit ( const JSONObjectValueIterator& a) {
thePrinter.startBeginVisit("JSONObjectValueIterator", ++theId);
@@ -2086,8 +2110,7 @@
}
// </JSONObjectValueIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONObjectProjectIterator>
void PrinterVisitor::beginVisit ( const JSONObjectProjectIterator& a) {
thePrinter.startBeginVisit("JSONObjectProjectIterator", ++theId);
@@ -2101,23 +2124,7 @@
}
// </JSONObjectProjectIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
-// <JSONArraySizeIterator>
-void PrinterVisitor::beginVisit ( const JSONArraySizeIterator& a) {
- thePrinter.startBeginVisit("JSONArraySizeIterator", ++theId);
- printCommons( &a, theId );
- thePrinter.endBeginVisit( theId );
-}
-
-void PrinterVisitor::endVisit ( const JSONArraySizeIterator& ) {
- thePrinter.startEndVisit();
- thePrinter.endEndVisit();
-}
-// </JSONArraySizeIterator>
-
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONArrayMemberIterator>
void PrinterVisitor::beginVisit ( const JSONArrayMemberIterator& a) {
thePrinter.startBeginVisit("JSONArrayMemberIterator", ++theId);
@@ -2131,8 +2138,7 @@
}
// </JSONArrayMemberIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONArrayMembersIterator>
void PrinterVisitor::beginVisit ( const JSONArrayMembersIterator& a) {
thePrinter.startBeginVisit("JSONArrayMembersIterator", ++theId);
@@ -2146,8 +2152,21 @@
}
// </JSONArrayMembersIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
+// <JSONArraySizeIterator>
+void PrinterVisitor::beginVisit ( const JSONArraySizeIterator& a) {
+ thePrinter.startBeginVisit("JSONArraySizeIterator", ++theId);
+ printCommons( &a, theId );
+ thePrinter.endBeginVisit( theId );
+}
+
+void PrinterVisitor::endVisit ( const JSONArraySizeIterator& ) {
+ thePrinter.startEndVisit();
+ thePrinter.endEndVisit();
+}
+// </JSONArraySizeIterator>
+
+
// <JSONArrayFlattenIterator>
void PrinterVisitor::beginVisit ( const JSONArrayFlattenIterator& a) {
thePrinter.startBeginVisit("JSONArrayFlattenIterator", ++theId);
@@ -2161,38 +2180,7 @@
}
// </JSONArrayFlattenIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
-// <JSONDocIterator>
-void PrinterVisitor::beginVisit ( const JSONDocIterator& a) {
- thePrinter.startBeginVisit("JSONDocIterator", ++theId);
- printCommons( &a, theId );
- thePrinter.endBeginVisit( theId );
-}
-
-void PrinterVisitor::endVisit ( const JSONDocIterator& ) {
- thePrinter.startEndVisit();
- thePrinter.endEndVisit();
-}
-// </JSONDocIterator>
-
-#endif
-#ifdef ZORBA_WITH_JSON
-// <JSONItemAccessorIterator>
-void PrinterVisitor::beginVisit ( const JSONItemAccessorIterator& a) {
- thePrinter.startBeginVisit("JSONItemAccessorIterator", ++theId);
- printCommons( &a, theId );
- thePrinter.endBeginVisit( theId );
-}
-
-void PrinterVisitor::endVisit ( const JSONItemAccessorIterator& ) {
- thePrinter.startEndVisit();
- thePrinter.endEndVisit();
-}
-// </JSONItemAccessorIterator>
-
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONNullIterator>
void PrinterVisitor::beginVisit ( const JSONNullIterator& a) {
thePrinter.startBeginVisit("JSONNullIterator", ++theId);
@@ -2206,8 +2194,7 @@
}
// </JSONNullIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONIsNullIterator>
void PrinterVisitor::beginVisit ( const JSONIsNullIterator& a) {
thePrinter.startBeginVisit("JSONIsNullIterator", ++theId);
@@ -2221,8 +2208,7 @@
}
// </JSONIsNullIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONObjectInsertIterator>
void PrinterVisitor::beginVisit ( const JSONObjectInsertIterator& a) {
thePrinter.startBeginVisit("JSONObjectInsertIterator", ++theId);
@@ -2236,8 +2222,7 @@
}
// </JSONObjectInsertIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONArrayInsertIterator>
void PrinterVisitor::beginVisit ( const JSONArrayInsertIterator& a) {
thePrinter.startBeginVisit("JSONArrayInsertIterator", ++theId);
@@ -2251,8 +2236,7 @@
}
// </JSONArrayInsertIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONDeleteIterator>
void PrinterVisitor::beginVisit ( const JSONDeleteIterator& a) {
thePrinter.startBeginVisit("JSONDeleteIterator", ++theId);
@@ -2266,8 +2250,7 @@
}
// </JSONDeleteIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONReplaceValueIterator>
void PrinterVisitor::beginVisit ( const JSONReplaceValueIterator& a) {
thePrinter.startBeginVisit("JSONReplaceValueIterator", ++theId);
@@ -2281,8 +2264,7 @@
}
// </JSONReplaceValueIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONRenameIterator>
void PrinterVisitor::beginVisit ( const JSONRenameIterator& a) {
thePrinter.startBeginVisit("JSONRenameIterator", ++theId);
@@ -2296,8 +2278,7 @@
}
// </JSONRenameIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONArrayAppendIterator>
void PrinterVisitor::beginVisit ( const JSONArrayAppendIterator& a) {
thePrinter.startBeginVisit("JSONArrayAppendIterator", ++theId);
@@ -2311,8 +2292,7 @@
}
// </JSONArrayAppendIterator>
-#endif
-#ifdef ZORBA_WITH_JSON
+
// <JSONBoxIterator>
void PrinterVisitor::beginVisit ( const JSONBoxIterator& a) {
thePrinter.startBeginVisit("JSONBoxIterator", ++theId);
@@ -2326,7 +2306,6 @@
}
// </JSONBoxIterator>
-#endif
// <SqrtIterator>
void PrinterVisitor::beginVisit ( const SqrtIterator& a) {
=== modified file 'src/runtime/visitors/pregenerated/printer_visitor.h'
--- src/runtime/visitors/pregenerated/printer_visitor.h 2013-06-04 21:47:40 +0000
+++ src/runtime/visitors/pregenerated/printer_visitor.h 2013-06-05 07:09:43 +0000
@@ -511,110 +511,68 @@
void beginVisit( const JSONSerializeInternal& );
void endVisit ( const JSONSerializeInternal& );
-#ifdef ZORBA_WITH_JSON
void beginVisit( const JSONDecodeFromRoundtripIterator& );
void endVisit ( const JSONDecodeFromRoundtripIterator& );
-#endif
-#ifdef ZORBA_WITH_JSON
void beginVisit( const JSONEncodeForRoundtripIterator& );
void endVisit ( const JSONEncodeForRoundtripIterator& );
-#endif
-#ifdef ZORBA_WITH_JSON
void beginVisit( const JSONParseIterator& );
void endVisit ( const JSONParseIterator& );
-#endif
-
-#ifdef ZORBA_WITH_JSON
+
+ void beginVisit( const JSONDocIterator& );
+ void endVisit ( const JSONDocIterator& );
+
+ void beginVisit( const JSONItemAccessorIterator& );
+ void endVisit ( const JSONItemAccessorIterator& );
+
void beginVisit( const JSONObjectNamesIterator& );
void endVisit ( const JSONObjectNamesIterator& );
-#endif
-#ifdef ZORBA_WITH_JSON
void beginVisit( const JSONObjectValueIterator& );
void endVisit ( const JSONObjectValueIterator& );
-#endif
-#ifdef ZORBA_WITH_JSON
void beginVisit( const JSONObjectProjectIterator& );
void endVisit ( const JSONObjectProjectIterator& );
-#endif
-
-#ifdef ZORBA_WITH_JSON
- void beginVisit( const JSONArraySizeIterator& );
- void endVisit ( const JSONArraySizeIterator& );
-#endif
-
-#ifdef ZORBA_WITH_JSON
+
void beginVisit( const JSONArrayMemberIterator& );
void endVisit ( const JSONArrayMemberIterator& );
-#endif
-#ifdef ZORBA_WITH_JSON
void beginVisit( const JSONArrayMembersIterator& );
void endVisit ( const JSONArrayMembersIterator& );
-#endif
-
-#ifdef ZORBA_WITH_JSON
+
+ void beginVisit( const JSONArraySizeIterator& );
+ void endVisit ( const JSONArraySizeIterator& );
+
void beginVisit( const JSONArrayFlattenIterator& );
void endVisit ( const JSONArrayFlattenIterator& );
-#endif
-
-#ifdef ZORBA_WITH_JSON
- void beginVisit( const JSONDocIterator& );
- void endVisit ( const JSONDocIterator& );
-#endif
-
-#ifdef ZORBA_WITH_JSON
- void beginVisit( const JSONItemAccessorIterator& );
- void endVisit ( const JSONItemAccessorIterator& );
-#endif
-
-#ifdef ZORBA_WITH_JSON
+
void beginVisit( const JSONNullIterator& );
void endVisit ( const JSONNullIterator& );
-#endif
-#ifdef ZORBA_WITH_JSON
void beginVisit( const JSONIsNullIterator& );
void endVisit ( const JSONIsNullIterator& );
-#endif
-#ifdef ZORBA_WITH_JSON
void beginVisit( const JSONObjectInsertIterator& );
void endVisit ( const JSONObjectInsertIterator& );
-#endif
-#ifdef ZORBA_WITH_JSON
void beginVisit( const JSONArrayInsertIterator& );
void endVisit ( const JSONArrayInsertIterator& );
-#endif
-#ifdef ZORBA_WITH_JSON
void beginVisit( const JSONDeleteIterator& );
void endVisit ( const JSONDeleteIterator& );
-#endif
-#ifdef ZORBA_WITH_JSON
void beginVisit( const JSONReplaceValueIterator& );
void endVisit ( const JSONReplaceValueIterator& );
-#endif
-#ifdef ZORBA_WITH_JSON
void beginVisit( const JSONRenameIterator& );
void endVisit ( const JSONRenameIterator& );
-#endif
-#ifdef ZORBA_WITH_JSON
void beginVisit( const JSONArrayAppendIterator& );
void endVisit ( const JSONArrayAppendIterator& );
-#endif
-#ifdef ZORBA_WITH_JSON
void beginVisit( const JSONBoxIterator& );
void endVisit ( const JSONBoxIterator& );
-#endif
void beginVisit( const SqrtIterator& );
void endVisit ( const SqrtIterator& );
=== modified file 'src/store/api/item.h'
--- src/store/api/item.h 2013-05-24 22:52:47 +0000
+++ src/store/api/item.h 2013-06-05 07:09:43 +0000
@@ -67,8 +67,9 @@
PUL = 0x3,
FUNCTION = 0x5,
LIST = 0x7,
- JSONIQ = 0x9,
- ERROR_ = 0xB
+ OBJECT = 0x9,
+ ARRAY = 0xB,
+ ERROR_ = 0xD
};
protected:
@@ -139,9 +140,17 @@
/**
* @return "true" if the item is a JSON item
*/
- bool isJSONItem() const
- {
- return ((theUnion.itemKind & 0xF) == JSONIQ);
+ bool isObject() const
+ {
+ return ((theUnion.itemKind & 0xF) == OBJECT);
+ }
+
+ /**
+ * @return "true" if the item is a JSON item
+ */
+ bool isArray() const
+ {
+ return ((theUnion.itemKind & 0xF) == ARRAY);
}
/**
@@ -191,7 +200,16 @@
bool
isStructuredItem() const
{
- return isNode() || isJSONItem();
+ return isNode() || isObject() || isArray();
+ }
+
+ /**
+ * @return "true" if the item is a JSON item
+ */
+ bool
+ isJSONItem() const
+ {
+ return (isObject() || isArray());
}
/**
@@ -200,18 +218,6 @@
zstring printKind() const;
/**
- * @return "true" if the item is a JSON object item
- */
- virtual bool
- isJSONObject() const;
-
- /**
- * @return "true" if the item is a JSON array item
- */
- virtual bool
- isJSONArray() const;
-
- /**
* @return the qname identifying the XQuery type of the item
*/
virtual Item*
=== modified file 'src/store/naive/item.cpp'
--- src/store/naive/item.cpp 2013-05-21 21:44:25 +0000
+++ src/store/naive/item.cpp 2013-06-05 07:09:43 +0000
@@ -67,15 +67,14 @@
SYNC_CODE(static_cast<const simplestore::XmlNode*>(this)->getRCLock()->release());
return;
}
-#ifdef ZORBA_WITH_JSON
- case JSONIQ:
+ case OBJECT:
+ case ARRAY:
{
SYNC_CODE(static_cast<const simplestore::json::JSONItem*>(this)->getRCLock()->acquire());
++theRefCount;
SYNC_CODE(static_cast<const simplestore::json::JSONItem*>(this)->getRCLock()->release());
return;
}
-#endif
case ATOMIC:
case ERROR_:
{
@@ -149,8 +148,8 @@
SYNC_CODE(static_cast<const simplestore::XmlNode*>(this)->getRCLock()->release());
return;
}
-#ifdef ZORBA_WITH_JSON
- case JSONIQ:
+ case OBJECT:
+ case ARRAY:
{
SYNC_CODE(static_cast<const simplestore::json::JSONItem*>(this)->getRCLock()->acquire());
@@ -164,7 +163,6 @@
SYNC_CODE(static_cast<const simplestore::json::JSONItem*>(this)->getRCLock()->release());
return;
}
-#endif
case ATOMIC:
case ERROR_:
{
@@ -236,36 +234,21 @@
}
-#ifdef ZORBA_WITH_JSON
-
-bool Item::isJSONObject() const
-{
- return false;
-}
-
-
-bool Item::isJSONArray() const
-{
- return false;
-}
-
-#endif
-
-
zstring Item::printKind() const
{
- if (isNode())
+ switch (getKind())
+ {
+ case ATOMIC:
+ return "atomic";
+
+ case NODE:
return "node";
- switch (theUnion.itemKind)
- {
- case ATOMIC:
- return "atomic";
+ case OBJECT:
+ return "object";
-#ifdef ZORBA_WITH_JSON
- case JSONIQ:
- return "json";
-#endif
+ case ARRAY:
+ return "array";
case FUNCTION:
return "function";
=== modified file 'src/store/naive/json_items.cpp'
--- src/store/naive/json_items.cpp 2013-04-16 21:12:12 +0000
+++ src/store/naive/json_items.cpp 2013-06-05 07:09:43 +0000
@@ -254,9 +254,7 @@
store::Item_t lKey = lIter->first;
store::Item_t lValue = lIter->second;
- if (lValue->isJSONObject() ||
- lValue->isJSONArray() ||
- lValue->isNode())
+ if (lValue->isStructuredItem())
{
store::Item_t lCopiedValue = lValue->copy(NULL, copymode);
lNewObject->add(lKey, lCopiedValue, false);
@@ -270,7 +268,7 @@
if (parent)
{
- assert(parent->isJSONArray());
+ assert(parent->isArray());
assert(dynamic_cast<JSONArray*>(parent));
JSONArray* a = static_cast<JSONArray*>(parent);
@@ -322,7 +320,7 @@
store::Item* lValue = thePairs[lPosition].second;
- if (lValue->isJSONArray())
+ if (lValue->isArray())
{
static_cast<SimpleJSONArray*>(lValue)->push_back(aValue);
}
@@ -1129,9 +1127,7 @@
{
store::Item_t lValue = *lIter;
- if (lValue->isJSONObject() ||
- lValue->isJSONArray() ||
- lValue->isNode())
+ if (lValue->isStructuredItem())
{
lValue = lValue->copy(NULL, copymode);
}
@@ -1142,7 +1138,7 @@
if (parent)
{
- assert(parent->isJSONArray());
+ assert(parent->isArray());
JSONArray* a = static_cast<JSONArray*>(parent);
a->push_back(lNewArray);
}
=== modified file 'src/store/naive/json_items.h'
--- src/store/naive/json_items.h 2013-04-22 16:50:49 +0000
+++ src/store/naive/json_items.h 2013-06-05 07:09:43 +0000
@@ -112,7 +112,7 @@
public:
SYNC_CODE(RCLock* getRCLock() const { return &theRCLock; })
- JSONItem() : StructuredItem(store::Item::JSONIQ), theCollectionInfo(NULL) {}
+ JSONItem(store::Item::ItemKind k) : StructuredItem(k), theCollectionInfo(NULL) {}
virtual ~JSONItem();
@@ -168,6 +168,8 @@
{
public:
+ JSONObject() : JSONItem(store::Item::OBJECT) {}
+
// store API
virtual store::StoreConsts::JSONItemKind getJSONItemKind() const
@@ -175,8 +177,6 @@
return store::StoreConsts::jsonObject;
}
- virtual bool isJSONObject() const { return true; }
-
virtual store::Iterator_t getObjectKeys() const = 0;
virtual store::Item_t getObjectValue(const store::Item_t& aKey) const = 0;
@@ -242,7 +242,7 @@
Pairs thePairs;
public:
- SimpleJSONObject() {}
+ SimpleJSONObject() : JSONObject() {}
virtual ~SimpleJSONObject();
@@ -312,12 +312,10 @@
class JSONArray : public JSONItem
{
public:
- JSONArray() : JSONItem() {}
+ JSONArray() : JSONItem(store::Item::ARRAY) {}
// store API
- bool isJSONArray() const { return true; }
-
store::StoreConsts::JSONItemKind
getJSONItemKind() const { return store::StoreConsts::jsonArray; }
@@ -391,8 +389,9 @@
Members theContent;
public:
- SimpleJSONArray()
- {}
+ SimpleJSONArray() : JSONArray()
+ {
+ }
SimpleJSONArray(size_t aReservedSize)
{
=== modified file 'src/store/naive/node_iterators.cpp'
--- src/store/naive/node_iterators.cpp 2013-04-24 17:26:02 +0000
+++ src/store/naive/node_iterators.cpp 2013-06-05 07:09:43 +0000
@@ -266,10 +266,9 @@
{
if (!item->isNode())
{
-#ifdef ZORBA_WITH_JSON
// If no JSON item should be found (like in a path expression), this
// is handled by the consumer of this iterator.
- ZORBA_ASSERT(item->isJSONObject() || item->isJSONArray());
+ ZORBA_ASSERT(item->isJSONItem());
json::JSONItem* jsonItem = static_cast<json::JSONItem*>(item.getp());
@@ -289,9 +288,6 @@
result = jsonItem;
return true;
-#else
- ZORBA_ASSERT_WITH_MSG(false, "Non-node found in node sorting iterator.");
-#endif
}
theNodes.push_back(reinterpret_cast<XmlNode*>(item.release()));
=== modified file 'src/store/naive/pul_primitives.cpp'
--- src/store/naive/pul_primitives.cpp 2013-04-29 14:39:04 +0000
+++ src/store/naive/pul_primitives.cpp 2013-06-05 07:09:43 +0000
@@ -29,9 +29,7 @@
#include "node_factory.h"
#include "simple_index.h"
#include "simple_index_value.h"
-#ifdef ZORBA_WITH_JSON
#include "json_items.h"
-#endif
#include "store/api/iterator.h"
#include "store/api/copymode.h"
@@ -40,9 +38,7 @@
#include "diagnostics/xquery_diagnostics.h"
#include "diagnostics/util_macros.h"
-#ifdef ZORBA_WITH_JSON
using namespace zorba::simplestore::json;
-#endif
namespace zorba {
@@ -2001,7 +1997,7 @@
void UpdJSONObjectInsert::apply()
{
- ZORBA_ASSERT(theTarget->isJSONObject());
+ ZORBA_ASSERT(theTarget->isObject());
JSONObject* obj = static_cast<JSONObject*>(theTarget.getp());
@@ -2049,7 +2045,7 @@
UpdatePrimitive(pul, loc, target),
theName(name)
{
- assert(theTarget->isJSONObject());
+ assert(theTarget->isObject());
}
@@ -2185,7 +2181,7 @@
UpdatePrimitive(pul, loc, target),
thePosition(pos)
{
- assert(theTarget->isJSONArray());
+ assert(theTarget->isArray());
}
@@ -2197,7 +2193,7 @@
UpdatePrimitive(pul, loc, target),
thePosition(0)
{
- assert(theTarget->isJSONArray());
+ assert(theTarget->isArray());
}
=== modified file 'src/store/naive/simple_item_factory.cpp'
--- src/store/naive/simple_item_factory.cpp 2013-05-22 02:22:35 +0000
+++ src/store/naive/simple_item_factory.cpp 2013-06-05 07:09:43 +0000
@@ -2385,7 +2385,7 @@
while (source->next(objItem))
{
- assert(objItem->isJSONObject());
+ assert(objItem->isObject());
json::SimpleJSONObject* sourceObj =
static_cast<json::SimpleJSONObject*>(objItem.getp());
@@ -2397,10 +2397,7 @@
while (sourceKeys->next(keyItem))
{
valueItem = objItem->getObjectValue(keyItem);
- if (copymode.theDoCopy &&
- (valueItem->isJSONArray() ||
- valueItem->isJSONObject() ||
- valueItem->isNode()))
+ if (copymode.theDoCopy && valueItem->isStructuredItem())
{
valueItem = valueItem->copy(NULL, copymode);
}
=== modified file 'src/store/naive/simple_pul.cpp'
--- src/store/naive/simple_pul.cpp 2013-05-08 20:14:47 +0000
+++ src/store/naive/simple_pul.cpp 2013-06-05 07:09:43 +0000
@@ -1104,7 +1104,6 @@
}
-#ifdef ZORBA_WITH_JSON
/*******************************************************************************
********************************************************************************/
@@ -1113,7 +1112,7 @@
store::Item_t& target,
store::Item_t& content)
{
- assert(content->isJSONObject());
+ assert(content->isObject());
assert(dynamic_cast<json::JSONObject*>(content.getp()));
json::JSONObject* lObject = static_cast<json::JSONObject*>(content.getp());
store::Iterator_t lIterator = lObject->getObjectKeys();
@@ -1678,8 +1677,6 @@
}
}
-#endif // ZORBA_WITH_JSON
-
/*******************************************************************************
Merge PULs
@@ -3470,7 +3467,6 @@
applyList(theReplaceContentList);
applyList(theDeleteList);
-#ifdef ZORBA_WITH_JSON
applyList(theJSONObjectDeleteList);
applyList(theJSONObjectReplaceValueList);
applyList(theJSONObjectRenameList);
@@ -3485,7 +3481,7 @@
NodeToUpdatesMap::iterator end = theNodeToUpdatesMap.end();
for (; ite != end; ++ite)
{
- if (!(*ite).first->isJSONArray())
+ if (!(*ite).first->isArray())
continue;
NodeUpdates* updates = (*ite).second;
@@ -3500,7 +3496,6 @@
}
}
}
-#endif
// Check if any inconsistencies that were detected during the application
// of XQUF primitives were only temporary and have been resolved by now.
@@ -3643,7 +3638,6 @@
}
theMergeList.clear();
-#ifdef ZORBA_WITH_JSON
undoList(theJSONObjectInsertList);
undoList(theJSONObjectRenameList);
undoList(theJSONObjectReplaceValueList);
@@ -3658,7 +3652,7 @@
NodeToUpdatesMap::iterator end = theNodeToUpdatesMap.end();
for (; ite != end; ++ite)
{
- if (!(*ite).first->isJSONArray())
+ if (!(*ite).first->isArray())
continue;
NodeUpdates* updates = (*ite).second;
@@ -3671,7 +3665,6 @@
}
}
}
-#endif
undoList(theDeleteList);
undoList(theReplaceContentList);
=== modified file 'src/zorbaserialization/serialize_zorba_types.cpp'
--- src/zorbaserialization/serialize_zorba_types.cpp 2013-05-22 02:22:35 +0000
+++ src/zorbaserialization/serialize_zorba_types.cpp 2013-06-05 07:09:43 +0000
@@ -322,11 +322,9 @@
kind = obj->getKind();
if (kind == store::Item::NODE ||
- kind == store::Item::FUNCTION
-#ifdef ZORBA_WITH_JSON
- || kind == store::Item::JSONIQ
-#endif
- )
+ kind == store::Item::FUNCTION ||
+ kind == store::Item::OBJECT ||
+ kind == store::Item::ARRAY)
{
ar.set_is_temp_field(true);
}
@@ -337,11 +335,9 @@
ARCHIVE_FIELD_PTR);
if (kind == store::Item::NODE ||
- kind == store::Item::FUNCTION
-#ifdef ZORBA_WITH_JSON
- || kind == store::Item::JSONIQ
-#endif
- )
+ kind == store::Item::FUNCTION ||
+ kind == store::Item::OBJECT ||
+ kind == store::Item::ARRAY)
{
ar.set_is_temp_field(false);
}
@@ -369,8 +365,8 @@
break;
}
-#ifdef ZORBA_WITH_JSON
- case store::Item::JSONIQ:
+ case store::Item::OBJECT:
+ case store::Item::ARRAY:
{
ar.set_is_temp_field(true);
ar.set_is_temp_field_one_level(true);
@@ -382,7 +378,6 @@
break;
}
-#endif
case store::Item::FUNCTION:
{
FunctionItem* fitem = static_cast<FunctionItem*>(obj);
@@ -461,8 +456,8 @@
break;
}
-#ifdef ZORBA_WITH_JSON
- case store::Item::JSONIQ:
+ case store::Item::OBJECT:
+ case store::Item::ARRAY:
{
ar.set_is_temp_field(true);
ar.set_is_temp_field_one_level(true);
@@ -474,7 +469,6 @@
break;
}
-#endif
case store::Item::FUNCTION:
{
FunctionItem* fitem = NULL;
=== modified file 'test/fots/CMakeLists.txt'
--- test/fots/CMakeLists.txt 2013-06-05 08:41:43 +0000
+++ test/fots/CMakeLists.txt 2013-06-05 07:09:43 +0000
@@ -345,6 +345,7 @@
EXPECTED_FOTS_FAILURE (xs-anyURI cbcl-anyURI-006 0)
EXPECTED_FOTS_FAILURE (xs-base64Binary base64-115 0)
EXPECTED_FOTS_FAILURE (fn-function-lookup fn-function-lookup-062 0)
+EXPECTED_FOTS_FAILURE (misc-HigherOrderFunctions xqhof11 0)
EXPECTED_FOTS_FAILURE (misc-HigherOrderFunctions xqhof12 0)
EXPECTED_FOTS_FAILURE (xs-error xs-error-005 1170470)
EXPECTED_FOTS_FAILURE (xs-error xs-error-006 1170470)
@@ -369,6 +370,23 @@
EXPECTED_FOTS_FAILURE (fn-function-lookup fn-function-lookup-424 1182910)
EXPECTED_FOTS_FAILURE (fn-function-lookup fn-function-lookup-426 1182910)
EXPECTED_FOTS_FAILURE (fn-function-lookup fn-function-lookup-430 1182910)
+<<<<<<< TREE
+=======
+EXPECTED_FOTS_FAILURE (fn-function-lookup fn-function-lookup-431 1182910)
+EXPECTED_FOTS_FAILURE (fn-function-lookup fn-function-lookup-432 1182910)
+EXPECTED_FOTS_FAILURE (fn-function-lookup fn-function-lookup-530 0)
+EXPECTED_FOTS_FAILURE (fn-for-each-pair for-each-pair-001 1182910)
+EXPECTED_FOTS_FAILURE (fn-for-each-pair for-each-pair-002 1182910)
+EXPECTED_FOTS_FAILURE (fn-for-each-pair for-each-pair-003 1182910)
+EXPECTED_FOTS_FAILURE (fn-for-each-pair for-each-pair-004 1182910)
+EXPECTED_FOTS_FAILURE (fn-for-each-pair for-each-pair-005 1182910)
+EXPECTED_FOTS_FAILURE (fn-for-each-pair for-each-pair-006 1182910)
+EXPECTED_FOTS_FAILURE (fn-for-each-pair for-each-pair-007 1182910)
+EXPECTED_FOTS_FAILURE (fn-for-each-pair for-each-pair-008 1182910)
+EXPECTED_FOTS_FAILURE (fn-for-each-pair fn-for-each-pair-008 1182910)
+EXPECTED_FOTS_FAILURE (fn-for-each-pair fn-for-each-pair-017 1182910)
+EXPECTED_FOTS_FAILURE (fn-for-each-pair fn-for-each-pair-025 1182910)
+>>>>>>> MERGE-SOURCE
EXPECTED_FOTS_FAILURE (fn-for-each-pair fn-for-each-pair-026 1182910)
EXPECTED_FOTS_FAILURE (prod-NamedFunctionRef function-literal-062 1182910)
EXPECTED_FOTS_FAILURE (prod-NamedFunctionRef function-literal-424 1182910)
=== removed file 'test/rbkt/Queries/zorba/jsoniq/value_02.jq'
--- test/rbkt/Queries/zorba/jsoniq/value_02.jq 2013-03-20 22:49:31 +0000
+++ test/rbkt/Queries/zorba/jsoniq/value_02.jq 1970-01-01 00:00:00 +0000
@@ -1,2 +0,0 @@
-let $o := ({ "foo" : "bar"}, [ 1 ])
-return $o.foo
Follow ups