You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@vxquery.apache.org by ti...@apache.org on 2012/08/08 09:46:19 UTC

svn commit: r1370686 [5/8] - in /incubator/vxquery/site: ./ vxquery-cli/ vxquery-core/ vxquery-core/jjdoc/ vxquery-xtest/

Modified: incubator/vxquery/site/vxquery-core/rat-report.html
URL: http://svn.apache.org/viewvc/incubator/vxquery/site/vxquery-core/rat-report.html?rev=1370686&r1=1370685&r2=1370686&view=diff
==============================================================================
--- incubator/vxquery/site/vxquery-core/rat-report.html (original)
+++ incubator/vxquery/site/vxquery-core/rat-report.html Wed Aug  8 07:46:18 2012
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia at Jul 30, 2012 -->
+<!-- Generated by Apache Maven Doxia at Aug 8, 2012 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20120730" />
+    <meta name="Date-Revision-yyyymmdd" content="20120808" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -30,7 +30,7 @@
             
         
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2012-07-30</span>
+        <span id="publishDate">Last Published: 2012-08-08</span>
                   &nbsp;| <span id="projectVersion">Version: 0.1-SNAPSHOT</span>
                       </div>
             <div class="xright">        
@@ -92,15 +92,15 @@ Summary
 Notes: 0
 Binaries: 0
 Archives: 1
-Standards: 311
+Standards: 367
 
-Apache Licensed: 188
+Apache Licensed: 191
 Generated Documents: 0
 
 JavaDocs are generated and so license header is optional
 Generated files do not required license headers
 
-123 Unknown Licenses
+176 Unknown Licenses
 
 *******************************
 
@@ -177,6 +177,54 @@ Unapproved licenses:
   /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java
   /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnFalseScalarEvaluatorFactory.java
   /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnTrueScalarEvaluatorFactory.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/AbstractCastToOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToAnyURIOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToBase64BinaryOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToBooleanOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDateOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDateTimeOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDecimalOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDoubleOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDTDurationOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDurationOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToFloatOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToGDayOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToGMonthDayOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToGMonthOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToGYearMonthOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToGYearOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToHexBinaryOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToIntegerOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToNotationOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToQNameOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToStringOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToTimeOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToUntypedAtomicOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToYMDurationOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/AbstractCastableAsOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsAnyURIOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsBase64BinaryOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsBooleanOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsDateOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsDateTimeOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsDecimalOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsDoubleOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsDTDurationOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsDurationOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsFloatOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsGDayOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsGMonthDayOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsGMonthOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsGYearMonthOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsGYearOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsHexBinaryOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsIntegerOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsNotationOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsQNameOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsStringOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsTimeOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsUntypedAtomicOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsYMDurationOperation.java
   /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractDisjunctiveComparisonOperation.java
   /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractNegatingComparisonOperation.java
   /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonOperation.java
@@ -225,6 +273,11 @@ Unapproved licenses:
   /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/AbstractTypeScalarEvaluatorFactory.java
   /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/PromoteScalarEvaluatorFactory.java
   /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/TreatScalarEvaluatorFactory.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/unary/AbstractNumericUnaryOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/unary/NumericUnaryMinusOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/unary/NumericUnaryMinusScalarEvaluatorFactory.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/unary/NumericUnaryPlusOperation.java
+  /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/unary/NumericUnaryPlusScalarEvaluatorFactory.java
   /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/serializer/XMLSerializer.java
   /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/util/GrowableIntArray.java
   /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/xmlparser/ITreeNodeIdProvider.java
@@ -350,6 +403,56 @@ Archives:
  !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnBooleanScalarEvaluatorFactory.java
  !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnFalseScalarEvaluatorFactory.java
  !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnTrueScalarEvaluatorFactory.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/AbstractCastToOperation.java
+  AL    /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastScalarEvaluatorFactory.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToAnyURIOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToBase64BinaryOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToBooleanOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDateOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDateTimeOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDecimalOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDoubleOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDTDurationOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDurationOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToFloatOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToGDayOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToGMonthDayOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToGMonthOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToGYearMonthOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToGYearOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToHexBinaryOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToIntegerOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToNotationOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToQNameOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToStringOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToTimeOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToUntypedAtomicOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToYMDurationOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/AbstractCastableAsOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsAnyURIOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsBase64BinaryOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsBooleanOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsDateOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsDateTimeOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsDecimalOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsDoubleOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsDTDurationOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsDurationOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsFloatOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsGDayOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsGMonthDayOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsGMonthOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsGYearMonthOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsGYearOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsHexBinaryOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsIntegerOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsNotationOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsQNameOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsStringOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsTimeOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsUntypedAtomicOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableAsYMDurationOperation.java
+  AL    /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/CastableScalarEvaluatorFactory.java
  !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractDisjunctiveComparisonOperation.java
  !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractNegatingComparisonOperation.java
  !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/comparison/AbstractValueComparisonOperation.java
@@ -399,6 +502,12 @@ Archives:
  !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/AbstractTypeScalarEvaluatorFactory.java
  !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/PromoteScalarEvaluatorFactory.java
  !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/type/TreatScalarEvaluatorFactory.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/unary/AbstractNumericUnaryOperation.java
+  AL    /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/unary/AbstractNumericUnaryScalarEvaluatorFactory.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/unary/NumericUnaryMinusOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/unary/NumericUnaryMinusScalarEvaluatorFactory.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/unary/NumericUnaryPlusOperation.java
+ !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/unary/NumericUnaryPlusScalarEvaluatorFactory.java
  !????? /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/serializer/XMLSerializer.java
   AL    /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/types/AbstractNodeType.java
   AL    /Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/types/AnyItemType.java
@@ -1908,7 +2017,13 @@ public class PointablePool {
 package org.apache.vxquery.datamodel.accessors;
 
 import org.apache.vxquery.datamodel.accessors.atomic.CodedQNamePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSBinaryPointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDatePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDateTimePointable;
 import org.apache.vxquery.datamodel.accessors.atomic.XSDecimalPointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDurationPointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSQNamePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSTimePointable;
 import org.apache.vxquery.datamodel.accessors.nodes.AttributeNodePointable;
 import org.apache.vxquery.datamodel.accessors.nodes.DocumentNodePointable;
 import org.apache.vxquery.datamodel.accessors.nodes.ElementNodePointable;
@@ -1947,14 +2062,8 @@ public class PointablePoolFactory {
         pp.register(SequencePointable.class, SequencePointable.FACTORY);
         pp.register(VoidPointable.class, VoidPointable.FACTORY);
         pp.register(CodedQNamePointable.class, CodedQNamePointable.FACTORY);
-        pp.register(XSDecimalPointable.class, XSDecimalPointable.FACTORY);
-
-        pp.register(NodeTreePointable.class, NodeTreePointable.FACTORY);
-        pp.register(DocumentNodePointable.class, DocumentNodePointable.FACTORY);
-        pp.register(ElementNodePointable.class, ElementNodePointable.FACTORY);
-        pp.register(AttributeNodePointable.class, AttributeNodePointable.FACTORY);
-        pp.register(TextOrCommentNodePointable.class, TextOrCommentNodePointable.FACTORY);
-        pp.register(PINodePointable.class, PINodePointable.FACTORY);
+        pp.register(XSBinaryPointable.class, XSBinaryPointable.FACTORY);
+        pp.register(XSDatePointable.class, XSDatePointable.FACTORY);
 
  =======================================================================
  ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/datamodel/accessors/SequencePointable.java
@@ -2459,10 +2568,10 @@ public class DateTime {
             59999 // millisecond
     };
 
-    public static final int TIMEZONE_HOUR_MIN = -12, TIMEZONE_HOUR_MAX = 14, TIMEZONE_MIN_MIN = -60,
-            TIMEZONE_MIN_MAX = 60;
+    public static final int TIMEZONE_HOUR_MIN = -12, TIMEZONE_HOUR_MAX = 14, TIMEZONE_MINUTE_MIN = -60,
+            TIMEZONE_MINUTE_MAX = 60;
     // Used to store the timezone value when one does not exist.
-    public static final byte TIMEZONE_HOUR_NULL = 127, TIMEZONE_MIN_NULL = 127;
+    public static final byte TIMEZONE_HOUR_NULL = 127, TIMEZONE_MINUTE_NULL = 127;
 
     public static final int YEAR_FIELD_INDEX = 0, MONTH_FIELD_INDEX = 1, DAY_FIELD_INDEX = 2, HOUR_FIELD_INDEX = 3,
             MINUTE_FIELD_INDEX = 4, MILLISECOND_FIELD_INDEX = 5;
@@ -2699,8 +2808,8 @@ import edu.uci.ics.hyracks.data.std.prim
 import edu.uci.ics.hyracks.data.std.util.ArrayBackedValueStorage;
 
 public class AddOperation extends AbstractArithmeticOperation {
-    protected final ArrayBackedValueStorage abvs = new ArrayBackedValueStorage();
-    protected final DataOutput dataOutput = abvs.getDataOutput();
+    protected final ArrayBackedValueStorage abvsInner = new ArrayBackedValueStorage();
+    protected final DataOutput dOutInner = abvsInner.getDataOutput();
 
     @Override
     public void operateDateDate(XSDatePointable datep, XSDatePointable datep2, DynamicContext dCtx, DataOutput dOut)
@@ -2711,9 +2820,10 @@ public class AddOperation extends Abstra
     @Override
     public void operateDateDTDuration(XSDatePointable datep, IntegerPointable intp, DataOutput dOut)
             throws SystemException, IOException {
+        abvsInner.reset();
         // Add duration.
-        DateTime.normalizeDateTime(datep.getYearMonth(), datep.getDayTime() + intp.getInteger(), dataOutput);
-        byte[] bytes = abvs.getByteArray();
+        DateTime.normalizeDateTime(datep.getYearMonth(), datep.getDayTime() + intp.getInteger(), dOutInner);
+        byte[] bytes = abvsInner.getByteArray();
         // Convert to date.
         bytes[XSDatePointable.TIMEZONE_HOUR_OFFSET] = bytes[XSDateTimePointable.TIMEZONE_HOUR_OFFSET];
         bytes[XSDatePointable.TIMEZONE_MINUTE_OFFSET] = bytes[XSDateTimePointable.TIMEZONE_MINUTE_OFFSET];
@@ -2727,7 +2837,6 @@ public class AddOperation extends Abstra
         throw new UnsupportedOperationException();
     }
 
-
  =======================================================================
  ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/arithmetic/AddScalarEvaluatorFactory.java
  =======================================================================
@@ -3208,135 +3317,2535 @@ import edu.uci.ics.hyracks.data.std.prim
 import edu.uci.ics.hyracks.data.std.primitive.LongPointable;
 import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
 
-public class FnBooleanScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
-    private static final long serialVersionUID = 1L;
+public class FnBooleanScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
+    private static final long serialVersionUID = 1L;
+
+    public FnBooleanScalarEvaluatorFactory(IScalarEvaluatorFactory[] args) {
+        super(args);
+    }
+
+    @Override
+    protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
+            throws AlgebricksException {
+        final SequencePointable seqp = new SequencePointable();
+        final LongPointable lp = (LongPointable) LongPointable.FACTORY.createPointable();
+        final IntegerPointable ip = (IntegerPointable) IntegerPointable.FACTORY.createPointable();
+        final UTF8StringPointable utf8p = (UTF8StringPointable) UTF8StringPointable.FACTORY.createPointable();
+        return new AbstractTaggedValueArgumentScalarEvaluator(args) {
+            @Override
+            protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException {
+                TaggedValuePointable tvp = args[0];
+                switch (tvp.getTag()) {
+                    case ValueTag.SEQUENCE_TAG: {
+                        tvp.getValue(seqp);
+                        if (seqp.getEntryCount() == 0) {
+                            FnFalseScalarEvaluatorFactory.setFalse(result);
+                            return;
+                        }
+                        FnTrueScalarEvaluatorFactory.setTrue(result);
+                        return;
+                    }
+
+                    case ValueTag.XS_BOOLEAN_TAG: {
+                        result.set(tvp);
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnFalseScalarEvaluatorFactory.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.bool;
+
+import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator;
+import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
+
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
+import edu.uci.ics.hyracks.data.std.api.IPointable;
+import edu.uci.ics.hyracks.data.std.primitive.BooleanPointable;
+
+public class FnFalseScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
+    private static final long serialVersionUID = 1L;
+
+    private static final byte[] BOOLEAN_FALSE_CONSTANT;
+
+    static {
+        BOOLEAN_FALSE_CONSTANT = new byte[2];
+        BOOLEAN_FALSE_CONSTANT[0] = ValueTag.XS_BOOLEAN_TAG;
+        BooleanPointable.setBoolean(BOOLEAN_FALSE_CONSTANT, 1, false);
+    }
+
+    public static void setFalse(IPointable p) {
+        p.set(BOOLEAN_FALSE_CONSTANT, 0, 2);
+    }
+
+    public FnFalseScalarEvaluatorFactory(IScalarEvaluatorFactory[] args) {
+        super(args);
+    }
+
+    @Override
+    protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
+            throws AlgebricksException {
+        return new AbstractTaggedValueArgumentScalarEvaluator(args) {
+            @Override
+            protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException {
+                result.set(BOOLEAN_FALSE_CONSTANT, 0, 2);
+            }
+        };
+    }
+}
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/bool/FnTrueScalarEvaluatorFactory.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.bool;
+
+import org.apache.vxquery.datamodel.accessors.TaggedValuePointable;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluator;
+import org.apache.vxquery.runtime.functions.base.AbstractTaggedValueArgumentScalarEvaluatorFactory;
+
+import edu.uci.ics.hyracks.algebricks.common.exceptions.AlgebricksException;
+import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluator;
+import edu.uci.ics.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
+import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
+import edu.uci.ics.hyracks.data.std.api.IPointable;
+import edu.uci.ics.hyracks.data.std.primitive.BooleanPointable;
+
+public class FnTrueScalarEvaluatorFactory extends AbstractTaggedValueArgumentScalarEvaluatorFactory {
+    private static final long serialVersionUID = 1L;
+
+    private static final byte[] BOOLEAN_TRUE_CONSTANT;
+
+    static {
+        BOOLEAN_TRUE_CONSTANT = new byte[2];
+        BOOLEAN_TRUE_CONSTANT[0] = ValueTag.XS_BOOLEAN_TAG;
+        BooleanPointable.setBoolean(BOOLEAN_TRUE_CONSTANT, 1, true);
+    }
+
+    public static void setTrue(IPointable p) {
+        p.set(BOOLEAN_TRUE_CONSTANT, 0, 2);
+    }
+
+    public FnTrueScalarEvaluatorFactory(IScalarEvaluatorFactory[] args) {
+        super(args);
+    }
+
+    @Override
+    protected IScalarEvaluator createEvaluator(IHyracksTaskContext ctx, IScalarEvaluator[] args)
+            throws AlgebricksException {
+        return new AbstractTaggedValueArgumentScalarEvaluator(args) {
+            @Override
+            protected void evaluate(TaggedValuePointable[] args, IPointable result) throws SystemException {
+                result.set(BOOLEAN_TRUE_CONSTANT, 0, 2);
+            }
+        };
+    }
+}
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/AbstractCastToOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSBinaryPointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDatePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDateTimePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDecimalPointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDurationPointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSQNamePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSTimePointable;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+
+import edu.uci.ics.hyracks.data.std.primitive.BooleanPointable;
+import edu.uci.ics.hyracks.data.std.primitive.DoublePointable;
+import edu.uci.ics.hyracks.data.std.primitive.FloatPointable;
+import edu.uci.ics.hyracks.data.std.primitive.IntegerPointable;
+import edu.uci.ics.hyracks.data.std.primitive.LongPointable;
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+public abstract class AbstractCastToOperation {
+    public void convertAnyURI(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        throw new SystemException(ErrorCode.XPTY0004);
+    }
+
+    public void convertBase64Binary(XSBinaryPointable binaryp, DataOutput dOut) throws SystemException, IOException {
+        throw new SystemException(ErrorCode.XPTY0004);
+    }
+
+    public void convertBoolean(BooleanPointable boolp, DataOutput dOut) throws SystemException, IOException {
+        throw new SystemException(ErrorCode.XPTY0004);
+    }
+
+    public void convertDate(XSDatePointable datep, DataOutput dOut) throws SystemException, IOException {
+        throw new SystemException(ErrorCode.XPTY0004);
+    }
+
+    public void convertDatetime(XSDateTimePointable datetimep, DataOutput dOut) throws SystemException, IOException {
+        throw new SystemException(ErrorCode.XPTY0004);
+    }
+
+    public void convertDecimal(XSDecimalPointable decp, DataOutput dOut) throws SystemException, IOException {
+        throw new SystemException(ErrorCode.XPTY0004);
+    }
+
+    public void convertDouble(DoublePointable doublep, DataOutput dOut) throws SystemException, IOException {
+        throw new SystemException(ErrorCode.XPTY0004);
+    }
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToAnyURIOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.SystemException;
+
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+public class CastToAnyURIOperation extends AbstractCastToOperation {
+
+    @Override
+    public void convertAnyURI(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_ANY_URI_TAG);
+        dOut.write(stringp.getByteArray(), stringp.getStartOffset(), stringp.getLength());
+    }
+
+    @Override
+    public void convertString(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_ANY_URI_TAG);
+        dOut.write(stringp.getByteArray(), stringp.getStartOffset(), stringp.getLength());
+    }
+
+    @Override
+    public void convertUntypedAtomic(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        convertString(stringp, dOut);
+    }
+
+}
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToBase64BinaryOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.commons.codec.binary.Base64OutputStream;
+import org.apache.vxquery.datamodel.accessors.atomic.XSBinaryPointable;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.SystemException;
+
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+import edu.uci.ics.hyracks.data.std.util.ByteArrayAccessibleOutputStream;
+
+public class CastToBase64BinaryOperation extends AbstractCastToOperation {
+    private ByteArrayAccessibleOutputStream baaos = new ByteArrayAccessibleOutputStream();
+    
+    @Override
+    public void convertBase64Binary(XSBinaryPointable binaryp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_BASE64_BINARY_TAG);
+        dOut.write(binaryp.getByteArray(), binaryp.getStartOffset(), binaryp.getLength());
+    }
+
+    @Override
+    public void convertHexBinary(XSBinaryPointable binaryp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_BASE64_BINARY_TAG);
+        dOut.write(binaryp.getByteArray(), binaryp.getStartOffset(), binaryp.getLength());
+    }
+
+    @Override
+    public void convertString(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        baaos.reset();
+        Base64OutputStream b64os = new Base64OutputStream(baaos, false);
+        b64os.write(stringp.getByteArray(), stringp.getStartOffset() + 2, stringp.getLength() - 2);
+
+        dOut.write(ValueTag.XS_BASE64_BINARY_TAG);
+        dOut.write((byte) ((baaos.size() &gt;&gt;&gt; 8) &amp; 0xFF));
+        dOut.write((byte) ((baaos.size() &gt;&gt;&gt; 0) &amp; 0xFF));
+        dOut.write(baaos.getByteArray(), 0, baaos.size());
+    }
+
+    @Override
+    public void convertUntypedAtomic(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        convertString(stringp, dOut);
+    }
+}
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToBooleanOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSDecimalPointable;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
+import org.apache.vxquery.runtime.functions.strings.LowerCaseCharacterIterator;
+import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
+
+import edu.uci.ics.hyracks.data.std.primitive.BooleanPointable;
+import edu.uci.ics.hyracks.data.std.primitive.DoublePointable;
+import edu.uci.ics.hyracks.data.std.primitive.FloatPointable;
+import edu.uci.ics.hyracks.data.std.primitive.LongPointable;
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+public class CastToBooleanOperation extends AbstractCastToOperation {
+
+    @Override
+    public void convertBoolean(BooleanPointable boolp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_BOOLEAN_TAG);
+        dOut.write(boolp.getByteArray(), boolp.getStartOffset(), boolp.getLength());
+    }
+
+    @Override
+    public void convertDecimal(XSDecimalPointable decp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_BOOLEAN_TAG);
+        if (decp.getDecimalValue() == 0 &amp;&amp; decp.getBeforeDecimalPlace() == 0) {
+            dOut.write(0);
+        } else {
+            dOut.write(1);
+        }
+    }
+
+    @Override
+    public void convertDouble(DoublePointable doublep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_BOOLEAN_TAG);
+        if (Double.isNaN(doublep.getDouble()) || doublep.getDouble() == 0) {
+            dOut.write(0);
+        } else {
+            dOut.write(1);
+        }
+    }
+
+    @Override
+    public void convertFloat(FloatPointable floatp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_BOOLEAN_TAG);
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDateOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSDatePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDateTimePointable;
+import org.apache.vxquery.datamodel.util.DateTime;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
+import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
+
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+public class CastToDateOperation extends AbstractCastToOperation {
+
+    @Override
+    public void convertDate(XSDatePointable datep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_DATE_TAG);
+        dOut.write(datep.getByteArray(), datep.getStartOffset(), datep.getLength());
+    }
+
+    @Override
+    public void convertDatetime(XSDateTimePointable datetimep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_DATE_TAG);
+        dOut.writeShort((short) datetimep.getYear());
+        dOut.write((byte) datetimep.getMonth());
+        dOut.write((byte) datetimep.getDay());
+        dOut.write((byte) datetimep.getTimezoneHour());
+        dOut.write((byte) datetimep.getTimezoneMinute());
+    }
+
+    @Override
+    public void convertString(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        ICharacterIterator charIterator = new UTF8StringCharacterIterator(stringp);
+        charIterator.reset();
+        int c;
+        int index = 0;
+        long[] date = new long[5];
+        boolean positiveTimezone = false;
+        boolean negativeYear = false;
+
+        // Set defaults
+        date[3] = DateTime.TIMEZONE_HOUR_NULL;
+        date[4] = DateTime.TIMEZONE_MINUTE_NULL;
+
+        while ((c = charIterator.next()) != ICharacterIterator.EOS_CHAR) {
+            if (Character.isDigit(c)) {
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDateTimeOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSDatePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDateTimePointable;
+import org.apache.vxquery.datamodel.util.DateTime;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
+import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
+
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+public class CastToDateTimeOperation extends AbstractCastToOperation {
+
+    @Override
+    public void convertDate(XSDatePointable datep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_DATETIME_TAG);
+        dOut.writeShort((short) datep.getYear());
+        dOut.write((byte) datep.getMonth());
+        dOut.write((byte) datep.getDay());
+        dOut.write((byte) 0); // Hour
+        dOut.write((byte) 0); // Minute
+        dOut.writeInt(0); // Millisecond
+        dOut.write((byte) datep.getTimezoneHour());
+        dOut.write((byte) datep.getTimezoneMinute());
+    }
+
+    @Override
+    public void convertDatetime(XSDateTimePointable datetimep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_DATETIME_TAG);
+        dOut.write(datetimep.getByteArray(), datetimep.getStartOffset(), datetimep.getLength());
+    }
+
+    @Override
+    public void convertString(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        ICharacterIterator charIterator = new UTF8StringCharacterIterator(stringp);
+        charIterator.reset();
+        int c;
+        int index = 0;
+        long[] date = new long[8];
+        boolean positiveTimezone = false;
+        boolean pastDecimal = false;
+        boolean negativeYear = false;
+        byte decimalPlace = 3;
+
+        // Set defaults
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDecimalOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSDecimalPointable;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
+import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
+
+import edu.uci.ics.hyracks.data.std.primitive.BooleanPointable;
+import edu.uci.ics.hyracks.data.std.primitive.DoublePointable;
+import edu.uci.ics.hyracks.data.std.primitive.FloatPointable;
+import edu.uci.ics.hyracks.data.std.primitive.LongPointable;
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+public class CastToDecimalOperation extends AbstractCastToOperation {
+
+    @Override
+    public void convertBoolean(BooleanPointable boolp, DataOutput dOut) throws SystemException, IOException {
+        long value = (boolp.getBoolean() ? 1 : 0);
+        dOut.write(ValueTag.XS_DECIMAL_TAG);
+        dOut.writeByte(0);
+        dOut.writeLong(value);
+    }
+
+    @Override
+    public void convertDecimal(XSDecimalPointable decp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_DECIMAL_TAG);
+        dOut.write(decp.getByteArray(), decp.getStartOffset(), decp.getLength());
+    }
+
+    @Override
+    public void convertDouble(DoublePointable doublep, DataOutput dOut) throws SystemException, IOException {
+        double doubleValue = doublep.getDouble();
+        byte decimalPlace = 0;
+        // Move the decimal
+        while (doubleValue % 1 != 0 &amp;&amp; (doubleValue != 0 || doubleValue != -0)) {
+            if (decimalPlace + 1 &gt; XSDecimalPointable.PRECISION) {
+                throw new SystemException(ErrorCode.FOCA0001);
+            }
+            decimalPlace++;
+            doubleValue *= 10;
+        }
+        // Remove extra zeros
+        while (doubleValue % 10 == 0 &amp;&amp; (doubleValue != 0 || doubleValue != -0)) {
+            doubleValue /= 10;
+            --decimalPlace;
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDoubleOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSDecimalPointable;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
+import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
+
+import edu.uci.ics.hyracks.data.std.primitive.BooleanPointable;
+import edu.uci.ics.hyracks.data.std.primitive.DoublePointable;
+import edu.uci.ics.hyracks.data.std.primitive.FloatPointable;
+import edu.uci.ics.hyracks.data.std.primitive.LongPointable;
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+public class CastToDoubleOperation extends AbstractCastToOperation {
+
+    @Override
+    public void convertBoolean(BooleanPointable boolp, DataOutput dOut) throws SystemException, IOException {
+        double value = (boolp.getBoolean() ? 1 : 0);
+        dOut.write(ValueTag.XS_DOUBLE_TAG);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void convertDecimal(XSDecimalPointable decp, DataOutput dOut) throws SystemException, IOException {
+        double value = decp.doubleValue();
+        dOut.write(ValueTag.XS_DOUBLE_TAG);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void convertDouble(DoublePointable doublep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_DOUBLE_TAG);
+        dOut.write(doublep.getByteArray(), doublep.getStartOffset(), doublep.getLength());
+    }
+
+    @Override
+    public void convertFloat(FloatPointable floatp, DataOutput dOut) throws SystemException, IOException {
+        double value = floatp.doubleValue();
+        dOut.write(ValueTag.XS_DOUBLE_TAG);
+        dOut.writeDouble(value);
+    }
+
+    @Override
+    public void convertInteger(LongPointable longp, DataOutput dOut) throws SystemException, IOException {
+        double value = longp.doubleValue();
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDTDurationOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSDurationPointable;
+import org.apache.vxquery.datamodel.util.DateTime;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
+import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
+
+import edu.uci.ics.hyracks.data.std.primitive.IntegerPointable;
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+public class CastToDTDurationOperation extends AbstractCastToOperation {
+
+    @Override
+    public void convertDTDuration(IntegerPointable intp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_DAY_TIME_DURATION_TAG);
+        dOut.write(intp.getByteArray(), intp.getStartOffset(), intp.getLength());
+    }
+
+    @Override
+    public void convertDuration(XSDurationPointable durationp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_DAY_TIME_DURATION_TAG);
+        dOut.writeInt(durationp.getDayTime());
+    }
+
+    @Override
+    public void convertString(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        ICharacterIterator charIterator = new UTF8StringCharacterIterator(stringp);
+        charIterator.reset();
+        boolean pastDecimal = false, timeSection = false;
+        byte decimalPlace = 3;
+
+        int value = 0;
+        long day = 0, hour = 0, minute = 0, millisecond = 0;
+        long negativeResult = 1;
+
+        // First character 
+        int c = charIterator.next();
+        if (c == Character.valueOf('-')) {
+            negativeResult = -1;
+            c = charIterator.next();
+        }
+        if (c != Character.valueOf('P')) {
+            // Invalid duration format.
+            throw new SystemException(ErrorCode.FORG0001);
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToDurationOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSDurationPointable;
+import org.apache.vxquery.datamodel.util.DateTime;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
+import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
+
+import edu.uci.ics.hyracks.data.std.primitive.IntegerPointable;
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+public class CastToDurationOperation extends AbstractCastToOperation {
+
+    @Override
+    public void convertDTDuration(IntegerPointable intp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_DURATION_TAG);
+        dOut.writeInt(0);
+        dOut.writeInt(intp.getInteger());
+    }
+
+    @Override
+    public void convertDuration(XSDurationPointable durationp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_DURATION_TAG);
+        dOut.write(durationp.getByteArray(), durationp.getStartOffset(), durationp.getLength());
+    }
+
+    @Override
+    public void convertString(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        ICharacterIterator charIterator = new UTF8StringCharacterIterator(stringp);
+        charIterator.reset();
+        boolean pastDecimal = false, timeSection = false;
+        byte decimalPlace = 3;
+
+        int value = 0;
+        long year = 0, month = 0, day = 0, hour = 0, minute = 0, millisecond = 0;
+        long negativeResult = 1;
+
+        // First character 
+        int c = charIterator.next();
+        if (c == Character.valueOf('-')) {
+            negativeResult = -1;
+            c = charIterator.next();
+        }
+        if (c != Character.valueOf('P')) {
+            // Invalid duration format.
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToFloatOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSDecimalPointable;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
+import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
+
+import edu.uci.ics.hyracks.data.std.primitive.BooleanPointable;
+import edu.uci.ics.hyracks.data.std.primitive.DoublePointable;
+import edu.uci.ics.hyracks.data.std.primitive.FloatPointable;
+import edu.uci.ics.hyracks.data.std.primitive.LongPointable;
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+public class CastToFloatOperation extends AbstractCastToOperation {
+
+    @Override
+    public void convertBoolean(BooleanPointable boolp, DataOutput dOut) throws SystemException, IOException {
+        float value = (boolp.getBoolean() ? 1 : 0);
+        dOut.write(ValueTag.XS_FLOAT_TAG);
+        dOut.writeFloat(value);
+    }
+
+    @Override
+    public void convertDecimal(XSDecimalPointable decp, DataOutput dOut) throws SystemException, IOException {
+        float value = decp.floatValue();
+        dOut.write(ValueTag.XS_FLOAT_TAG);
+        dOut.writeFloat(value);
+    }
+
+    @Override
+    public void convertDouble(DoublePointable doublep, DataOutput dOut) throws SystemException, IOException {
+        float value = doublep.floatValue();
+        dOut.write(ValueTag.XS_FLOAT_TAG);
+        dOut.writeFloat(value);
+    }
+
+    @Override
+    public void convertFloat(FloatPointable floatp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_FLOAT_TAG);
+        dOut.write(floatp.getByteArray(), floatp.getStartOffset(), floatp.getLength());
+    }
+
+    @Override
+    public void convertInteger(LongPointable longp, DataOutput dOut) throws SystemException, IOException {
+        float value = longp.floatValue();
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToGDayOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSDatePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDateTimePointable;
+import org.apache.vxquery.datamodel.util.DateTime;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
+import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
+
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+public class CastToGDayOperation extends AbstractCastToOperation {
+
+    @Override
+    public void convertDate(XSDatePointable datep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_G_DAY_TAG);
+        dOut.writeShort((short) 1972);
+        dOut.write((byte) 12);
+        dOut.write((byte) datep.getDay());
+        dOut.write((byte) datep.getTimezoneHour());
+        dOut.write((byte) datep.getTimezoneMinute());
+    }
+
+    @Override
+    public void convertDatetime(XSDateTimePointable datetimep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_G_DAY_TAG);
+        dOut.writeShort((short) 1972);
+        dOut.write((byte) 12);
+        dOut.write((byte) datetimep.getDay());
+        dOut.write((byte) datetimep.getTimezoneHour());
+        dOut.write((byte) datetimep.getTimezoneMinute());
+    }
+
+    @Override
+    public void convertGDay(XSDatePointable datep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_G_DAY_TAG);
+        dOut.write(datep.getByteArray(), datep.getStartOffset(), datep.getLength());
+    }
+
+    @Override
+    public void convertString(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        ICharacterIterator charIterator = new UTF8StringCharacterIterator(stringp);
+        charIterator.reset();
+        int c;
+        int index = 0;
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToGMonthDayOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSDatePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDateTimePointable;
+import org.apache.vxquery.datamodel.util.DateTime;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
+import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
+
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+public class CastToGMonthDayOperation extends AbstractCastToOperation {
+
+    @Override
+    public void convertDate(XSDatePointable datep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_G_MONTH_DAY_TAG);
+        dOut.writeShort((short) 1972);
+        dOut.write((byte) datep.getMonth());
+        dOut.write((byte) datep.getDay());
+        dOut.write((byte) datep.getTimezoneHour());
+        dOut.write((byte) datep.getTimezoneMinute());
+    }
+
+    @Override
+    public void convertDatetime(XSDateTimePointable datetimep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_G_MONTH_DAY_TAG);
+        dOut.writeShort((short) 1972);
+        dOut.write((byte) datetimep.getMonth());
+        dOut.write((byte) datetimep.getDay());
+        dOut.write((byte) datetimep.getTimezoneHour());
+        dOut.write((byte) datetimep.getTimezoneMinute());
+    }
+
+    @Override
+    public void convertGMonthDay(XSDatePointable datep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_G_MONTH_DAY_TAG);
+        dOut.write(datep.getByteArray(), datep.getStartOffset(), datep.getLength());
+    }
+
+    @Override
+    public void convertString(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        ICharacterIterator charIterator = new UTF8StringCharacterIterator(stringp);
+        charIterator.reset();
+        int c;
+        int index = 0;
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToGMonthOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSDatePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDateTimePointable;
+import org.apache.vxquery.datamodel.util.DateTime;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
+import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
+
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+public class CastToGMonthOperation extends AbstractCastToOperation {
+
+    @Override
+    public void convertDate(XSDatePointable datep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_G_MONTH_TAG);
+        dOut.writeShort((short) 1972);
+        dOut.write((byte) datep.getMonth());
+        dOut.write((byte) 29);
+        dOut.write((byte) datep.getTimezoneHour());
+        dOut.write((byte) datep.getTimezoneMinute());
+    }
+
+    @Override
+    public void convertDatetime(XSDateTimePointable datetimep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_G_MONTH_TAG);
+        dOut.writeShort((short) 1972);
+        dOut.write((byte) datetimep.getMonth());
+        dOut.write((byte) 29);
+        dOut.write((byte) datetimep.getTimezoneHour());
+        dOut.write((byte) datetimep.getTimezoneMinute());
+    }
+
+    @Override
+    public void convertGMonth(XSDatePointable datep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_G_MONTH_TAG);
+        dOut.write(datep.getByteArray(), datep.getStartOffset(), datep.getLength());
+    }
+
+    @Override
+    public void convertString(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        ICharacterIterator charIterator = new UTF8StringCharacterIterator(stringp);
+        charIterator.reset();
+        int c;
+        int index = 0;
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToGYearMonthOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSDatePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDateTimePointable;
+import org.apache.vxquery.datamodel.util.DateTime;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
+import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
+
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+public class CastToGYearMonthOperation extends AbstractCastToOperation {
+
+    @Override
+    public void convertDate(XSDatePointable datep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_G_YEAR_MONTH_TAG);
+        dOut.writeShort((short) datep.getYear());
+        dOut.write((byte) datep.getMonth());
+        if (DateTime.isLeapYear(datep.getYear())) {
+            dOut.write((byte) DateTime.DAYS_OF_MONTH_ORDI[(int) (datep.getMonth() - 1)]);
+        } else {
+            dOut.write((byte) DateTime.DAYS_OF_MONTH_LEAP[(int) (datep.getMonth() - 1)]);
+        }
+        dOut.write((byte) datep.getTimezoneHour());
+        dOut.write((byte) datep.getTimezoneMinute());
+    }
+
+    @Override
+    public void convertDatetime(XSDateTimePointable datetimep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_G_YEAR_MONTH_TAG);
+        dOut.writeShort((short) datetimep.getYear());
+        dOut.write((byte) datetimep.getMonth());
+        if (DateTime.isLeapYear(datetimep.getYear())) {
+            dOut.write((byte) DateTime.DAYS_OF_MONTH_ORDI[(int) (datetimep.getMonth() - 1)]);
+        } else {
+            dOut.write((byte) DateTime.DAYS_OF_MONTH_LEAP[(int) (datetimep.getMonth() - 1)]);
+        }
+        dOut.write((byte) datetimep.getTimezoneHour());
+        dOut.write((byte) datetimep.getTimezoneMinute());
+    }
+
+    @Override
+    public void convertGYearMonth(XSDatePointable datep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_G_YEAR_MONTH_TAG);
+        dOut.write(datep.getByteArray(), datep.getStartOffset(), datep.getLength());
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToGYearOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSDatePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDateTimePointable;
+import org.apache.vxquery.datamodel.util.DateTime;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
+import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
+
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+public class CastToGYearOperation extends AbstractCastToOperation {
+
+    @Override
+    public void convertDate(XSDatePointable datep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_G_YEAR_TAG);
+        dOut.writeShort((short) datep.getYear());
+        dOut.write((byte) 1);
+        dOut.write((byte) 1);
+        dOut.write((byte) datep.getTimezoneHour());
+        dOut.write((byte) datep.getTimezoneMinute());
+    }
+
+    @Override
+    public void convertDatetime(XSDateTimePointable datetimep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_G_YEAR_TAG);
+        dOut.writeShort((short) datetimep.getYear());
+        dOut.write((byte) 1);
+        dOut.write((byte) 1);
+        dOut.write((byte) datetimep.getTimezoneHour());
+        dOut.write((byte) datetimep.getTimezoneMinute());
+    }
+
+    @Override
+    public void convertGYear(XSDatePointable datep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_G_YEAR_TAG);
+        dOut.write(datep.getByteArray(), datep.getStartOffset(), datep.getLength());
+    }
+
+    @Override
+    public void convertString(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        ICharacterIterator charIterator = new UTF8StringCharacterIterator(stringp);
+        charIterator.reset();
+        int c;
+        int index = 0;
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToHexBinaryOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSBinaryPointable;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
+import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
+
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+import edu.uci.ics.hyracks.data.std.util.ArrayBackedValueStorage;
+
+public class CastToHexBinaryOperation extends AbstractCastToOperation {
+    private ArrayBackedValueStorage abvsInner = new ArrayBackedValueStorage();
+    private DataOutput dOutInner = abvsInner.getDataOutput();
+
+    @Override
+    public void convertBase64Binary(XSBinaryPointable binaryp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_HEX_BINARY_TAG);
+        dOut.write(binaryp.getByteArray(), binaryp.getStartOffset(), binaryp.getLength());
+    }
+
+    @Override
+    public void convertHexBinary(XSBinaryPointable binaryp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_HEX_BINARY_TAG);
+        dOut.write(binaryp.getByteArray(), binaryp.getStartOffset(), binaryp.getLength());
+    }
+
+    @Override
+    public void convertString(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        ICharacterIterator charIterator = new UTF8StringCharacterIterator(stringp);
+        charIterator.reset();
+        abvsInner.reset();
+        int c1 = 0, c2 = 0;
+        while ((c1 = charIterator.next()) != ICharacterIterator.EOS_CHAR) {
+            c2 = charIterator.next();
+            if (c2 == ICharacterIterator.EOS_CHAR) {
+                // Odd number of characters.
+                throw new SystemException(ErrorCode.FORG0001);
+            }
+            if (Character.digit(c1, 16) &lt; 0 || Character.digit(c1, 16) &gt; 15 || Character.digit(c2, 16) &lt; 0
+                    || Character.digit(c2, 16) &gt; 15) {
+                // Invalid of characters.
+                throw new SystemException(ErrorCode.FORG0001);
+            }
+            dOutInner.write(((Character.digit(c1, 16) &lt;&lt; 4) + Character.digit(c2, 16)));
+        }
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToIntegerOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSDecimalPointable;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
+import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
+
+import edu.uci.ics.hyracks.data.std.primitive.BooleanPointable;
+import edu.uci.ics.hyracks.data.std.primitive.DoublePointable;
+import edu.uci.ics.hyracks.data.std.primitive.FloatPointable;
+import edu.uci.ics.hyracks.data.std.primitive.LongPointable;
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+public class CastToIntegerOperation extends AbstractCastToOperation {
+
+    @Override
+    public void convertBoolean(BooleanPointable boolp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_INTEGER_TAG);
+        dOut.writeLong((long) (boolp.getBoolean() ? 1 : 0));
+    }
+
+    @Override
+    public void convertDecimal(XSDecimalPointable decp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_INTEGER_TAG);
+        dOut.writeLong(decp.getBeforeDecimalPlace());
+    }
+
+    @Override
+    public void convertDouble(DoublePointable doublep, DataOutput dOut) throws SystemException, IOException {
+        double doubleValue = doublep.getDouble();
+        if (Double.isInfinite(doubleValue) || Double.isNaN(doubleValue)) {
+            throw new SystemException(ErrorCode.FOCA0002);
+        }
+        if (doubleValue &gt; Long.MAX_VALUE || doubleValue &lt; Long.MIN_VALUE) {
+            throw new SystemException(ErrorCode.FOCA0003);
+        }
+        dOut.write(ValueTag.XS_INTEGER_TAG);
+        dOut.writeLong(doublep.longValue());
+    }
+
+    @Override
+    public void convertFloat(FloatPointable floatp, DataOutput dOut) throws SystemException, IOException {
+        float floatValue = floatp.getFloat();
+        if (Float.isInfinite(floatValue) || Float.isNaN(floatValue)) {
+            throw new SystemException(ErrorCode.FOCA0002);
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToNotationOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.SystemException;
+
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+public class CastToNotationOperation extends AbstractCastToOperation {
+
+    @Override
+    public void convertNotation(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_NOTATION_TAG);
+        dOut.write(stringp.getByteArray(), stringp.getStartOffset(), stringp.getLength());
+    }
+
+    @Override
+    public void convertString(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_NOTATION_TAG);
+        dOut.write(stringp.getByteArray(), stringp.getStartOffset(), stringp.getLength());
+    }
+
+}
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToQNameOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSQNamePointable;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
+import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
+
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+import edu.uci.ics.hyracks.data.std.util.ArrayBackedValueStorage;
+
+public class CastToQNameOperation extends AbstractCastToOperation {
+    ArrayBackedValueStorage abvsInner = new ArrayBackedValueStorage();
+    DataOutput dOutInner = abvsInner.getDataOutput();
+
+    @Override
+    public void convertQName(XSQNamePointable qnamep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_QNAME_TAG);
+        dOut.write(qnamep.getByteArray(), qnamep.getStartOffset(), qnamep.getLength());
+    }
+
+    @Override
+    public void convertString(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        abvsInner.reset();
+        ICharacterIterator charIterator = new UTF8StringCharacterIterator(stringp);
+        charIterator.reset();
+        int c = 0;
+        int prefixLength = 0;
+        while ((c = charIterator.next()) != ICharacterIterator.EOS_CHAR) {
+            if (c == Character.valueOf(':')) {
+                prefixLength = abvsInner.getLength();
+            } else {
+                dOutInner.writeChar(c);
+            }
+        }
+
+        dOut.write(ValueTag.XS_QNAME_TAG);
+        dOut.write((byte) ((0 &gt;&gt;&gt; 8) &amp; 0xFF));
+        dOut.write((byte) ((0 &gt;&gt;&gt; 0) &amp; 0xFF));
+        // No URI
+        
+        dOut.write((byte) ((prefixLength &gt;&gt;&gt; 8) &amp; 0xFF));
+        dOut.write((byte) ((prefixLength &gt;&gt;&gt; 0) &amp; 0xFF));
+        dOut.write(abvsInner.getByteArray(), abvsInner.getStartOffset(), prefixLength);
+
+        int localNameLength = abvsInner.getLength() - prefixLength;
+        dOut.write((byte) ((localNameLength &gt;&gt;&gt; 8) &amp; 0xFF));
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToStringOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.commons.codec.binary.Base64OutputStream;
+import org.apache.vxquery.datamodel.accessors.atomic.XSBinaryPointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDatePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDateTimePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDecimalPointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDurationPointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSQNamePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSTimePointable;
+import org.apache.vxquery.datamodel.api.IDate;
+import org.apache.vxquery.datamodel.api.ITime;
+import org.apache.vxquery.datamodel.api.ITimezone;
+import org.apache.vxquery.datamodel.util.DateTime;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.SystemException;
+
+import edu.uci.ics.hyracks.data.std.primitive.BooleanPointable;
+import edu.uci.ics.hyracks.data.std.primitive.DoublePointable;
+import edu.uci.ics.hyracks.data.std.primitive.FloatPointable;
+import edu.uci.ics.hyracks.data.std.primitive.IntegerPointable;
+import edu.uci.ics.hyracks.data.std.primitive.LongPointable;
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+import edu.uci.ics.hyracks.data.std.util.ArrayBackedValueStorage;
+import edu.uci.ics.hyracks.data.std.util.ByteArrayAccessibleOutputStream;
+
+public class CastToStringOperation extends AbstractCastToOperation {
+    private ByteArrayAccessibleOutputStream baaos = new ByteArrayAccessibleOutputStream();
+    private ArrayBackedValueStorage abvsInner = new ArrayBackedValueStorage();
+    private DataOutput dOutInner = abvsInner.getDataOutput();
+    int returnTag = ValueTag.XS_STRING_TAG;
+    private final char[] hex = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
+
+    @Override
+    public void convertAnyURI(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(returnTag);
+        dOut.write(stringp.getByteArray(), stringp.getStartOffset(), stringp.getLength());
+    }
+
+    @Override
+    public void convertBase64Binary(XSBinaryPointable binaryp, DataOutput dOut) throws SystemException, IOException {
+        baaos.reset();
+        Base64OutputStream b64os = new Base64OutputStream(baaos, true);
+        b64os.write(binaryp.getByteArray(), binaryp.getStartOffset() + 2, binaryp.getLength() - 2);
+
+        dOut.write(returnTag);
+        dOut.write((byte) ((baaos.size() &gt;&gt;&gt; 8) &amp; 0xFF));
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToTimeOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSDateTimePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSTimePointable;
+import org.apache.vxquery.datamodel.util.DateTime;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
+import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
+
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+public class CastToTimeOperation extends AbstractCastToOperation {
+
+    @Override
+    public void convertDatetime(XSDateTimePointable datetimep, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_TIME_TAG);
+        dOut.write((byte) datetimep.getHour());
+        dOut.write((byte) datetimep.getMinute());
+        dOut.writeInt((int) datetimep.getMilliSecond());
+        dOut.write((byte) datetimep.getTimezoneHour());
+        dOut.write((byte) datetimep.getTimezoneMinute());
+    }
+
+    @Override
+    public void convertString(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        ICharacterIterator charIterator = new UTF8StringCharacterIterator(stringp);
+        charIterator.reset();
+        int c;
+        int index = 0;
+        long[] date = new long[5];
+        boolean positiveTimezone = false;
+        boolean pastDecimal = false;
+        byte decimalPlace = 3;
+
+        // Set defaults
+        date[3] = DateTime.TIMEZONE_HOUR_NULL;
+        date[4] = DateTime.TIMEZONE_MINUTE_NULL;
+
+        while ((c = charIterator.next()) != ICharacterIterator.EOS_CHAR) {
+            if (Character.isDigit(c)) {
+                // Add the digit to the current numbered index.
+                date[index] = date[index] * 10 + Character.getNumericValue(c);
+                if (pastDecimal) {
+                    --decimalPlace;
+                }
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToUntypedAtomicOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import org.apache.vxquery.datamodel.values.ValueTag;
+
+public class CastToUntypedAtomicOperation extends CastToStringOperation {
+    int returnTag = ValueTag.XS_UNTYPED_ATOMIC_TAG;
+}
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/cast/CastToYMDurationOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.cast;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSDurationPointable;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.ErrorCode;
+import org.apache.vxquery.exceptions.SystemException;
+import org.apache.vxquery.runtime.functions.strings.ICharacterIterator;
+import org.apache.vxquery.runtime.functions.strings.UTF8StringCharacterIterator;
+
+import edu.uci.ics.hyracks.data.std.primitive.IntegerPointable;
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+public class CastToYMDurationOperation extends AbstractCastToOperation {
+
+    @Override
+    public void convertDTDuration(IntegerPointable intp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_YEAR_MONTH_DURATION_TAG);
+        dOut.writeInt(0);
+    }
+
+    @Override
+    public void convertDuration(XSDurationPointable durationp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_YEAR_MONTH_DURATION_TAG);
+        dOut.writeInt(durationp.getYearMonth());
+    }
+
+    @Override
+    public void convertString(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        ICharacterIterator charIterator = new UTF8StringCharacterIterator(stringp);
+        charIterator.reset();
+        
+        int value = 0;
+        long year = 0, month = 0;
+        long negativeResult = 1;
+
+        // First character 
+        int c = charIterator.next();
+        if (c == Character.valueOf('-')) {
+            negativeResult = -1;
+            c = charIterator.next();
+        }
+        if (c != Character.valueOf('P')) {
+            // Invalid duration format.
+            throw new SystemException(ErrorCode.FORG0001);
+        }
+
+        while ((c = charIterator.next()) != ICharacterIterator.EOS_CHAR) {
+
+ =======================================================================
+ ==/Users/tillw/code/vxquery/trunk/vxquery/vxquery-core/src/main/java/org/apache/vxquery/runtime/functions/castable/AbstractCastableAsOperation.java
+ =======================================================================
+package org.apache.vxquery.runtime.functions.castable;
+
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.vxquery.datamodel.accessors.atomic.XSBinaryPointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDatePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDateTimePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDecimalPointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSDurationPointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSQNamePointable;
+import org.apache.vxquery.datamodel.accessors.atomic.XSTimePointable;
+import org.apache.vxquery.datamodel.values.ValueTag;
+import org.apache.vxquery.exceptions.SystemException;
+
+import edu.uci.ics.hyracks.data.std.primitive.BooleanPointable;
+import edu.uci.ics.hyracks.data.std.primitive.DoublePointable;
+import edu.uci.ics.hyracks.data.std.primitive.FloatPointable;
+import edu.uci.ics.hyracks.data.std.primitive.IntegerPointable;
+import edu.uci.ics.hyracks.data.std.primitive.LongPointable;
+import edu.uci.ics.hyracks.data.std.primitive.UTF8StringPointable;
+
+public abstract class AbstractCastableAsOperation {
+    public void convertAnyURI(UTF8StringPointable stringp, DataOutput dOut) throws SystemException, IOException {
+        dOut.write(ValueTag.XS_BOOLEAN_TAG);
+        dOut.write((byte) 0);
+    }
+

[... 1502 lines stripped ...]