author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Mon, 02 Jul 2018 08:46:01 +0200 | |
changeset 305 | bad21c4f64bf |
parent 296 | ea3dbc023c80 |
permissions | -rw-r--r-- |
241
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
"{ Package: 'stx:goodies/xmlsuite/xquery' }" |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
"{ NameSpace: XQuery }" |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
Object subclass:#AnyAtomicTypeToAnyAtomicTypeCast |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
6 |
instanceVariableNames:'atomicValue anotherType' |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
7 |
classVariableNames:'' |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
8 |
poolDictionaries:'' |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
9 |
category:'XQuery-TypeCasting' |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
10 |
! |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
11 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
12 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
13 |
!AnyAtomicTypeToAnyAtomicTypeCast methodsFor:'accessing'! |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
14 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
15 |
anotherType |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
16 |
^ anotherType |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
17 |
! |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
18 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
19 |
anotherType:something |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
anotherType := something. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
! |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
22 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
23 |
atomicValue |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
24 |
^ atomicValue |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
25 |
! |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
26 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
27 |
atomicValue: anAtomicValue |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
28 |
atomicValue := anAtomicValue. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
29 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
30 |
"Modified: / 08-11-2009 / 14:16:18 / Jan Kurs <kursj1@fel.cvut.cz>" |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
31 |
! ! |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
32 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
33 |
!AnyAtomicTypeToAnyAtomicTypeCast methodsFor:'casting'! |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
34 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
35 |
cast |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
36 |
atomicValue typeName = anotherType typeName ifTrue: |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
37 |
[ |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
38 |
| value | |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
39 |
value := atomicValue nodeId. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
40 |
^ AtomicItem withValue: value asType: anotherType typeName. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
41 |
] |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
42 |
ifFalse: |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
43 |
[ |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
44 |
AtomicItemError raiseErrorString: 'cast from ', atomicValue typeName, ' to ', anotherType typeName, ' not supported'. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
45 |
]. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
46 |
"/ (TypeFactory isType: anotherType typeName subtypeOf: 'xs:integer') ifTrue: [ |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
47 |
"/ "see: 17.1.3.4 Casting to xs:integer on http://www.w3.org/TR/xpath-functions" |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
48 |
"/ (atomicValue isSubtypeOf: 'xs:integer') ifTrue: [ |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
49 |
"/ ^ AtomicItem withValue: atomicValue nodeId asType: anotherType typeName. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
50 |
"/ ]. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
51 |
"/ (atomicValue isSubtypeOf: 'xs:decimal' or: 'xs:float' or: 'xs:double') ifTrue: [ |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
52 |
"/ ^ AtomicItem withValue: (atomicValue nodeId truncated) asType: anotherType typeName. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
53 |
"/ ]. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
54 |
"/ (atomicValue isSubtypeOf: 'xs:boolean') ifTrue: [ |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
55 |
"/ atomicValue nodeId ifTrue: [ |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
56 |
"/ ^ AtomicItem withValue: 0 asType: anotherType typeName. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
57 |
"/ ] ifFalse: [ |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
58 |
"/ ^ AtomicItem withValue: 0 asType: anotherType typeName. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
59 |
"/ ] |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
60 |
"/ ]. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
61 |
"/ ]. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
62 |
"/ |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
63 |
"/ |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
64 |
"/ "TODO - this is only HOT FIX - see XQuery Types for more information" |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
65 |
"/ (TypeFactory isType: anotherType typeName subtypeOf: 'xs:decimal') ifTrue: [ |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
66 |
"/ ^ AtomicItem withValue: atomicValue nodeId asNumber asType: anotherType typeName. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
67 |
"/ ]. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
68 |
"/ |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
69 |
"/"/ (TypeFactory isType: anotherType typeName subtypeOf: 'xs:double') ifTrue: [ |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
70 |
"/"/ ^ AtomicItem withValue: atomicValue nodeId asNumber asDouble asType: anotherType typeName. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
71 |
"/"/ ]. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
72 |
"/ |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
73 |
"/ |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
74 |
"/ ^ AtomicItem withValue: atomicValue nodeId asType: anotherType typeName. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
75 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
76 |
"Created: / 08-11-2009 / 14:15:02 / Jan Kurs <kursj1@fel.cvut.cz>" |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
77 |
"Modified: / 17-11-2009 / 14:33:36 / Jan Kurs <kursj1@fel.cvut.cz>" |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
78 |
! ! |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
79 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
80 |
!AnyAtomicTypeToAnyAtomicTypeCast methodsFor:'error reporting'! |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
81 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
82 |
raiseError: errorType |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
83 |
AtomicItemError raiseErrorString: 'Error no.: ', errorType. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
84 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
85 |
"Created: / 05-10-2009 / 17:20:46 / Jan Kurs <kursj1@fel.cvut.cz>" |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
86 |
"Modified: / 24-10-2009 / 16:14:30 / Jan Kurs <kursj1@fel.cvut.cz>" |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
87 |
! |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
88 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
89 |
raiseError: errorType withMessage: message |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
90 |
AtomicItemError raiseErrorString: message, ' Error no.: ', errorType. |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
91 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
92 |
"Created: / 05-10-2009 / 17:21:52 / Jan Kurs <kursj1@fel.cvut.cz>" |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
93 |
"Modified: / 24-10-2009 / 16:14:25 / Jan Kurs <kursj1@fel.cvut.cz>" |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
94 |
! ! |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
95 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
96 |
!AnyAtomicTypeToAnyAtomicTypeCast class methodsFor:'documentation'! |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
97 |
|
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
98 |
version_SVN |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
99 |
^ '$Id$' |
e28ef0f20186
Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
100 |
! ! |