Merge lp:~zorba-coders/zorba/bug924756-xsDateTimeStamp into lp:zorba

Proposed by Cezar Andrei
Status: Merged
Approved by: Sorin Marian Nasoi
Approved revision: 11238
Merged at revision: 11287
Proposed branch: lp:~zorba-coders/zorba/bug924756-xsDateTimeStamp
Merge into: lp:zorba
Diff against target: 1575 lines (+466/-213)
34 files modified
ChangeLog (+8/-7)
include/zorba/store_consts.h (+8/-7)
modules/com/zorba-xquery/www/modules/datetime.xq (+1/-1)
src/api/store_consts.cpp (+2/-1)
src/context/dynamic_context.cpp (+39/-39)
src/context/dynamic_context.h (+5/-5)
src/functions/pregenerated/func_context.cpp (+1/-1)
src/functions/pregenerated/func_datetime.cpp (+1/-1)
src/runtime/datetime/datetime_impl.cpp (+1/-1)
src/runtime/spec/codegen-cpp.xq (+3/-1)
src/runtime/spec/context/context.xml (+1/-1)
src/runtime/spec/datetime/datetime.xml (+1/-1)
src/runtime/spec/mappings.xml (+1/-0)
src/runtime/xqdoc/xqdoc_impl.cpp (+8/-8)
src/store/api/item_factory.h (+48/-4)
src/store/naive/simple_item_factory.cpp (+108/-0)
src/store/naive/simple_item_factory.h (+10/-0)
src/store/naive/store.cpp (+1/-0)
src/types/casting.cpp (+70/-32)
src/types/casting.h (+2/-2)
src/types/root_typemanager.cpp (+98/-93)
src/types/root_typemanager.h (+1/-0)
src/types/schema/schema.cpp (+12/-1)
src/types/typeimpl.cpp (+2/-1)
src/types/typeops.cpp (+1/-0)
src/zorbatypes/datetime.h (+2/-0)
src/zorbatypes/datetime/datetimetype.cpp (+6/-0)
src/zorbatypes/floatimpl.cpp (+3/-0)
src/zorbatypes/schema_types.h (+4/-3)
test/fots/CMakeLists.txt (+11/-0)
test/fots_driver/FOTSZorbaManifest.xml (+2/-2)
test/fots_driver/fots-driver.xq (+1/-1)
test/rbkt/Queries/w3c_known_failures.txt (+2/-0)
test/rbkt/Queries/w3c_known_failures_XQueryX.txt (+2/-0)
To merge this branch: bzr merge lp:~zorba-coders/zorba/bug924756-xsDateTimeStamp
Reviewer Review Type Date Requested Status
Markos Zaharioudakis Approve
Cezar Andrei Approve
Matthias Brantner Needs Information
Review via email: mp+149901@code.launchpad.net

Commit message

Add support for xs:dateTimeStamp XMLSchema 1.1 built-in type.

Description of the change

Add support for xs:dateTimeStamp XMLSchema 1.1 built-in type.

To post a comment you must log in.
Revision history for this message
Matthias Brantner (matthias-brantner) wrote :

What about changing fn:current-dateTime() and our other nondeterministic dateTime functions?

review: Needs Information
Revision history for this message
Cezar Andrei (cezar-andrei) wrote :

> What about changing fn:current-dateTime() and our other nondeterministic
> dateTime functions?

Sorin brought it up, we're trying to figure out a way to have it enabled. It's on my list, looking at it right now.

Revision history for this message
Cezar Andrei (cezar-andrei) wrote :

Looks like modules/w3c/xpath_functions.xq already declares fn:current-dateTime() as xs:dateTimeStamp. While modules/w3c/xpath_functions.xq declares datetime:current-dateTime() as xs:dateTime.

Verified FOTS/xs-dateTimeStamp tests are passing.
Verified
  import module namespace schema = "http://www.zorba-xquery.com/modules/schema";
  schema:schema-type( fn:current-dateTime() )
returns xs:dateTimeStamp.

review: Approve
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :

The attempt to merge lp:~zorba-coders/zorba/bug924756-xsDateTimeStamp into lp:zorba failed. Below is the output from the failed tests.

CMake Error at /home/ceej/zo/testing/zorbatest/tester/TarmacLander.cmake:275 (message):
  Validation queue job bug924756-xsDateTimeStamp-2013-02-27T12-23-49.716Z is
  finished. The final status was:

  4 tests did not succeed - changes not commited.

Error in read script: /home/ceej/zo/testing/zorbatest/tester/TarmacLander.cmake

Revision history for this message
Markos Zaharioudakis (markos-za) :
review: Approve
Revision history for this message
Sorin Marian Nasoi (sorin.marian.nasoi) wrote :

Cezar you did not update the expected_failures in test/fots/CMakeLists.txt according to your fixes.

I will add a fix asap.

Revision history for this message
Sorin Marian Nasoi (sorin.marian.nasoi) wrote :

It seems that there are 2 regressions:
- 1 in FOTS/xs-double test set, "xs-float-003" test case
- 1 in FOTS/xs-float, "xs-double-003" test case

I am looking into those now.

Revision history for this message
Sorin Marian Nasoi (sorin.marian.nasoi) wrote :

> It seems that there are 2 regressions:
> - 1 in FOTS/xs-double test set, "xs-float-003" test case
> - 1 in FOTS/xs-float, "xs-double-003" test case
>
> I am looking into those now.

Cezar, after you enabled the XSD 1.1 support in FOTSZorbaManifest.xml there are 2 test cases that regressed (before these test cases were reported as "not applicable" since XSD 1.1 dependency was not met).

Both test cases refer to the same issue:
"+INF": value of type xs:string is not castable to type xs:float or xs:double.

HTH,
Sorin

Revision history for this message
Sorin Marian Nasoi (sorin.marian.nasoi) wrote :

Additional info. : if you want to say we support XML version "1.1" I think we also have to say we support XML versions "1.0:5+ 1.1".

This means the following setting in FOTSZorbaManifest.xml:

[...]
  <dependency type="xml-version" value="1.0" satisfied="true"/>
  <dependency type="xml-version" value="1.0:4-" satisfied="true"/>
  <dependency type="xml-version" value="1.0:5+ 1.1" satisfied="true"/>
  <dependency type="xml-version" value="1.1" satisfied="true"/>
[...]

Please see:
https://bugs.launchpad.net/zorba/+bug/924754/comments/3
for the list of test cases that fail when the above change is made into FOTSZorbaManifest.xml.

IMO we should decide between:
- saying we support XML 1.1 and versions between XML 1.0:5 and 1.1: in this case we add the test cases as EXPECTED_FOTS_FAILURES and try to fix them

- saying we do not support XML 1.1 and versions between XML 1.0:5 and 1.1

What do you guys think?

Revision history for this message
Sorin Marian Nasoi (sorin.marian.nasoi) wrote :

> Additional info. : if you want to say we support XML version "1.1" I think we
> also have to say we support XML versions "1.0:5+ 1.1".
>
> This means the following setting in FOTSZorbaManifest.xml:
>
> [...]
> <dependency type="xml-version" value="1.0" satisfied="true"/>
> <dependency type="xml-version" value="1.0:4-" satisfied="true"/>
> <dependency type="xml-version" value="1.0:5+ 1.1" satisfied="true"/>
> <dependency type="xml-version" value="1.1" satisfied="true"/>
> [...]
>
> Please see:
> https://bugs.launchpad.net/zorba/+bug/924754/comments/3
> for the list of test cases that fail when the above change is made into
> FOTSZorbaManifest.xml.
>
> IMO we should decide between:
> - saying we support XML 1.1 and versions between XML 1.0:5 and 1.1: in this
> case we add the test cases as EXPECTED_FOTS_FAILURES and try to fix them
>
> - saying we do not support XML 1.1 and versions between XML 1.0:5 and 1.1
>
> What do you guys think?

I set by mistake "xml-version" instead of XSD version: I will update the report.

Revision history for this message
Sorin Marian Nasoi (sorin.marian.nasoi) wrote :

I set "xsd-version" 1.1 support to true (and left only XML 1.0 support) and added the report of failing test cases in https://bugs.launchpad.net/zorba/+bug/924754.

The following test cases fail:
- 4 test cases "fn-adjust-dateTime-to-timezone" test set
- 1 in "fn-normalize-unicode" test set
- 1 in "xs-double" test set (+INF support)
- 1 in "xs-float" test set (+INF support)
- 32 in "prod-SchemaImport" test set

At least one test case (from "fn-normalize-unicode" test set) is failing because there is no dependency defined for XML version > 1.0.
If indeed XML version 1.1 and XSD version 1.1 are orthogonal then this is a bug in FOTS.

Revision history for this message
Cezar Andrei (cezar-andrei) wrote :

I fixed the 2 +INF tests.

Revision history for this message
Cezar Andrei (cezar-andrei) wrote :

Of 32 "prod-SchemaImport" cases:
3 - correct answer - xml comparator needs to be better
  qischema005
  qischema032c
  qischema070
1 - resource not found
  qischema016
3 - castable bug
  qischema031
  qischema040
  qischema040a
17 - bug in testcase schema or Xerces nor implementing xsd1.1
  substitution-001
  substitution-002
  substitution-003
  substitution-004
  substitution-005
  substitution-006
  substitution-007
  substitution-008
  substitution-009
  substitution-010
  substitution-011
  substitution-020
  substitution-021
  substitution-022
  substitution-023
  substitution-024
  substitution-025
8 - schema-element-head
  cbcl-schema-element-1
  cbcl-schema-element-2
  cbcl-schema-element-4
  cbcl-schema-element-5
  cbcl-schema-element-8
  cbcl-validated-schema-element-1
  cbcl-validated-schema-element-3
  cbcl-validated-schema-element-4

Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :

The attempt to merge lp:~zorba-coders/zorba/bug924756-xsDateTimeStamp into lp:zorba failed. Below is the output from the failed tests.

CMake Error at /home/ceej/zo/testing/zorbatest/tester/TarmacLander.cmake:275 (message):
  Validation queue job bug924756-xsDateTimeStamp-2013-03-12T19-27-54.498Z is
  finished. The final status was:

  8 tests did not succeed - changes not commited.

Error in read script: /home/ceej/zo/testing/zorbatest/tester/TarmacLander.cmake

Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :

The attempt to merge lp:~zorba-coders/zorba/bug924756-xsDateTimeStamp into lp:zorba failed. Below is the output from the failed tests.

CMake Error at /home/ceej/zo/testing/zorbatest/tester/TarmacLander.cmake:275 (message):
  Validation queue job bug924756-xsDateTimeStamp-2013-03-13T01-17-05.513Z is
  finished. The final status was:

  3 tests did not succeed - changes not commited.

Error in read script: /home/ceej/zo/testing/zorbatest/tester/TarmacLander.cmake

11238. By Sorin Marian Nasoi <email address hidden>

Updated expected failures for FOTS, XQTS and XQTSX.

Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :

Validation queue job bug924756-xsDateTimeStamp-2013-03-13T01-49-00.348Z is finished. The final status was:

All tests succeeded!

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'ChangeLog'
2--- ChangeLog 2013-03-11 10:37:41 +0000
3+++ ChangeLog 2013-03-13 01:48:22 +0000
4@@ -15,8 +15,9 @@
5 for streamable strings and base64Binary.
6 * Added millis-to-dateTime() function in datetime module.
7 * fn:trace outputs "empty-sequence()" if the input is the empty-sequence.
8- * Addex xqxq:variable-value function.
9+ * Added xqxq:variable-value function.
10 * Added canonicalize function to modules/xml.
11+ * Added support for xs:dateTimeStamp type from XMLSchema 1.1, bug #924754.
12
13 Optimizations:
14 * Extended optimization rules for subsequence function (pushing $startingLoc
15@@ -622,7 +623,7 @@
16 changed to http://www.zorba-xquery.com/modules/math)
17 * Pass the Static- and DynamicContext as parameter to the evaluate function
18 of external functions.
19- * The XQuery class got a setTimeout option that allows the user to set a
20+ * The XQuery class got a setTimeout option that allows the user to set a
21 maximum running time of a particular query execution.
22 * The StatelessExternalFunction is now non-pure by default. There is
23 a new subclass called PureStatelessExternalFunction which should
24@@ -708,13 +709,13 @@
25 allow setting of tidy functions
26 * Added Schema imports using target namespace or location hints
27 * Added StaticContext::findFunctions and StaticContext::disableFunciton
28- * Added Functions for collections
29+ * Added Functions for collections
30 * Windows packages include a zorba_simplestore.dll
31 * Improved error messages for regular expression processing
32 * Added functions to return an item instead of xs:string
33 * Added a new signature to zorba-util:random in order to be able to call
34 random within a loop and get different numbers each time.
35- * Corrected the types of some functions/operators (YM_DURATION or
36+ * Corrected the types of some functions/operators (YM_DURATION or
37 DT_DURATION instead of DURATION).
38 * Now possible to pass empty sequence as collection URI.
39 * Now cURL is set to follow an infinite number of redirects.
40@@ -772,11 +773,11 @@
41 * Stabilized the Store API & build the simplestore as a separate library
42
43 version 0.9.1 (2008.04.30):
44- * Initial release supporting
45- * XQuery 1.0 and XPath 2.0 (as in the W3C recommendation)
46+ * Initial release supporting
47+ * XQuery 1.0 and XPath 2.0 (as in the W3C recommendation)
48 except modules and only limited support for schema validation
49 * XQuery Update Facility 1.0 (as in the evolving W3C recommendation)
50- * An In-Memory (replaceable) XML store
51+ * An In-Memory (replaceable) XML store
52 (implements the XQuery Data Model (XDM) W3C recommendation)
53 * This release 0.9 passes 97.6% of the W3C tests of XQuery 1.0 test suite
54 and 99.4% of the XQuery Update Facility test suite.
55
56=== modified file 'include/zorba/store_consts.h'
57--- include/zorba/store_consts.h 2013-03-05 12:34:19 +0000
58+++ include/zorba/store_consts.h 2013-03-13 01:48:22 +0000
59@@ -4,7 +4,7 @@
60 * Licensed under the Apache License, Version 2.0 (the "License");
61 * you may not use this file except in compliance with the License.
62 * You may obtain a copy of the License at
63- *
64+ *
65 * http://www.apache.org/licenses/LICENSE-2.0
66 *
67 * Unless required by applicable law or agreed to in writing, software
68@@ -24,7 +24,7 @@
69
70 /*******************************************************************************
71 !!! ATTENTION: The order of the enum values within SchemaTypeCode is important.
72- !!! DO NOT change this order!!!!
73+ !!! DO NOT change this order!!!! DO NOT insert in the middle!!!!
74 ********************************************************************************/
75 enum SchemaTypeCode
76 {
77@@ -84,8 +84,9 @@
78
79 XS_QNAME = 43,
80 XS_NOTATION = 44,
81-
82+
83 JS_NULL = 45,
84+ XS_DATETIME_STAMP = 46,
85
86 XS_LAST
87 };
88@@ -97,7 +98,7 @@
89 {
90 public:
91
92- enum NsScoping
93+ enum NsScoping
94 {
95 ALL_NAMESPACES,
96 ONLY_LOCAL_NAMESPACES,
97@@ -118,7 +119,7 @@
98
99 static std::string toString(NodeKind k)
100 {
101- switch(k)
102+ switch(k)
103 {
104 case anyNode:
105 return "anyNode";
106@@ -151,7 +152,7 @@
107
108 static std::string toSchemaString(NodeKind k)
109 {
110- switch(k)
111+ switch(k)
112 {
113 case anyNode:
114 return "node";
115@@ -194,7 +195,7 @@
116
117 static std::string toString(JSONItemKind k)
118 {
119- switch(k)
120+ switch(k)
121 {
122 case jsonItem:
123 return "json-item";
124
125=== modified file 'modules/com/zorba-xquery/www/modules/datetime.xq'
126--- modules/com/zorba-xquery/www/modules/datetime.xq 2013-02-07 17:24:36 +0000
127+++ modules/com/zorba-xquery/www/modules/datetime.xq 2013-03-13 01:48:22 +0000
128@@ -78,7 +78,7 @@
129 : @return the non-stable datetime value
130 :)
131 declare %an:nondeterministic function datetime:current-dateTime()
132- as xs:dateTime external;
133+ as xs:dateTimeStamp external;
134
135 (:~
136 : Return the current time value in Universal time.
137
138=== modified file 'src/api/store_consts.cpp'
139--- src/api/store_consts.cpp 2012-12-12 19:34:45 +0000
140+++ src/api/store_consts.cpp 2013-03-13 01:48:22 +0000
141@@ -4,7 +4,7 @@
142 * Licensed under the Apache License, Version 2.0 (the "License");
143 * you may not use this file except in compliance with the License.
144 * You may obtain a copy of the License at
145- *
146+ *
147 * http://www.apache.org/licenses/LICENSE-2.0
148 *
149 * Unless required by applicable law or agreed to in writing, software
150@@ -70,6 +70,7 @@
151 "xs:QNAME", // 43
152 "xs:NOTATION", // 44
153 "js:null", // 45
154+ "xs:dateTimeStamp", // 46
155 };
156
157 if ( c >= 0 && c < XS_LAST )
158
159=== modified file 'src/context/dynamic_context.cpp'
160--- src/context/dynamic_context.cpp 2013-03-08 04:26:02 +0000
161+++ src/context/dynamic_context.cpp 2013-03-13 01:48:22 +0000
162@@ -64,7 +64,7 @@
163 /*******************************************************************************
164
165 ********************************************************************************/
166-dynamic_context::VarValue::~VarValue()
167+dynamic_context::VarValue::~VarValue()
168 {
169 switch (theState)
170 {
171@@ -90,7 +90,7 @@
172 }
173
174
175-dynamic_context::VarValue::VarValue(const VarValue& other)
176+dynamic_context::VarValue::VarValue(const VarValue& other)
177 {
178 switch (other.theState)
179 {
180@@ -140,7 +140,7 @@
181 }
182 else
183 {
184- theCurrentDateTime = parent->theCurrentDateTime;
185+ theCurrentDateTimeStamp = parent->theCurrentDateTimeStamp;
186 theTimezone = parent->theTimezone;
187 theDefaultCollectionUri = parent->theDefaultCollectionUri;
188 theLang = parent->theLang;
189@@ -222,7 +222,7 @@
190 ********************************************************************************/
191 void dynamic_context::set_current_date_time(const store::Item_t& aDateTimeItem)
192 {
193- this->theCurrentDateTime = aDateTimeItem;
194+ this->theCurrentDateTimeStamp = aDateTimeItem;
195 }
196
197
198@@ -239,8 +239,8 @@
199
200 set_implicit_timezone( tm.ZTM_GMTOFF );
201
202- GENV_ITEMFACTORY->createDateTime(
203- theCurrentDateTime,
204+ GENV_ITEMFACTORY->createDateTimeStamp(
205+ theCurrentDateTimeStamp,
206 static_cast<short>( tm.tm_year + TM_YEAR_BASE ),
207 static_cast<short>( tm.tm_mon + 1 ),
208 static_cast<short>( tm.tm_mday ),
209@@ -257,7 +257,7 @@
210 ********************************************************************************/
211 store::Item_t dynamic_context::get_current_date_time() const
212 {
213- return theCurrentDateTime;
214+ return theCurrentDateTimeStamp;
215 }
216
217
218@@ -278,20 +278,20 @@
219 int size = lstrlen(envVarsSTR);
220
221 char * envVar = new char[size+1];
222-
223-
224- WideCharToMultiByte( CP_ACP,
225- WC_NO_BEST_FIT_CHARS|WC_COMPOSITECHECK|WC_DEFAULTCHAR,
226- envVarsSTR,
227- size+1,
228- envVar,
229+
230+
231+ WideCharToMultiByte( CP_ACP,
232+ WC_NO_BEST_FIT_CHARS|WC_COMPOSITECHECK|WC_DEFAULTCHAR,
233+ envVarsSTR,
234+ size+1,
235+ envVar,
236 size+1,
237 NULL,
238 NULL);
239-
240+
241
242 zstring envVarZS(envVar);
243-
244+
245 int eqPos = envVarZS.find_first_of("=");
246
247 if (eqPos > 0)
248@@ -302,48 +302,48 @@
249 if (!varname.empty() || !varvalue.empty())
250 theEnvironmentVariables->insert(std::pair<zstring, zstring>(varname,varvalue));
251 }
252-
253+
254 delete envVar;
255 envVarsSTR += lstrlen(envVarsSTR) + 1;
256 }
257-
258+
259 FreeEnvironmentStrings(envVarsCH);
260-#else
261+#else
262 const char* invalid_char;
263 for (char **env = environ; *env; ++env)
264 {
265 zstring envVarZS(*env);
266-
267+
268 if ((invalid_char = utf8::validate(envVarZS.c_str())) != NULL)
269 throw XQUERY_EXCEPTION(err::FOCH0001,
270- ERROR_PARAMS(zstring("#x") +
271- BUILD_STRING(std::uppercase << std::hex
272+ ERROR_PARAMS(zstring("#x") +
273+ BUILD_STRING(std::uppercase << std::hex
274 << (static_cast<unsigned int>(*invalid_char)&0xFF))));
275
276 if ((invalid_char = utf8::validate(envVarZS.c_str())) != NULL)
277 {
278- throw XQUERY_EXCEPTION(err::FOCH0001,
279- ERROR_PARAMS(zstring("#x") +
280+ throw XQUERY_EXCEPTION(err::FOCH0001,
281+ ERROR_PARAMS(zstring("#x") +
282 BUILD_STRING(std::uppercase << std::hex
283 << (static_cast<unsigned int>(*invalid_char) & 0xFF)) ));
284 }
285
286 int size = envVarZS.size();
287-
288+
289 int eqPos = envVarZS.find_first_of("=");
290-
291+
292 if (eqPos > 0)
293 {
294 zstring varname(envVarZS.substr(0, eqPos));
295 zstring varvalue(envVarZS.substr(eqPos+1, size));
296-
297+
298 if (!varname.empty() || !varvalue.empty())
299 theEnvironmentVariables->insert(std::pair<zstring, zstring>(varname,varvalue));
300- }
301+ }
302 }
303-
304+
305 #endif
306-
307+
308 }
309 /*******************************************************************************
310
311@@ -373,7 +373,7 @@
312 return NULL;
313 }
314
315- return GENV_STORE.createTempSeq(lVarNames)->getIterator();
316+ return GENV_STORE.createTempSeq(lVarNames)->getIterator();
317 }
318
319 /*******************************************************************************
320@@ -394,7 +394,7 @@
321 return NULL;
322 }
323
324- store::Item_t value;
325+ store::Item_t value;
326 zstring varvalue = lIter->second;
327 GENV_ITEMFACTORY->createString(value, varvalue);
328 return value;
329@@ -403,7 +403,7 @@
330 /*******************************************************************************
331
332 ********************************************************************************/
333-void dynamic_context::add_variable(ulong varid, store::Iterator_t& value)
334+void dynamic_context::add_variable(ulong varid, store::Iterator_t& value)
335 {
336 declare_variable(varid);
337 set_variable(varid, NULL, QueryLoc::null, value);
338@@ -413,7 +413,7 @@
339 /*******************************************************************************
340
341 ********************************************************************************/
342-void dynamic_context::add_variable(ulong varid, store::Item_t& value)
343+void dynamic_context::add_variable(ulong varid, store::Item_t& value)
344 {
345 declare_variable(varid);
346 set_variable(varid, NULL, QueryLoc::null, value);
347@@ -455,7 +455,7 @@
348
349 // For now, use eager eval because the assignment expression may reference
350 // the variable itself, and the current value of the variable is overwriten
351- // here by this temp sequence. TODO: use lazy eval if we know the the
352+ // here by this temp sequence. TODO: use lazy eval if we know the the
353 // assignment expression does not reference the variable itself.
354 store::TempSeq_t seq = GENV_STORE.createTempSeq(valueIter, false); // no lazy eval
355
356@@ -523,7 +523,7 @@
357 {
358 assert(var.theValue.item == NULL);
359 }
360- else
361+ else
362 {
363 ZORBA_ASSERT(false);
364 }
365@@ -564,7 +564,7 @@
366 {
367 assert(var.theValue.item == NULL);
368 }
369- else
370+ else
371 {
372 ZORBA_ASSERT(false);
373 }
374@@ -656,7 +656,7 @@
375 /*******************************************************************************
376
377 ********************************************************************************/
378-void dynamic_context::destroy_dctx_value(dctx_value_t* val)
379+void dynamic_context::destroy_dctx_value(dctx_value_t* val)
380 {
381 switch (val->type)
382 {
383@@ -941,7 +941,7 @@
384
385 val = lIter.getValue();
386
387- ExternalFunctionParameter* lRes =
388+ ExternalFunctionParameter* lRes =
389 static_cast<ExternalFunctionParameter*>(val.func_param);
390
391 return lRes;
392
393=== modified file 'src/context/dynamic_context.h'
394--- src/context/dynamic_context.h 2013-03-08 04:26:02 +0000
395+++ src/context/dynamic_context.h 2013-03-13 01:48:22 +0000
396@@ -56,7 +56,7 @@
397
398 public:
399
400- static enum ID_VARS
401+ static enum ID_VARS
402 {
403 IDVAR_CONTEXT_ITEM=1,
404 IDVAR_CONTEXT_ITEM_POSITION,
405@@ -106,7 +106,7 @@
406 {
407 no_val,
408 ext_func_param, // params that can be used by ext. functions
409- ext_func_param_typed
410+ ext_func_param_typed
411 } val_type_t;
412
413 val_type_t type;
414@@ -122,7 +122,7 @@
415 protected:
416 dynamic_context * theParent;
417
418- store::Item_t theCurrentDateTime;
419+ store::Item_t theCurrentDateTimeStamp;
420
421 long theTimezone;
422
423@@ -204,13 +204,13 @@
424 store::Item_t& value);
425
426 void set_variable(
427- ulong varid,
428+ ulong varid,
429 const store::Item_t& varname,
430 const QueryLoc& loc,
431 store::Iterator_t& value);
432
433 void unset_variable(
434- ulong varid,
435+ ulong varid,
436 const store::Item_t& varname,
437 const QueryLoc& loc);
438
439
440=== modified file 'src/functions/pregenerated/func_context.cpp'
441--- src/functions/pregenerated/func_context.cpp 2013-03-05 23:11:50 +0000
442+++ src/functions/pregenerated/func_context.cpp 2013-03-13 01:48:22 +0000
443@@ -118,7 +118,7 @@
444 {
445 DECL_WITH_KIND(sctx, fn_current_dateTime,
446 (createQName("http://www.w3.org/2005/xpath-functions","","current-dateTime"),
447- GENV_TYPESYSTEM.DATETIME_TYPE_ONE),
448+ GENV_TYPESYSTEM.DATETIME_STAMP_TYPE_ONE),
449 FunctionConsts::FN_CURRENT_DATETIME_0);
450
451 }
452
453=== modified file 'src/functions/pregenerated/func_datetime.cpp'
454--- src/functions/pregenerated/func_datetime.cpp 2013-03-05 23:11:50 +0000
455+++ src/functions/pregenerated/func_datetime.cpp 2013-03-13 01:48:22 +0000
456@@ -139,7 +139,7 @@
457 {
458 DECL_WITH_KIND(sctx, fn_zorba_dateTime_current_dateTime,
459 (createQName("http://www.zorba-xquery.com/modules/datetime","","current-dateTime"),
460- GENV_TYPESYSTEM.DATETIME_TYPE_ONE),
461+ GENV_TYPESYSTEM.DATETIME_STAMP_TYPE_ONE),
462 FunctionConsts::FN_ZORBA_DATETIME_CURRENT_DATETIME_0);
463
464 }
465
466=== modified file 'src/runtime/datetime/datetime_impl.cpp'
467--- src/runtime/datetime/datetime_impl.cpp 2013-02-13 01:57:47 +0000
468+++ src/runtime/datetime/datetime_impl.cpp 2013-03-13 01:48:22 +0000
469@@ -184,7 +184,7 @@
470 PlanIteratorState *state;
471 DEFAULT_STACK_INIT( PlanIteratorState, state, plan_state );
472
473- GENV_ITEMFACTORY->createDateTime(
474+ GENV_ITEMFACTORY->createDateTimeStamp(
475 result,
476 static_cast<short>( tm.tm_year + TM_YEAR_BASE ),
477 static_cast<short>( tm.tm_mon + 1 ),
478
479=== modified file 'src/runtime/spec/codegen-cpp.xq'
480--- src/runtime/spec/codegen-cpp.xq 2013-02-07 17:24:36 +0000
481+++ src/runtime/spec/codegen-cpp.xq 2013-03-13 01:48:22 +0000
482@@ -381,7 +381,9 @@
483 else if(ends-with($param,'*')) then 'TYPE_STAR'
484 else 'TYPE_ONE'
485
486- let $prefix as xs:string := string($mapping/zorba:types//zorba:type[starts-with($param, text())][1]/@zorbaType)
487+ let $prefix as xs:string := string($mapping/zorba:types//zorba:type[text() = string($param)]/@zorbaType)
488+ let $prefix := if ($prefix = "") then string($mapping/zorba:types//zorba:type[starts-with($param, text())][1]/@zorbaType)
489+ else $prefix
490
491 return string-join (('GENV_TYPESYSTEM.', $prefix, '_', $suffix), '')
492 else
493
494=== modified file 'src/runtime/spec/context/context.xml'
495--- src/runtime/spec/context/context.xml 2013-02-07 17:24:36 +0000
496+++ src/runtime/spec/context/context.xml 2013-03-13 01:48:22 +0000
497@@ -17,7 +17,7 @@
498 <zorba:function>
499
500 <zorba:signature localname="current-dateTime" prefix="fn">
501- <zorba:output>xs:dateTime</zorba:output>
502+ <zorba:output>xs:dateTimeStamp</zorba:output>
503 </zorba:signature>
504
505 <zorba:methods>
506
507=== modified file 'src/runtime/spec/datetime/datetime.xml'
508--- src/runtime/spec/datetime/datetime.xml 2013-01-29 06:10:09 +0000
509+++ src/runtime/spec/datetime/datetime.xml 2013-03-13 01:48:22 +0000
510@@ -28,7 +28,7 @@
511 </zorba:description>
512 <zorba:function>
513 <zorba:signature localname="current-dateTime" prefix="fn-zorba-dateTime">
514- <zorba:output>xs:dateTime</zorba:output>
515+ <zorba:output>xs:dateTimeStamp</zorba:output>
516 </zorba:signature>
517 </zorba:function>
518 </zorba:iterator>
519
520=== modified file 'src/runtime/spec/mappings.xml'
521--- src/runtime/spec/mappings.xml 2013-03-04 16:17:30 +0000
522+++ src/runtime/spec/mappings.xml 2013-03-13 01:48:22 +0000
523@@ -221,6 +221,7 @@
524 <zorba:type zorbaType="JSON_ARRAY">array()</zorba:type>
525 <zorba:type zorbaType="JSON_OBJECT">object()</zorba:type>
526 <zorba:type zorbaType="JS_NULL">js:null</zorba:type>
527+ <zorba:type zorbaType="DATETIME_STAMP">xs:dateTimeStamp</zorba:type>
528 </zorba:types>
529
530 <!-- XQuery Occurrence Indicators -->
531
532=== modified file 'src/runtime/xqdoc/xqdoc_impl.cpp'
533--- src/runtime/xqdoc/xqdoc_impl.cpp 2013-02-07 17:24:36 +0000
534+++ src/runtime/xqdoc/xqdoc_impl.cpp 2013-03-13 01:48:22 +0000
535@@ -1,12 +1,12 @@
536 /*
537 * Copyright 2006-2012 The FLWOR Foundation.
538- *
539+ *
540 * Licensed under the Apache License, Version 2.0 (the "License");
541 * you may not use this file except in compliance with the License.
542 * You may obtain a copy of the License at
543- *
544+ *
545 * http://www.apache.org/licenses/LICENSE-2.0
546- *
547+ *
548 * Unless required by applicable law or agreed to in writing, software
549 * distributed under the License is distributed on an "AS IS" BASIS,
550 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
551@@ -84,7 +84,7 @@
552 XQDocContentIterator::nextImpl(store::Item_t& result, PlanState& planState) const
553 {
554 store::Item_t lCodeItem, lFileNameItem, lOptionsItem;
555- bool lIgnoreComments = true;
556+ //bool lIgnoreComments = true;
557 uint32_t lXQDocOptions;
558
559 PlanIteratorState* state;
560@@ -107,14 +107,14 @@
561 lXQDocOptions = 0xFFFFFFFF;
562 }
563
564- try
565+ try
566 {
567 std::istringstream is(lCodeItem->getStringValue().c_str());
568
569- // setup a new CompilerCB and a new XQueryCompiler
570+ // setup a new CompilerCB and a new XQueryCompiler
571 CompilerCB lCompilerCB(*planState.theCompilerCB);
572
573- // the XQueryCompiler's constructor destroys the existing type manager
574+ // the XQueryCompiler's constructor destroys the existing type manager
575 // in the static context. Hence, we create a new one
576 XQueryCompiler lCompiler(&lCompilerCB);
577
578@@ -125,7 +125,7 @@
579 planState.theLocalDynCtx->get_current_date_time(),
580 lXQDocOptions);
581 }
582- catch (XQueryException& e)
583+ catch (XQueryException& e)
584 {
585 set_source( e, loc );
586 throw;
587
588=== modified file 'src/store/api/item_factory.h'
589--- src/store/api/item_factory.h 2013-03-05 12:34:19 +0000
590+++ src/store/api/item_factory.h 2013-03-13 01:48:22 +0000
591@@ -409,6 +409,50 @@
592 virtual bool createDateTime(Item_t& result, const Item_t&, const Item_t&) = 0;
593
594
595+ virtual bool createDateTimeStamp(
596+ Item_t& result,
597+ const xs_dateTime* value) = 0;
598+
599+ virtual bool createDateTimeStamp(
600+ store::Item_t& result,
601+ const xs_date* date,
602+ const xs_time* time) = 0;
603+
604+
605+ /**
606+ * @param year
607+ * @param month
608+ * @param day
609+ * @param hour
610+ * @param minute
611+ * @param second
612+ * @param timeZone_hours Difference in hours to UTC
613+ */
614+ virtual bool createDateTimeStamp(
615+ Item_t& result,
616+ short year,
617+ short month,
618+ short day,
619+ short hour,
620+ short minute,
621+ double second,
622+ short timeZone_hours) = 0;
623+
624+ /**
625+ * Specification: [http://www.w3.org/TR/xmlschema11-2/#dateTimeStamp]
626+ * @param value string representation of the value
627+ */
628+ virtual bool createDateTimeStamp(Item_t& result, const char* str, ulong strlen) = 0;
629+
630+ /**
631+ * Specification: [http://www.w3.org/TR/xpath-functions/] Section 5.2
632+ *
633+ * @param xs:date Item (might be NULL)
634+ * @param xs:time Item (must not be NULL)
635+ */
636+ virtual bool createDateTimeStamp(Item_t& result, const Item_t&, const Item_t&) = 0;
637+
638+
639 virtual bool createDate(Item_t& result, const xs_date* value) = 0;
640
641 /**
642@@ -547,7 +591,7 @@
643 * @param seconds
644 */
645 virtual bool createDuration (
646- Item_t& result, short years,
647+ Item_t& result, short years,
648 short months,
649 short days,
650 short hours,
651@@ -570,7 +614,7 @@
652 zstring& docUri) = 0;
653
654 /**
655- * Create a new element node N and place it as the last child of a given
656+ * Create a new element node N and place it as the last child of a given
657 * parent node. If no parent is given, N becomes the root (and single node)
658 * of a new XML tree.
659 *
660@@ -652,7 +696,7 @@
661 /**
662 * Create a new text node N to store the typed value of an element node P, and
663 * place N as the last child of P. Notice that in this case, P cannot have any
664- * subelements.
665+ * subelements.
666 *
667 * @param result The new node N created by this method
668 * @param parent The parent P of the new node; may NOT be NULL.
669@@ -771,7 +815,7 @@
670 bool accumulate) = 0;
671
672 /**
673- *
674+ *
675 */
676 virtual bool createJSONObject(
677 Item_t& result,
678
679=== modified file 'src/store/naive/simple_item_factory.cpp'
680--- src/store/naive/simple_item_factory.cpp 2013-03-11 19:45:27 +0000
681+++ src/store/naive/simple_item_factory.cpp 2013-03-13 01:48:22 +0000
682@@ -580,6 +580,114 @@
683 }
684
685
686+bool BasicItemFactory::createDateTimeStamp(store::Item_t& result, const xs_dateTime* value)
687+{
688+ if( value->hasTimezone() )
689+ {
690+ result = new DateTimeItem(store::XS_DATETIME, value);
691+ return true;
692+ }
693+ else
694+ {
695+ result = NULL;
696+ return false;
697+ }
698+}
699+
700+
701+bool BasicItemFactory::createDateTimeStamp(
702+ store::Item_t& result,
703+ const xs_date* date,
704+ const xs_time* time)
705+{
706+ std::auto_ptr<DateTimeItem> dtin(new DateTimeItem(store::XS_DATETIME_STAMP));
707+ int err = DateTime::createDateTime(date, time, dtin->theValue);
708+ if (err == 0 && time->hasTimezone())
709+ {
710+ result = dtin.get();
711+ dtin.release();
712+ return true;
713+ }
714+ else
715+ {
716+ result = NULL;
717+ return false;
718+ }
719+}
720+
721+
722+bool BasicItemFactory::createDateTimeStamp(
723+ store::Item_t& result,
724+ short year ,
725+ short month,
726+ short day,
727+ short hour,
728+ short minute,
729+ double second,
730+ short timeZone_hours)
731+{
732+ DateTime dt;
733+ TimeZone tz(timeZone_hours);
734+
735+ if (DateTime::createDateTime(year, month, day, hour, minute, second, &tz, dt) == 0)
736+ {
737+ result = new DateTimeItem(store::XS_DATETIME_STAMP, &dt);
738+ return true;
739+ }
740+ else
741+ {
742+ result = NULL;
743+ return false;
744+ }
745+}
746+
747+
748+bool BasicItemFactory::createDateTimeStamp(
749+ store::Item_t& result,
750+ const char* str,
751+ ulong strlen)
752+{
753+ DateTime dt;
754+
755+ if (DateTime::parseDateTime(str, strlen, dt) == 0 && dt.hasTimezone())
756+ {
757+ result = new DateTimeItem(store::XS_DATETIME_STAMP, &dt);
758+ return true;
759+ }
760+ else
761+ {
762+ result = NULL;
763+ return false;
764+ }
765+}
766+
767+
768+bool BasicItemFactory::createDateTimeStamp(
769+ store::Item_t& result,
770+ const store::Item_t& date,
771+ const store::Item_t& time)
772+{
773+ if ( time.isNull() )
774+ {
775+ throw XQUERY_EXCEPTION(err::FORG0001);
776+ }
777+ else if (date.isNull() || time.isNull())
778+ {
779+ result = NULL;
780+ return false;
781+ }
782+ else
783+ {
784+ const xs_date& d = date->getDateValue();
785+ const xs_time& t = time->getTimeValue();
786+ if (! createDateTimeStamp( result, &d, &t))
787+ throw XQUERY_EXCEPTION(err::FORG0008, ERROR_PARAMS(d, t));
788+
789+ return true;
790+ }
791+}
792+
793+
794 bool BasicItemFactory::createDate(store::Item_t& result, const xs_date* value)
795 {
796 result = new DateTimeItem(store::XS_DATE, value);
797
798=== modified file 'src/store/naive/simple_item_factory.h'
799--- src/store/naive/simple_item_factory.h 2013-03-07 10:10:10 +0000
800+++ src/store/naive/simple_item_factory.h 2013-03-13 01:48:22 +0000
801@@ -190,6 +190,16 @@
802
803 bool createDateTime(store::Item_t& result, const store::Item_t&, const store::Item_t&);
804
805+ bool createDateTimeStamp(store::Item_t& result, const xs_date* date, const xs_time* time);
806+
807+ bool createDateTimeStamp(store::Item_t& result, const xs_dateTime* value);
808+
809+ bool createDateTimeStamp(store::Item_t& result, short year , short month, short day, short hour, short minute, double second, short timeZone_hours);
810+
811+ bool createDateTimeStamp(store::Item_t& result, const char* str, ulong strlen);
812+
813+ bool createDateTimeStamp(store::Item_t& result, const store::Item_t&, const store::Item_t&);
814+
815 bool createDate(store::Item_t& result, const xs_date* value);
816
817 bool createDate(store::Item_t& result, short year, short month, short day);
818
819=== modified file 'src/store/naive/store.cpp'
820--- src/store/naive/store.cpp 2013-02-26 04:12:43 +0000
821+++ src/store/naive/store.cpp 2013-03-13 01:48:22 +0000
822@@ -215,6 +215,7 @@
823 theSchemaTypeNames[store::XS_ENTITY] = theQNamePool->insert(ns, "xs", "ENTITY");
824
825 theSchemaTypeNames[store::XS_DATETIME] = theQNamePool->insert(ns, "xs", "dateTime");
826+ theSchemaTypeNames[store::XS_DATETIME_STAMP] = theQNamePool->insert(ns, "xs", "dateTimeStamp");
827 theSchemaTypeNames[store::XS_DATE] = theQNamePool->insert(ns, "xs", "date");
828 theSchemaTypeNames[store::XS_TIME] = theQNamePool->insert(ns, "xs", "time");
829 theSchemaTypeNames[store::XS_GYEAR_MONTH] = theQNamePool->insert(ns, "xs", "gYearMonth");
830
831=== modified file 'src/types/casting.cpp'
832--- src/types/casting.cpp 2013-03-05 12:34:19 +0000
833+++ src/types/casting.cpp 2013-03-13 01:48:22 +0000
834@@ -224,6 +224,7 @@
835 SAME_S_AND_T(NOT)
836 SAME_S_AND_T(NUL)
837 SAME_S_AND_T(uint)
838+SAME_S_AND_T(dTSt)
839
840 #undef SAME_S_AND_T
841
842@@ -389,6 +390,20 @@
843 }
844
845
846+T1_TO_T2(str, dTSt)
847+{
848+ xs_dateTime dt;
849+ if (0 == DateTime::parseDateTime(strval.c_str(), strval.size(), dt) &&
850+ dt.hasTimezone() )
851+ {
852+ aFactory->createDateTimeStamp(result, &dt);
853+ return;
854+ }
855+
856+ throwFORG0001Exception(strval, errInfo);
857+}
858+
859+
860 T1_TO_T2(str, tim)
861 {
862 xs_time t;
863@@ -725,6 +740,14 @@
864 }
865
866
867+T1_TO_T2(uA, dTSt)
868+{
869+ zstring strval2;
870+ aItem->getStringValue2(strval2);
871+ str_dTSt(result, aItem, strval2, aFactory, nsCtx, errInfo);
872+}
873+
874+
875 T1_TO_T2(uA, tim)
876 {
877 zstring strval2;
878@@ -1191,6 +1214,14 @@
879 }
880
881
882+T1_TO_T2(dT, dTSt)
883+{
884+ DateTime dt;
885+ dt = aItem->getDateTimeValue(); //.createWithNewFacet(DateTime::DATETIME_FACET, dt);
886+ aFactory->createDateTimeStamp(result, &dt);
887+}
888+
889+
890 T1_TO_T2(dat, gYM)
891 {
892 DateTime dt;
893@@ -1883,7 +1914,7 @@
894
895 /*******************************************************************************
896 For each builtin atomic type T, this array maps the typecode of T to an
897- index to be used in addessing theCastingMatrix.
898+ index to be used in addessing theCastMatrix.
899 ********************************************************************************/
900 const int GenericCast::theMapping[store::XS_LAST] =
901 {
902@@ -1932,14 +1963,15 @@
903 20, // 42 XS_ANY_URI
904 21, // 43 XS_QNAME
905 22, // 44 XS_NOTATION
906- 23 // 45 JS_NULL
907+ 23, // 45 JS_NULL
908+ 25, // 46 XS_DATETIME_STAMP
909 };
910
911
912 /*******************************************************************************
913
914 ********************************************************************************/
915-const GenericCast::DownCastFunc GenericCast::theDownCastMatrix[25] =
916+const GenericCast::DownCastFunc GenericCast::theDownCastMatrix[26] =
917 {
918 /*uA*/ 0,
919 /*str*/ str_down,
920@@ -1965,144 +1997,150 @@
921 /*QN*/ 0,
922 /*NOT*/ 0,
923 /*uint*/ int_down,
924-/*null*/ 0
925+/*null*/ 0,
926+/*dtSt*/ 0,
927 };
928
929
930 /*******************************************************************************
931
932 ********************************************************************************/
933-const GenericCast::CastFunc GenericCast::theCastMatrix[25][25] =
934+const GenericCast::CastFunc GenericCast::theCastMatrix[26][26] =
935 {
936 // uA str flt dbl dec int dur yMD
937 // dTD dT tim dat gYM gYr gMD gDay
938 // gMon bool b64 hxB aURI QN NOT uint
939-// null
940+// null dTSt
941
942 {&uA_uA, &uA_str, &uA_flt, &uA_dbl , &uA_dec , &uA_int, &uA_dur, &uA_yMD,
943 &uA_dTD, &uA_dT, &uA_tim, &uA_dat, &uA_gYM , &uA_gYr , &uA_gMD, &uA_gDay,
944- &uA_gMon, &uA_bool, &uA_b64, &uA_hxB, &uA_aURI, 0, 0, &uA_uint,
945- 0}, // uA
946+ &uA_gMon, &uA_bool, &uA_b64, &uA_hxB, &uA_aURI, 0, 0, &uA_uint,
947+ 0, &uA_dTSt}, // uA
948
949 {&str_uA, &str_str, &str_flt, &str_dbl, &str_dec, &str_int, &str_dur, &str_yMD,
950 &str_dTD, &str_dT, &str_tim, &str_dat, &str_gYM, &str_gYr, &str_gMD, &str_gDay,
951 &str_gMon, &str_bool, &str_b64, &str_hxB, &str_aURI, &str_QN, &str_NOT, &str_uint,
952- 0}, // str
953+ 0, &str_dTSt}, // str
954
955 {&flt_uA, &flt_str, &flt_flt, &flt_dbl, &flt_dec, &flt_int, 0, 0,
956 0, 0, 0, 0, 0, 0, 0, 0,
957 0, &flt_bool, 0, 0, 0, 0, 0, &flt_uint,
958- 0}, // flt
959+ 0, 0}, // flt
960
961 {&dbl_uA, &dbl_str, &dbl_flt, &dbl_dbl, &dbl_dec, &dbl_int, 0, 0,
962 0, 0, 0, 0, 0, 0, 0, 0,
963 0, &dbl_bool, 0, 0, 0, 0, 0, &dbl_uint,
964- 0}, // dbl
965+ 0, 0}, // dbl
966
967 {&dec_uA, &dec_str, &dec_flt, &dec_dbl, &dec_dec, &dec_int, 0, 0,
968 0, 0, 0, 0, 0, 0, 0, 0,
969 0, &dec_bool, 0, 0, 0, 0, 0, &dec_uint,
970- 0}, // dec
971+ 0, 0}, // dec
972
973 {&int_uA, &int_str, &int_flt, &int_dbl, &int_dec, &int_int, 0, 0,
974 0, 0, 0, 0, 0, 0, 0, 0,
975 0, &int_bool, 0, 0, 0, 0, 0, &int_uint,
976- 0}, // int
977+ 0, 0}, // int
978
979 {&dur_uA, &dur_str, 0, 0, 0, 0, &dur_dur, &dur_yMD,
980 &dur_dTD, 0, 0, 0, 0, 0, 0, 0,
981 0, 0, 0, 0, 0, 0, 0, 0,
982- 0}, // dur
983+ 0, 0}, // dur
984
985 {&yMD_uA, &yMD_str, 0, 0, 0, 0, &yMD_dur, &yMD_yMD,
986 &yMD_dTD, 0, 0, 0, 0, 0, 0, 0,
987 0, 0, 0, 0, 0, 0, 0, 0,
988- 0}, // yMD
989+ 0, 0}, // yMD
990
991 {&dTD_uA, &dTD_str, 0, 0, 0, 0, &dTD_dur, &dTD_yMD,
992 &dTD_dTD, 0, 0, 0, 0, 0, 0, 0,
993 0, 0, 0, 0, 0, 0, 0, 0,
994- 0}, // dTD
995+ 0, 0}, // dTD
996
997 {&dT_uA, &dT_str, 0, 0, 0, 0, 0, 0,
998 0, &dT_dT, &dT_tim, &dT_dat, &dT_gYM, &dT_gYr, &dT_gMD, &dT_gDay,
999 &dT_gMon, 0, 0, 0, 0, 0, 0, 0,
1000- 0}, // dT
1001+ 0, &dT_dTSt}, // dT
1002
1003 {&tim_uA, &tim_str, 0, 0, 0, 0, 0, 0,
1004 0, 0, &tim_tim, 0, 0, 0, 0, 0,
1005 0, 0, 0, 0, 0, 0, 0, 0,
1006- 0}, // tim
1007+ 0, 0}, // tim
1008
1009 {&dat_uA, &dat_str, 0, 0, 0, 0, 0, 0,
1010 0, &dat_dT, 0, &dat_dat, &dat_gYM, &dat_gYr, &dat_gMD, &dat_gDay,
1011 &dat_gMon, 0, 0, 0, 0, 0, 0, 0,
1012- 0}, // dat
1013+ 0, 0}, // dat
1014
1015 {&gYM_uA, &gYM_str, 0, 0, 0, 0, 0, 0,
1016 0, 0, 0, 0, &gYM_gYM, 0, 0, 0,
1017 0, 0, 0, 0, 0, 0, 0, 0,
1018- 0}, // gYM
1019+ 0, 0}, // gYM
1020
1021 {&gYr_uA, &gYr_str, 0, 0, 0, 0, 0, 0,
1022 0, 0, 0, 0, 0, &gYr_gYr, 0, 0,
1023 0, 0, 0, 0, 0, 0, 0, 0,
1024- 0}, // gYr
1025+ 0, 0}, // gYr
1026
1027 {&gMD_uA, &gMD_str, 0, 0, 0, 0, 0, 0,
1028 0, 0, 0, 0, 0, 0, &gMD_gMD, 0,
1029 0, 0, 0, 0, 0, 0, 0, 0,
1030- 0}, // gMD
1031+ 0, 0}, // gMD
1032
1033 {&gDay_uA, &gDay_str, 0, 0, 0, 0, 0, 0,
1034 0, 0, 0, 0, 0, 0, 0, &gDay_gDay,
1035 0, 0, 0, 0, 0, 0, 0, 0,
1036- 0}, // gDay
1037+ 0, 0}, // gDay
1038
1039 {&gMon_uA, &gMon_str, 0, 0, 0, 0, 0, 0,
1040 0, 0, 0, 0, 0, 0, 0, 0,
1041 &gMon_gMon,0, 0, 0, 0, 0, 0, 0,
1042- 0}, // gMon
1043+ 0, 0}, // gMon
1044
1045 {&bool_uA, &bool_str, &bool_flt, &bool_dbl, &bool_dec, &bool_int, 0, 0,
1046 0, 0, 0, 0, 0, 0, 0, 0,
1047 0, &bool_bool,0, 0, 0, 0, 0, &bool_uint,
1048- 0}, // bool
1049+ 0, 0}, // bool
1050
1051 {&b64_uA, &b64_str, 0, 0, 0, 0, 0, 0,
1052 0, 0, 0, 0, 0, 0, 0, 0,
1053 0, 0, &b64_b64, &b64_hxB, 0, 0, 0, 0,
1054- 0}, // b64
1055+ 0, 0}, // b64
1056
1057 {&hxB_uA, &hxB_str, 0, 0, 0, 0, 0, 0,
1058 0, 0, 0, 0, 0, 0, 0, 0,
1059 0, 0, &hxB_b64, &hxB_hxB, 0, 0, 0, 0,
1060- 0}, // hxB
1061+ 0, 0}, // hxB
1062
1063 {&aURI_uA, &aURI_str, 0, 0, 0, 0, 0, 0,
1064 0, 0, 0, 0, 0, 0, 0, 0,
1065 0, 0, 0, 0, &aURI_aURI,0, 0, 0,
1066- 0}, // aURI
1067+ 0, 0}, // aURI
1068
1069 {&QN_uA, &QN_str, 0, 0, 0, 0, 0, 0,
1070 0, 0, 0, 0, 0, 0, 0, 0,
1071 0, 0, 0, 0, 0, &QN_QN, 0, 0,
1072- 0}, // QN
1073+ 0, 0}, // QN
1074
1075 {&NOT_uA, &NOT_str, 0, 0, 0, 0, 0, 0,
1076 0, 0, 0, 0, 0, 0, 0, 0,
1077 0, 0, 0, 0, 0, 0, &NOT_NOT, 0,
1078- 0}, // NOT
1079+ 0, 0}, // NOT
1080
1081 {&uint_uA, &uint_str, &uint_flt, &uint_dbl, &uint_dec, &uint_int, 0, 0,
1082 0, 0, 0, 0, 0, 0, 0, 0,
1083 0, &uint_bool,0, 0, 0, 0, 0, &uint_uint,
1084- 0},
1085+ 0, 0},
1086
1087 {0, &NUL_str, 0, 0, 0, 0, 0, 0,
1088 0, 0, 0, 0, 0, 0, 0, 0,
1089 0, 0, 0, 0, 0, 0, 0, 0,
1090- &NUL_NUL} // NUL
1091+ &NUL_NUL, 0}, // Nul
1092+
1093+{&dT_uA, &dT_str, 0, 0, 0, 0, 0, 0,
1094+ 0, &dT_dTSt, &dT_tim, &dT_dat, &dT_gYM, &dT_gYr, &dT_gMD, &dT_gDay,
1095+ &dT_gMon, 0, 0, 0, 0, 0, 0, 0,
1096+ 0, &dTSt_dTSt}, // dTS
1097 };
1098
1099
1100
1101=== modified file 'src/types/casting.h'
1102--- src/types/casting.h 2013-02-07 17:24:36 +0000
1103+++ src/types/casting.h 2013-03-13 01:48:22 +0000
1104@@ -50,8 +50,8 @@
1105
1106 private:
1107 static const int theMapping[store::XS_LAST];
1108- static const CastFunc theCastMatrix[25][25];
1109- static const DownCastFunc theDownCastMatrix[25];
1110+ static const CastFunc theCastMatrix[26][26];
1111+ static const DownCastFunc theDownCastMatrix[26];
1112
1113 GenericCast() {}
1114
1115
1116=== modified file 'src/types/root_typemanager.cpp'
1117--- src/types/root_typemanager.cpp 2013-03-07 10:10:10 +0000
1118+++ src/types/root_typemanager.cpp 2013-03-13 01:48:22 +0000
1119@@ -46,53 +46,54 @@
1120 const TypeConstants::castable_t
1121 RootTypeManager::ATOMIC_CAST_MATRIX[store::XS_LAST][store::XS_LAST] =
1122 {
1123-// aA s nS t l NM Na NC ID IR EN uA dT d t d yM dT f do de i nP nI l i s b nn uL uI uS uB pI YM Y MD D M b 64 hB aU QN NO nu
1124- {Y, Y, M, M, M, M, M, M, M, M, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N}, /* anyAtomicType */
1125- {Y, Y, M, M, M, M, M, M, M, M, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N}, /* string */
1126- {Y, Y, Y, M, M, M, M, M, M, M, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N}, /* normalizedString */
1127- {Y, Y, Y, Y, M, M, M, M, M, M, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N}, /* token */
1128- {Y, Y, Y, Y, Y, M, M, M, M, M, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N}, /* language */
1129- {Y, Y, Y, Y, M, Y, M, M, M, M, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N}, /* NMTOKEM */
1130- {Y, Y, Y, Y, M, M, Y, M, M, M, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N}, /* Name */
1131- {Y, Y, Y, Y, M, M, Y, Y, M, M, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N}, /* NCMame */
1132- {Y, Y, Y, Y, M, M, Y, Y, Y, M, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N}, /* ID */
1133- {Y, Y, Y, Y, M, M, Y, Y, M, Y, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N}, /* IDREF */
1134- {Y, Y, Y, Y, M, M, Y, Y, M, M, Y, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N}, /* ENTITY */
1135- {Y, Y, M, M, M, M, M, M, M, M, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N, N, N}, /* untypedAtomic */
1136- {Y, Y, M, M, M, M, M, M, M, M, M, Y, Y, Y, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, Y, Y, Y, Y, N, N, N, N, N, N, N}, /* dateTime */
1137- {Y, Y, M, M, M, M, M, M, M, M, M, Y, Y, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, Y, Y, Y, Y, N, N, N, N, N, N, N}, /* date */
1138- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N}, /* time */
1139- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, Y, Y, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N}, /* duration */
1140- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, Y, Y, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N}, /* yearMonthDuration */
1141- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, Y, Y, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N}, /* dayTimeDuration */
1142- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N}, /* float */
1143- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N}, /* double */
1144- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N}, /* decimal */
1145- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, M, M, M, M, M, M, M, M, M, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N}, /* integer */
1146- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, Y, M, M, M, M, M, M, M, M, M, M, N, N, N, N, N, N, Y, N, N, N, N, N, N}, /* nonPositiveInteger */
1147- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, Y, Y, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, Y, N, N, N, N, N, N}, /* negativeInteger */
1148- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, M, M, Y, M, M, M, M, M, M, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N}, /* long */
1149- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, M, M, Y, Y, M, M, M, M, M, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N}, /* int */
1150- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, M, M, Y, Y, Y, M, M, M, M, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N}, /* short */
1151- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, M, M, Y, Y, Y, Y, M, M, M, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N}, /* byte */
1152- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, M, N, M, M, M, M, Y, M, M, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N}, /* nonNegativeInteger */
1153- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, M, N, M, M, M, M, Y, Y, M, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N}, /* unsignedLong */
1154- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, M, N, Y, M, M, M, Y, Y, Y, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N}, /* unsignedInt */
1155- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, M, N, Y, Y, M, M, Y, Y, Y, Y, M, M, N, N, N, N, N, Y, N, N, N, N, N, N}, /* unsignedShort */
1156- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, M, N, Y, Y, Y, M, Y, Y, Y, Y, Y, M, N, N, N, N, N, Y, N, N, N, N, N, N}, /* unsignedByte */
1157- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, N, N, M, M, M, M, M, Y, Y, Y, Y, Y, N, N, N, N, N, Y, N, N, N, N, N, N}, /* positiveInteger */
1158- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, N, N, N, N, N, N, N, N, N, N, N}, /* gYearMonth */
1159- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, N, N, N, N, N, N, N, N, N, N}, /* gYear */
1160- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, N, N, N, N, N, N, N, N, N}, /* gMonthDay */
1161- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, N, N, N, N, N, N, N, N}, /* gDay */
1162- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, N, N, N, N, N, N, N}, /* gMonth */
1163- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, N, N, N, N, N, Y, N, N, N, N, N, N}, /* boolean */
1164- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, Y, N, N, N, N}, /* base64Binary */
1165- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, Y, N, N, N, N}, /* hexBinary */
1166- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, N, N, N}, /* anyURI */
1167- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, N, N}, /* QName */
1168- {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, M, N}, /* NOTATION */
1169- {N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y}, /* null */
1170+// aA s nS t l NM Na NC ID IR EN uA dT d t d yM dT f do de i nP nI l i s b nn uL uI uS uB pI YM Y MD D M b 64 hB aU QN NO nu dTS
1171+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N, N}, /* anyAtomicType */
1172+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N, N}, /* string */
1173+ {Y, Y, Y, M, M, M, M, M, M, M, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N, N}, /* normalizedString */
1174+ {Y, Y, Y, Y, M, M, M, M, M, M, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N, N}, /* token */
1175+ {Y, Y, Y, Y, Y, M, M, M, M, M, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N, N}, /* language */
1176+ {Y, Y, Y, Y, M, Y, M, M, M, M, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N, N}, /* NMTOKEM */
1177+ {Y, Y, Y, Y, M, M, Y, M, M, M, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N, N}, /* Name */
1178+ {Y, Y, Y, Y, M, M, Y, Y, M, M, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N, N}, /* NCMame */
1179+ {Y, Y, Y, Y, M, M, Y, Y, Y, M, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N, N}, /* ID */
1180+ {Y, Y, Y, Y, M, M, Y, Y, M, Y, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N, N}, /* IDREF */
1181+ {Y, Y, Y, Y, M, M, Y, Y, M, M, Y, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N, N}, /* ENTITY */
1182+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N, N, N, N}, /* untypedAtomic */
1183+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, Y, Y, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, Y, Y, Y, Y, N, N, N, N, N, N, N, N}, /* dateTime */
1184+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, Y, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, Y, Y, Y, Y, N, N, N, N, N, N, N, N}, /* date */
1185+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N}, /* time */
1186+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, Y, Y, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N}, /* duration */
1187+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, Y, Y, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N}, /* yearMonthDuration */
1188+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, Y, Y, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N}, /* dayTimeDuration */
1189+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N, N}, /* float */
1190+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N, N}, /* double */
1191+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, M, M, M, M, M, M, M, M, M, M, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N, N}, /* decimal */
1192+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, M, M, M, M, M, M, M, M, M, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N, N}, /* integer */
1193+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, Y, M, M, M, M, M, M, M, M, M, M, N, N, N, N, N, N, Y, N, N, N, N, N, N, N}, /* nonPositiveInteger */
1194+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, Y, Y, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, Y, N, N, N, N, N, N, N}, /* negativeInteger */
1195+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, M, M, Y, M, M, M, M, M, M, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N, N}, /* long */
1196+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, M, M, Y, Y, M, M, M, M, M, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N, N}, /* int */
1197+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, M, M, Y, Y, Y, M, M, M, M, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N, N}, /* short */
1198+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, M, M, Y, Y, Y, Y, M, M, M, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N, N}, /* byte */
1199+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, M, N, M, M, M, M, Y, M, M, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N, N}, /* nonNegativeInteger */
1200+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, M, N, M, M, M, M, Y, Y, M, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N, N}, /* unsignedLong */
1201+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, M, N, Y, M, M, M, Y, Y, Y, M, M, M, N, N, N, N, N, Y, N, N, N, N, N, N, N}, /* unsignedInt */
1202+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, M, N, Y, Y, M, M, Y, Y, Y, Y, M, M, N, N, N, N, N, Y, N, N, N, N, N, N, N}, /* unsignedShort */
1203+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, M, N, Y, Y, Y, M, Y, Y, Y, Y, Y, M, N, N, N, N, N, Y, N, N, N, N, N, N, N}, /* unsignedByte */
1204+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, N, N, M, M, M, M, M, Y, Y, Y, Y, Y, N, N, N, N, N, Y, N, N, N, N, N, N, N}, /* positiveInteger */
1205+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, N, N, N, N, N, N, N, N, N, N, N, N}, /* gYearMonth */
1206+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, N, N, N, N, N, N, N, N, N, N, N}, /* gYear */
1207+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, N, N, N, N, N, N, N, N, N, N}, /* gMonthDay */
1208+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, N, N, N, N, N, N, N, N, N}, /* gDay */
1209+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, N, N, N, N, N, N, N, N}, /* gMonth */
1210+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, Y, N, N, N, N, N, Y, N, N, N, N, N, N, N}, /* boolean */
1211+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, Y, N, N, N, N, N}, /* base64Binary */
1212+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, Y, N, N, N, N, N}, /* hexBinary */
1213+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, N, N, N, N}, /* anyURI */
1214+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, N, N, N}, /* QName */
1215+ {Y, Y, M, M, M, M, M, M, M, M, M, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, M, N, N}, /* NOTATION */
1216+ {N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, N}, /* null */
1217+ {Y, Y, N, N, N, N, N, N, N, N, N, Y, Y, Y, Y, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, Y, Y, Y, Y, Y, N, N, N, N, N, N, N, Y}, /* dateTimeStamp */
1218 };
1219
1220 #undef MAYBE_CASTABLE
1221@@ -104,52 +105,53 @@
1222
1223 const bool RootTypeManager::ATOMIC_SUBTYPE_MATRIX[store::XS_LAST][store::XS_LAST] =
1224 {
1225- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* anyAtomicType */
1226- {T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* string */
1227- {T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* normalizedString */
1228- {T, T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* token */
1229- {T, T, T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* language */
1230- {T, T, T, T, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* NMTOKEN */
1231- {T, T, T, T, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* Name */
1232- {T, T, T, T, F, F, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* NCName */
1233- {T, T, T, T, F, F, T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* ID */
1234- {T, T, T, T, F, F, T, T, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* IDREF */
1235- {T, T, T, T, F, F, T, T, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* ENTITY */
1236- {T, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* untypedAtomic */
1237- {T, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* dateTime */
1238- {T, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* date */
1239- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* time */
1240- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* duration */
1241- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* yearMonthDuration */
1242- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* dayTimeDuration */
1243- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* float */
1244- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* double */
1245- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* decimal */
1246- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* integer */
1247- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* nonPositiveInteger */
1248- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* negativeInteger */
1249- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* long */
1250- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* int */
1251- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* short */
1252- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, T, T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* byte */
1253- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* nonNegativeInteger */
1254- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, F, F, F, F, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* unsignedLong */
1255- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, F, F, F, F, T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* unsignedInt */
1256- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, F, F, F, F, T, T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* unsignedShort */
1257- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, F, F, F, F, T, T, T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* unsignedByte */
1258- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, F, F, F, F, T, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F}, /* positiveInteger */
1259- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F}, /* gYearMonth */
1260- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F}, /* gYear */
1261- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F}, /* gMonthDay */
1262- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F}, /* gDay */
1263- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F}, /* gMonth */
1264- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F}, /* boolean */
1265- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F}, /* base64Binary */
1266- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F}, /* hexBinary */
1267- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F}, /* anyURI */
1268- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F}, /* QName */
1269- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F}, /* NOTATION */
1270- {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T}, /* jdm::null */
1271+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* anyAtomicType */
1272+ {T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* string */
1273+ {T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* normalizedString */
1274+ {T, T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* token */
1275+ {T, T, T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* language */
1276+ {T, T, T, T, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* NMTOKEN */
1277+ {T, T, T, T, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* Name */
1278+ {T, T, T, T, F, F, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* NCName */
1279+ {T, T, T, T, F, F, T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* ID */
1280+ {T, T, T, T, F, F, T, T, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* IDREF */
1281+ {T, T, T, T, F, F, T, T, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* ENTITY */
1282+ {T, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* untypedAtomic */
1283+ {T, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* dateTime */
1284+ {T, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* date */
1285+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* time */
1286+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* duration */
1287+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* yearMonthDuration */
1288+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* dayTimeDuration */
1289+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* float */
1290+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* double */
1291+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* decimal */
1292+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* integer */
1293+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* nonPositiveInteger */
1294+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* negativeInteger */
1295+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* long */
1296+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* int */
1297+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* short */
1298+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, T, T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* byte */
1299+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* nonNegativeInteger */
1300+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, F, F, F, F, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* unsignedLong */
1301+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, F, F, F, F, T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* unsignedInt */
1302+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, F, F, F, F, T, T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* unsignedShort */
1303+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, F, F, F, F, T, T, T, T, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* unsignedByte */
1304+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, T, F, F, F, F, F, F, T, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F}, /* positiveInteger */
1305+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F}, /* gYearMonth */
1306+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F}, /* gYear */
1307+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F}, /* gMonthDay */
1308+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F}, /* gDay */
1309+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F}, /* gMonth */
1310+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F}, /* boolean */
1311+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F}, /* base64Binary */
1312+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F}, /* hexBinary */
1313+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F}, /* anyURI */
1314+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F}, /* QName */
1315+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F, F}, /* NOTATION */
1316+ {T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T, F}, /* jdm::null */
1317+ {T, F, F, F, F, F, F, F, F, F, F, F, T, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, F, T}, /* dateTimeStamp */
1318 };
1319
1320
1321@@ -246,6 +248,7 @@
1322 XSQNDECL(XS_ENTITY_QNAME, "ENTITY");
1323 XSQNDECL(XS_UNTYPED_ATOMIC_QNAME, "untypedAtomic");
1324 XSQNDECL(XS_DATETIME_QNAME, "dateTime");
1325+ XSQNDECL(XS_DATETIME_STAMP_QNAME, "dateTimeStamp");
1326 XSQNDECL(XS_DATE_QNAME, "date");
1327 XSQNDECL(XS_TIME_QNAME, "time");
1328 XSQNDECL(XS_DURATION_QNAME, "duration");
1329@@ -347,6 +350,7 @@
1330 ATOMIC_TYPE_DEFN(ENTITY)
1331 ATOMIC_TYPE_DEFN(UNTYPED_ATOMIC)
1332 ATOMIC_TYPE_DEFN(DATETIME)
1333+ ATOMIC_TYPE_DEFN(DATETIME_STAMP)
1334 ATOMIC_TYPE_DEFN(DATE)
1335 ATOMIC_TYPE_DEFN(TIME)
1336 ATOMIC_TYPE_DEFN(DURATION)
1337@@ -635,6 +639,7 @@
1338 DELETE_TYPE(TIME)
1339 DELETE_TYPE(DATE)
1340 DELETE_TYPE(DATETIME)
1341+ DELETE_TYPE(DATETIME_STAMP)
1342 DELETE_TYPE(UNTYPED_ATOMIC)
1343 DELETE_TYPE(ENTITY)
1344 DELETE_TYPE(IDREF)
1345
1346=== modified file 'src/types/root_typemanager.h'
1347--- src/types/root_typemanager.h 2013-03-05 12:34:19 +0000
1348+++ src/types/root_typemanager.h 2013-03-13 01:48:22 +0000
1349@@ -92,6 +92,7 @@
1350 ATOMIC_DECL(IDREF) // derived
1351 ATOMIC_DECL(ENTITY) // derived
1352 ATOMIC_DECL(DATETIME)
1353+ ATOMIC_DECL(DATETIME_STAMP) // derived
1354 ATOMIC_DECL(DATE)
1355 ATOMIC_DECL(TIME)
1356 ATOMIC_DECL(DURATION)
1357
1358=== modified file 'src/types/schema/schema.cpp'
1359--- src/types/schema/schema.cpp 2013-02-26 04:12:43 +0000
1360+++ src/types/schema/schema.cpp 2013-03-13 01:48:22 +0000
1361@@ -1274,7 +1274,18 @@
1362 {
1363 result = GENV_TYPESYSTEM.LANGUAGE_TYPE_ONE;
1364 }
1365- // YearMonthDuration and DayTimeDuration are not in schema spec
1366+ else if ( XMLString::equals(XMLChArray("dayTimeDuration").get (), local) )
1367+ {
1368+ result = GENV_TYPESYSTEM.DT_DURATION_TYPE_ONE;
1369+ }
1370+ else if ( XMLString::equals(XMLChArray("yearMonthDuration").get (), local) )
1371+ {
1372+ result = GENV_TYPESYSTEM.YM_DURATION_TYPE_ONE;
1373+ }
1374+ else if ( XMLString::equals(XMLChArray("dateTimeStamp").get (), local) )
1375+ {
1376+ result = GENV_TYPESYSTEM.DATETIME_STAMP_TYPE_ONE;
1377+ }
1378 else
1379 {
1380 // type not covered
1381
1382=== modified file 'src/types/typeimpl.cpp'
1383--- src/types/typeimpl.cpp 2013-03-05 12:34:19 +0000
1384+++ src/types/typeimpl.cpp 2013-03-13 01:48:22 +0000
1385@@ -140,7 +140,8 @@
1386 "xs:anyURI",
1387 "xs:QName",
1388 "xs:NOTATION",
1389- "jdm:null"
1390+ "jdm:null",
1391+ "xs:dateTimeStamp"
1392 };
1393
1394
1395
1396=== modified file 'src/types/typeops.cpp'
1397--- src/types/typeops.cpp 2013-03-05 12:34:19 +0000
1398+++ src/types/typeops.cpp 2013-03-13 01:48:22 +0000
1399@@ -220,6 +220,7 @@
1400 case store::XS_DATE:
1401 case store::XS_TIME:
1402 case store::XS_DATETIME:
1403+ case store::XS_DATETIME_STAMP:
1404 case store::XS_GYEAR_MONTH:
1405 case store::XS_GYEAR:
1406 case store::XS_GMONTH_DAY:
1407
1408=== modified file 'src/zorbatypes/datetime.h'
1409--- src/zorbatypes/datetime.h 2013-02-28 11:15:32 +0000
1410+++ src/zorbatypes/datetime.h 2013-03-13 01:48:22 +0000
1411@@ -317,6 +317,8 @@
1412
1413 TimeZone getTimezone() const;
1414
1415+ bool hasTimezone() const;
1416+
1417 /**
1418 * Returns -1 if the DateTime is less than the given DateTime
1419 * Returns 0 if the DateTimes are equal
1420
1421=== modified file 'src/zorbatypes/datetime/datetimetype.cpp'
1422--- src/zorbatypes/datetime/datetimetype.cpp 2013-02-28 11:15:32 +0000
1423+++ src/zorbatypes/datetime/datetimetype.cpp 2013-03-13 01:48:22 +0000
1424@@ -999,6 +999,12 @@
1425 }
1426
1427
1428+bool DateTime::hasTimezone() const
1429+{
1430+ return !the_time_zone.timeZoneNotSet();
1431+}
1432+
1433+
1434 int DateTime::compare(const DateTime* dt, long timezone_seconds) const
1435 {
1436 std::auto_ptr<DateTime> d1_t;
1437
1438=== modified file 'src/zorbatypes/floatimpl.cpp'
1439--- src/zorbatypes/floatimpl.cpp 2013-02-07 17:24:36 +0000
1440+++ src/zorbatypes/floatimpl.cpp 2013-03-13 01:48:22 +0000
1441@@ -140,6 +140,9 @@
1442 } else if ( strncmp( s, "NaN", 3 ) == 0 ) {
1443 value_ = FloatImpl<FloatType>::nan().value_;
1444 s += 3;
1445+ } else if ( strncmp( s, "+INF", 4 ) == 0 ) {
1446+ value_ = FloatImpl<FloatType>::pos_inf().value_;
1447+ s += 4;
1448 } else
1449 return false;
1450
1451
1452=== modified file 'src/zorbatypes/schema_types.h'
1453--- src/zorbatypes/schema_types.h 2013-02-07 17:24:36 +0000
1454+++ src/zorbatypes/schema_types.h 2013-03-13 01:48:22 +0000
1455@@ -1,12 +1,12 @@
1456 /*
1457 * Copyright 2006-2008 The FLWOR Foundation.
1458- *
1459+ *
1460 * Licensed under the Apache License, Version 2.0 (the "License");
1461 * you may not use this file except in compliance with the License.
1462 * You may obtain a copy of the License at
1463- *
1464+ *
1465 * http://www.apache.org/licenses/LICENSE-2.0
1466- *
1467+ *
1468 * Unless required by applicable law or agreed to in writing, software
1469 * distributed under the License is distributed on an "AS IS" BASIS,
1470 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1471@@ -34,6 +34,7 @@
1472 typedef Base64 xs_base64Binary;
1473 typedef DateTime xs_date;
1474 typedef DateTime xs_dateTime;
1475+typedef DateTime xs_dateTimeStamp;
1476 typedef Duration xs_dayTimeDuration;
1477 typedef Decimal xs_decimal;
1478 typedef Double xs_double;
1479
1480=== modified file 'test/fots/CMakeLists.txt'
1481--- test/fots/CMakeLists.txt 2013-03-12 21:40:25 +0000
1482+++ test/fots/CMakeLists.txt 2013-03-13 01:48:22 +0000
1483@@ -124,8 +124,10 @@
1484 EXPECTED_FOTS_FAILURE (app-FunctxFunctx functx-functx-id-from-element-1 0)
1485 EXPECTED_FOTS_FAILURE (fn-adjust-date-to-timezone cbcl-adjust-date-to-timezone-002 0)
1486 EXPECTED_FOTS_FAILURE (fn-adjust-date-to-timezone cbcl-adjust-date-to-timezone-003 0)
1487+EXPECTED_FOTS_FAILURE (fn-adjust-dateTime-to-timezone cbcl-adjust-dateTime-to-timezone-001 0)
1488 EXPECTED_FOTS_FAILURE (fn-adjust-dateTime-to-timezone cbcl-adjust-dateTime-to-timezone-002 0)
1489 EXPECTED_FOTS_FAILURE (fn-adjust-dateTime-to-timezone cbcl-adjust-dateTime-to-timezone-003 0)
1490+EXPECTED_FOTS_FAILURE (fn-adjust-dateTime-to-timezone cbcl-adjust-dateTime-to-timezone-004 0)
1491 EXPECTED_FOTS_FAILURE (fn-available-environment-variables fn-available-environment-variables-011 0)
1492 EXPECTED_FOTS_FAILURE (fn-avg cbcl-avg-002 0)
1493 EXPECTED_FOTS_FAILURE (fn-avg cbcl-avg-003 0)
1494@@ -509,6 +511,8 @@
1495 EXPECTED_FOTS_FAILURE (prod-BaseURIDecl K2-BaseURIProlog-5 0)
1496 EXPECTED_FOTS_FAILURE (prod-CastExpr CastAs674a 0)
1497 EXPECTED_FOTS_FAILURE (prod-CastExpr K-SeqExprCast-71b 0)
1498+EXPECTED_FOTS_FAILURE (prod-CastExpr K2-SeqExprCast-231 21263)
1499+EXPECTED_FOTS_FAILURE (prod-CastExpr K2-SeqExprCast-232 21263)
1500 EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-date-001 0)
1501 EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-date-002 0)
1502 EXPECTED_FOTS_FAILURE (prod-CastExpr.derived cbcl-cast-dateTime-001 0)
1503@@ -694,6 +698,12 @@
1504 EXPECTED_FOTS_FAILURE (prod-SchemaImport substitution-009 0)
1505 EXPECTED_FOTS_FAILURE (prod-SchemaImport substitution-010 0)
1506 EXPECTED_FOTS_FAILURE (prod-SchemaImport substitution-011 0)
1507+EXPECTED_FOTS_FAILURE (prod-SchemaImport substitution-020 0)
1508+EXPECTED_FOTS_FAILURE (prod-SchemaImport substitution-021 0)
1509+EXPECTED_FOTS_FAILURE (prod-SchemaImport substitution-022 0)
1510+EXPECTED_FOTS_FAILURE (prod-SchemaImport substitution-023 0)
1511+EXPECTED_FOTS_FAILURE (prod-SchemaImport substitution-024 0)
1512+EXPECTED_FOTS_FAILURE (prod-SchemaImport substitution-025 0)
1513 EXPECTED_FOTS_FAILURE (prod-SchemaImport cbcl-schema-element-1 0)
1514 EXPECTED_FOTS_FAILURE (prod-SchemaImport cbcl-schema-element-2 0)
1515 EXPECTED_FOTS_FAILURE (prod-SchemaImport cbcl-schema-element-4 0)
1516@@ -729,6 +739,7 @@
1517 EXPECTED_FOTS_FAILURE (xs-anyURI cbcl-anyURI-009b 0)
1518 EXPECTED_FOTS_FAILURE (xs-anyURI cbcl-anyURI-012b 0)
1519 EXPECTED_FOTS_FAILURE (xs-base64Binary base64-115 0)
1520+EXPECTED_FOTS_FAILURE (xs-double xs-double-004 0)
1521 EXPECTED_FOTS_FAILURE (xs-normalizedString cbcl-normalizedstring-002 0)
1522 EXPECTED_FOTS_FAILURE (xs-normalizedString cbcl-normalizedstring-002b 0)
1523 EXPECTED_FOTS_FAILURE (xs-normalizedString cbcl-normalizedstring-004 0)
1524
1525=== modified file 'test/fots_driver/FOTSZorbaManifest.xml'
1526--- test/fots_driver/FOTSZorbaManifest.xml 2013-02-04 16:48:16 +0000
1527+++ test/fots_driver/FOTSZorbaManifest.xml 2013-03-13 01:48:22 +0000
1528@@ -54,6 +54,6 @@
1529 <dependency type="unicode-normalization-form" value="NFD" satisfied="true"/>
1530 <dependency type="unicode-normalization-form" value="NFKC" satisfied="true"/>
1531 <dependency type="unicode-normalization-form" value="NFKD" satisfied="true"/>
1532- <dependency type="xsd-version" value="1.0" satisfied="true"/>
1533- <dependency type="xsd-version" value="1.1" satisfied="false"/>
1534+ <dependency type="xsd-version" value="1.0" satisfied="false"/>
1535+ <dependency type="xsd-version" value="1.1" satisfied="true"/>
1536 </test-suite-result>
1537
1538=== modified file 'test/fots_driver/fots-driver.xq'
1539--- test/fots_driver/fots-driver.xq 2013-03-12 16:04:04 +0000
1540+++ test/fots_driver/fots-driver.xq 2013-03-13 01:48:22 +0000
1541@@ -141,7 +141,7 @@
1542 else
1543 for $testSet in $doc/fots:catalog/fots:test-set
1544 let $testSetDoc := doc(resolve-uri($testSet/@file, $baseUri))
1545- where exists(index-of($testSet/@name, $testSetNames))
1546+ where exists(index-of($testSetNames, $testSet/@name))
1547 return driver:list-test-cases($testSetDoc, $dependency, $assert)
1548 };
1549
1550
1551=== modified file 'test/rbkt/Queries/w3c_known_failures.txt'
1552--- test/rbkt/Queries/w3c_known_failures.txt 2013-02-07 17:24:36 +0000
1553+++ test/rbkt/Queries/w3c_known_failures.txt 2013-03-13 01:48:22 +0000
1554@@ -90,6 +90,8 @@
1555 test/rbkt/w3c_testsuite/XQuery/Functions/AllStringFunc/MatchStringFunc/MatchesFunc/caselessmatch10
1556 test/rbkt/w3c_testsuite/XQuery/Functions/AllStringFunc/MatchStringFunc/MatchesFunc/caselessmatch11
1557 test/rbkt/w3c_testsuite/XQuery/exprSeqTypes/PrologExpr/VariableProlog/ExternalVariablesWith/K2-ExternalVariablesWith-22
1558+test/rbkt/w3c_testsuite/XQuery/exprSeqTypes/SeqExprCast/K2-SeqExprCast-231
1559+test/rbkt/w3c_testsuite/XQuery/exprSeqTypes/SeqExprCast/K2-SeqExprCast-232
1560 test/rbkt/w3c_testsuite/XQuery/StaticTyping/STFLWORExpr/ST-PITest-02
1561 test/rbkt/w3c_testsuite/XQuery/StaticTyping/STFLWORExpr/ST-WhereExpr001
1562 test/rbkt/w3c_testsuite/XQuery/StaticTyping/STFLWORExpr/ST-PITest-01
1563
1564=== modified file 'test/rbkt/Queries/w3c_known_failures_XQueryX.txt'
1565--- test/rbkt/Queries/w3c_known_failures_XQueryX.txt 2013-02-07 17:24:36 +0000
1566+++ test/rbkt/Queries/w3c_known_failures_XQueryX.txt 2013-03-13 01:48:22 +0000
1567@@ -34,6 +34,8 @@
1568 test/rbkt/w3c_testsuite/XQueryX/Expressions/HigherOrder/hof-031
1569 test/rbkt/w3c_testsuite/XQueryX/Expressions/HigherOrder/hof-030
1570 test/rbkt/w3c_testsuite/XQueryX/exprSeqTypes/PrologExpr/VariableProlog/ExternalVariablesWith/K2-ExternalVariablesWith-22
1571+test/rbkt/w3c_testsuite/XQueryX/exprSeqTypes/SeqExprCast/K2-SeqExprCast-231
1572+test/rbkt/w3c_testsuite/XQueryX/exprSeqTypes/SeqExprCast/K2-SeqExprCast-232
1573 test/rbkt/w3c_testsuite/XQueryX/Construct/DirectConElem/DirectConElemWhitespace/K2-DirectConElemWhitespace-25
1574 test/rbkt/w3c_testsuite/XQueryX/Construct/DirectConElem/DirectConElemContent/K2-DirectConElemContent-27
1575 test/rbkt/w3c_testsuite/XQueryX/Functions/AllStringFunc/MatchStringFunc/MatchesFunc/K2-MatchesFunc-5

Subscribers

People subscribed via source and target branches