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>
| <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() >>> 8) & 0xFF));
+ dOut.write((byte) ((baaos.size() >>> 0) & 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 && 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 && (doubleValue != 0 || doubleValue != -0)) {
+ if (decimalPlace + 1 > XSDecimalPointable.PRECISION) {
+ throw new SystemException(ErrorCode.FOCA0001);
+ }
+ decimalPlace++;
+ doubleValue *= 10;
+ }
+ // Remove extra zeros
+ while (doubleValue % 10 == 0 && (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) < 0 || Character.digit(c1, 16) > 15 || Character.digit(c2, 16) < 0
+ || Character.digit(c2, 16) > 15) {
+ // Invalid of characters.
+ throw new SystemException(ErrorCode.FORG0001);
+ }
+ dOutInner.write(((Character.digit(c1, 16) << 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 > Long.MAX_VALUE || doubleValue < 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 >>> 8) & 0xFF));
+ dOut.write((byte) ((0 >>> 0) & 0xFF));
+ // No URI
+
+ dOut.write((byte) ((prefixLength >>> 8) & 0xFF));
+ dOut.write((byte) ((prefixLength >>> 0) & 0xFF));
+ dOut.write(abvsInner.getByteArray(), abvsInner.getStartOffset(), prefixLength);
+
+ int localNameLength = abvsInner.getLength() - prefixLength;
+ dOut.write((byte) ((localNameLength >>> 8) & 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() >>> 8) & 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 ...]