xquery/XQuery__TypeFactory.st
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--
Tagged Smalltalk/X 8.0.0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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:#TypeFactory
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
	instanceVariableNames:'typeHierarchy'
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-Types'
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
TypeFactory class instanceVariableNames:'default'
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
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
 No other class instance variables are inherited by this class.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
"
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
!TypeFactory class methodsFor:'documentation'!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
documentation
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
    This should be entry point to all XQuery types.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
    It is only utility class - no instances are allowed.
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
    [author:]
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
        Honza (kursj1@fel.cvut.cz)
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
    [instance variables:]
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
    [class variables:]
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
    [see also:]
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
"
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
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
!TypeFactory class methodsFor:'instance creation'!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
current
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
    ^ TypeFactoryQuery query.
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
    "Created: / 01-11-2009 / 18:49:53 / Jan Kurs <kursj1@fel.cvut.cz>"
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
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
default
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
    "TODO: only for develop purposes"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
"/    Transcript showCR: ' !!!!!!!! TYPE SUBSYSTEM WARNING !!!!!!!! : Default TypeFactory accessed!!'.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    default ifNil: [ 
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
        default:= self new 
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
    ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
    ^ default.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
    "Created: / 01-11-2009 / 18:50:50 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
    "Modified: / 06-11-2009 / 12:15:46 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
new
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
    ^ self basicNew initialize.
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
    "Created: / 01-11-2009 / 18:20:30 / Jan Kurs <kursj1@fel.cvut.cz>"
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
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
!TypeFactory class methodsFor:'execution'!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
current: factory do: block    
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    ^TypeFactoryQuery answer: factory do: block
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    "Created: / 01-11-2009 / 18:55:15 / Jan Kurs <kursj1@fel.cvut.cz>"
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
!TypeFactory class methodsFor:'testing'!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
isNumeric: typeName
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
    ^ self current isNumeric: typeName.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
    "Created: / 30-12-2009 / 14:00:20 / Jan Kurs <kursj1@fel.cvut.cz>"
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
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
!TypeFactory class methodsFor:'type accessing'!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
getType: typeName
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
    ^ self current getType: typeName.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
    "Modified: / 01-11-2009 / 19:01:06 / 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
isType: typeName subtypeOf: supertypeName
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
    self assert: typeName isString.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
    self assert: supertypeName isString.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
    ^ self current isType: (self getType: typeName) subtypeOf: (self getType: supertypeName)
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
    "Modified: / 07-11-2009 / 23:43:57 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
!
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
isType: typeName supertypeOf: subtypeName
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
    ^ self isType: subtypeName subtypeOf: typeName
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
    "Created: / 08-11-2009 / 14:42:13 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
    "Modified: / 30-12-2009 / 14:44:44 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
! !
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
!TypeFactory methodsFor:'accessing'!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
typeHierarchy
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
    typeHierarchy ifNil:
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
    [
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
        typeHierarchy := TypeHierarchy new.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
    ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
    ^ typeHierarchy
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
    "Modified: / 05-11-2009 / 21:38:07 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
typeHierarchy:something
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
    typeHierarchy := something.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
! !
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
!TypeFactory methodsFor:'bult-in types creation'!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
getXSByte
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
    ^ (DerivedAtomicType new)
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
        typeName: 'xs:byte';
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
        yourself.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
    "Created: / 06-11-2009 / 12:54:15 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
getXSInt
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
    ^ (DerivedAtomicType new)
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
        typeName: 'xs:int';
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
        yourself.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
    "Created: / 06-11-2009 / 12:56:53 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
getXSInteger
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
    ^ (DerivedAtomicType new)
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
        typeName: 'xs:integer';
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
        lexicalFormChecker: self xsIntegerLexicalForm;
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
        canonicalLexicalFormConverter: IntegerFormatter;
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
        yourself.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
    "Created: / 06-11-2009 / 11:35:54 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
    "Modified: / 17-11-2009 / 18:21:35 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
getXSLong
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
    ^ (DerivedAtomicType new)
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
        typeName: 'xs:long';
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
        yourself.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
    "Created: / 06-11-2009 / 12:56:00 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
getXSNegativeInteger
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
    ^ (DerivedAtomicType new)
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
        typeName: 'xs:negativeInteger';
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
        yourself.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
    "Created: / 06-11-2009 / 13:28:11 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
getXSNonNegativeInteger
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
    ^ (DerivedAtomicType new)
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
        typeName: 'xs:nonNegativeInteger';
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
        yourself.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
    "Created: / 06-11-2009 / 12:46:56 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
getXSNonPositiveInteger
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
    ^ (DerivedAtomicType new)
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
        typeName: 'xs:nonPositiveInteger';
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
        yourself.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
    "Created: / 06-11-2009 / 13:26:40 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
getXSPositiveInteger
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
    ^ (DerivedAtomicType new)
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
        typeName: 'xs:positiveInteger';
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
        yourself.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
    "Created: / 06-11-2009 / 12:55:10 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
getXSShort
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
    ^ (DerivedAtomicType new)
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
        typeName: 'xs:short';
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
        yourself.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
    "Created: / 06-11-2009 / 12:16:46 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
getXSUnsignedByte
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
    ^ (DerivedAtomicType new)
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
        typeName: 'xs:unsignedByte';
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
        yourself.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
    "Created: / 06-11-2009 / 12:53:41 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
getXSUnsignedInt
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
    ^ (DerivedAtomicType new)
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
        typeName: 'xs:unsignedInt';
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
        yourself.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
    "Created: / 06-11-2009 / 12:50:45 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   212
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
getXSUnsignedLong
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
    ^ (DerivedAtomicType new)
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
        typeName: 'xs:unsignedLong';
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
        yourself.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
    "Created: / 06-11-2009 / 13:23:21 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
getXSUnsignedShort
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
    ^ (DerivedAtomicType new)
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
        typeName: 'xs:unsignedShort';
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
        yourself.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
    "Created: / 06-11-2009 / 12:53:04 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
! !
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
!TypeFactory methodsFor:'error reporting'!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
raiseError
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
    TypeError raise.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
    "Created: / 01-11-2009 / 18:29:20 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
raiseErrorWithMessage: message
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
    TypeError raiseErrorString: message.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
    "Created: / 01-11-2009 / 18:28:10 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
! !
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
!TypeFactory methodsFor:'initialization'!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
initialize
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
    "Initialize Built-in Types according to the XML Schema spec"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
    self initializeNodes.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
    self initializePrimitiveTypes.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   251
    self initializeDerivedTypes.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   252
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   253
    "Created: / 01-11-2009 / 18:21:50 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   254
    "Modified: / 06-11-2009 / 20:53:24 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   255
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   256
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   257
initializeDerivedTypes
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   258
    "Initialize Built-in derived types according to the XML Schema spec"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   259
    | parent subtype |
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   260
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   261
    parent := self getType: 'xs:decimal'.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   262
    subtype := self getXSInteger.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   263
    self typeHierarchy addSubtype: subtype toType: parent.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   264
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   265
    parent := self getType: 'xs:integer'.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   266
    subtype := self getXSLong.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   267
    self typeHierarchy addSubtype: subtype toType: parent.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   268
    subtype := self getXSNonPositiveInteger.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   269
    self typeHierarchy addSubtype: subtype toType: parent.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   270
    subtype := self getXSNonNegativeInteger.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   271
    self typeHierarchy addSubtype: subtype toType: parent.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   272
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   273
    parent := self getType: 'xs:nonPositiveInteger'.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   274
    subtype := self getXSNegativeInteger.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   275
    self typeHierarchy addSubtype: subtype toType: parent.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   276
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   277
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   278
    parent := self getType: 'xs:long'.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   279
    subtype := self getXSInt.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   280
    self typeHierarchy addSubtype: subtype toType: parent.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   281
    subtype := self getXSShort.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   282
    self typeHierarchy addSubtype: subtype toType: parent.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   283
    subtype := self getXSByte.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   284
    self typeHierarchy addSubtype: subtype toType: parent.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   285
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   286
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   287
    parent := self getType: 'xs:nonNegativeInteger'.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   288
    subtype := self getXSUnsignedLong.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   289
    self typeHierarchy addSubtype: subtype toType: parent.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   290
    subtype := self getXSUnsignedInt.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   291
    self typeHierarchy addSubtype: subtype toType: parent.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   292
    subtype := self getXSUnsignedShort.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   293
    self typeHierarchy addSubtype: subtype toType: parent.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   294
    subtype := self getXSUnsignedByte.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   295
    self typeHierarchy addSubtype: subtype toType: parent.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   296
    subtype := self getXSPositiveInteger.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   297
    self typeHierarchy addSubtype: subtype toType: parent.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   298
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   299
    "Created: / 01-11-2009 / 18:22:18 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   300
    "Modified: / 06-11-2009 / 13:29:37 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   301
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   302
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   303
initializeNodes
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   304
    "Initialize Built-in derived types according to the XML Schema spec"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   305
    | node |
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   306
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   307
    node := TypeNode instance.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   308
    self typeHierarchy addType: node.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   309
    TypeNode subclasses do:
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   310
    [:subclass |
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   311
        | type |
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   312
        type := subclass instance.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   313
        self typeHierarchy addSubtype: type toType: node.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   314
    ]
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   315
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   316
    "Created: / 06-11-2009 / 20:48:08 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   317
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   318
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   319
initializePrimitiveTypes
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   320
    "Initialize Built-in primitive types according to the XML Schema spec"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   321
    | anyAtomic |
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   322
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   323
    anyAtomic := TypeXSAnyAtomicType instance.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   324
    self typeHierarchy addType: anyAtomic.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   325
    TypeXSAnyAtomicType subclasses do:
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   326
    [:subclass |
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   327
        | type |
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   328
        type := subclass instance.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   329
        self typeHierarchy addSubtype: type toType: anyAtomic.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   330
    ]
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   331
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   332
    "Created: / 01-11-2009 / 18:22:12 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   333
    "Modified: / 06-11-2009 / 20:57:51 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   334
! !
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   335
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   336
!TypeFactory methodsFor:'lexical form'!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   337
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   338
xsIntegerLexicalForm
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   339
    ^ (LexicalFormChecker new)
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   340
        checkBlock:
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   341
        [ :form |
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   342
                "HOTFIX - regex would be much better"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   343
                form conform: [:character | 
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   344
                    ('[0-9+]' match: character asString ignoreCase: true)
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   345
                    or: [character asString = '-'].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   346
                ]
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   347
        ];
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   348
        yourself.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   349
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   350
    "Created: / 06-11-2009 / 14:05:38 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   351
    "Modified: / 16-11-2009 / 18:47:02 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   352
! !
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   353
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   354
!TypeFactory methodsFor:'testing'!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   355
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   356
isNumeric: typeName
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   357
    | type |
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   358
    type := self getType: typeName.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   359
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   360
    ^ (self isType: type subtypeOf: (self getType: 'xs:decimal')) or: 
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   361
      [self isType: type subtypeOf: (self getType: 'xs:float')] or: 
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   362
      [self isType: type subtypeOf: (self getType: 'xs:double')].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   363
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   364
    "Created: / 07-11-2009 / 23:34:06 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   365
    "Modified: / 30-12-2009 / 14:02:19 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   366
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   367
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   368
isType: type instanceOf: anotherType
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   369
    self assert: type isXMLType.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   370
    self assert: anotherType isXMLType.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   371
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   372
    ^type = anotherType.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   373
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   374
    "Created: / 08-11-2009 / 14:32:46 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   375
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   376
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   377
isType: type subtypeOf: anotherType
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   378
    self assert: type isXMLType.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   379
    self assert: anotherType isXMLType.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   380
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   381
    ^type = anotherType
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   382
        ifTrue:
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   383
            [true]
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   384
        ifFalse: [
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   385
            | supertype |
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   386
            supertype := type supertype.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   387
            supertype ifNil: [ false ]
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   388
                      ifNotNil: [ self isType: supertype subtypeOf: anotherType]
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   389
        ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   390
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   391
    "Created: / 06-11-2009 / 11:28:15 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   392
    "Modified: / 07-11-2009 / 23:54:15 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   393
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   394
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   395
isType: type supertypeOf: anotherType
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   396
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   397
    ^ self isType: anotherType subtypeOf: type
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   398
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   399
    "Created: / 06-11-2009 / 11:28:52 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   400
! !
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   401
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   402
!TypeFactory methodsFor:'type accessing'!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   403
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   404
getType: typeName
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   405
    "typeName is string name of the requiered type"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   406
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   407
    ^ (self typeHierarchy getTypeByName: typeName) value
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   408
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   409
    "this ugly if cascade is temporary solution - it should be replaced.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   410
        It is neccessary to create proper type system at first"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   411
"/    | qName |
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   412
"/
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   413
"/    (typeName = 'item') ifTrue: [ ^ TypeItem instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   414
"/    (typeName = 'node') ifTrue: [ ^ TypeNode instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   415
"/    (typeName = 'attribute') ifTrue: [ ^ TypeAttribute instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   416
"/    (typeName = 'comment') ifTrue: [ ^ TypeComment instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   417
"/    (typeName = 'document') ifTrue: [ ^ TypeDocument instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   418
"/    (typeName = 'element') ifTrue: [ ^ TypeElement instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   419
"/    (typeName = 'processing-instruction') ifTrue: [ ^ TypeProcessingInstruction instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   420
"/    (typeName = 'text') ifTrue: [ ^ TypeText instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   421
"/
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   422
"/    "This work only for the primitive types not for derived types!!"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   423
"/    qName := QName withQNameString: typeName.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   424
"/    ^ (Smalltalk classNamed: 'XQuery::TypeXS', qName localName asUppercaseFirst) instance.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   425
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   426
"/    (typeName = 'xs:anyAtomicType') ifTrue: [ ^ TypeXSAnyAtomicType instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   427
"/    (typeName = 'xs:untypedAtomic') ifTrue: [ ^ TypeXSUntypedAtomic instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   428
"/    (typeName = 'xs:dateTime') ifTrue: [ ^ TypeXSDateTime instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   429
"/    (typeName = 'xs:time') ifTrue: [ ^ TypeXSTime instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   430
"/    (typeName = 'xs:QName') ifTrue: [ ^ TypeXSQName instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   431
"/    (typeName = 'xs:string') ifTrue: [ ^ TypeXSString instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   432
"/    (typeName = 'xs:normalizedString') ifTrue: [ ^ TypeXSNormalizedString instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   433
"/    (typeName = 'xs:token') ifTrue: [ ^ TypeXSToken instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   434
"/    (typeName = 'xs:Name') ifTrue: [ ^ TypeXSName instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   435
"/    (typeName = 'xs:NCName') ifTrue: [ ^ TypeXSNCName instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   436
"/    (typeName = 'xs:decimal') ifTrue: [ ^ TypeXSDecimal instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   437
"/    (typeName = 'xs:integer') ifTrue: [ ^ TypeXSInteger instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   438
"/    (typeName = 'xs:float') ifTrue: [ ^ TypeXSFloat instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   439
"/    (typeName = 'xs:double') ifTrue: [ ^ TypeXSDouble instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   440
"/    (typeName = 'xs:boolean') ifTrue: [ ^ TypeXSBoolean instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   441
"/    (typeName = 'xs:untyped') ifTrue: [ ^ TypeXSUntyped instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   442
"/    (typeName = 'xs:anyURI') ifTrue: [ ^ TypeXSAnyURI instance ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   443
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   444
"/    ^ TypeItem instance.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   445
"/    ^ self shouldNeverBeReached.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   446
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   447
    "Created: / 01-11-2009 / 17:51:02 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   448
    "Modified: / 05-11-2009 / 22:31:26 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   449
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   450
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   451
primitiveTypeFor: type
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   452
    " return the parent which is primitive type "
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   453
    | primType |
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   454
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   455
    primType := type.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   456
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   457
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   458
    [ primType isPrimitive ] whileFalse:
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   459
    [
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   460
        primType := self supertypeOf: primType.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   461
    ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   462
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   463
    ^ primType.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   464
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   465
    "Created: / 18-11-2009 / 00:52:54 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   466
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   467
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   468
subtypesOf: type
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   469
    | typeEntry subtypes |
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   470
    self assert: type isXMLType.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   471
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   472
    typeEntry := self typeHierarchy getType: type.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   473
    subtypes := OrderedCollection with: type value.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   474
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   475
    typeEntry children do: [ :item |
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   476
        subtypes addAll: (self subtypesOf: item value).
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   477
    ].
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   478
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   479
    ^ subtypes.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   480
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   481
    "Created: / 05-11-2009 / 22:40:54 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   482
    "Modified: / 08-11-2009 / 14:45:45 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   483
!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   484
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   485
supertypeOf: type
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   486
    self assert: type isXMLType.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   487
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   488
    ^ (self typeHierarchy getType: type) parent value.
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   489
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   490
    "Created: / 05-11-2009 / 23:08:39 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   491
    "Modified: / 08-11-2009 / 14:44:46 / Jan Kurs <kursj1@fel.cvut.cz>"
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   492
! !
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   493
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   494
!TypeFactory class methodsFor:'documentation'!
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   495
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   496
version_SVN
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   497
    ^ '$Id$'
e28ef0f20186 Branch datatypes reintegrated
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   498
! !