Visitor.st
author Stefan Vogel <sv@exept.de>
Thu, 16 Apr 2015 18:28:45 +0200
branchexpecco_2_7_5
changeset 18220 361e98951d47
parent 13230 cc6bc2d6c296
child 18011 deb0c3355881
child 21397 2b6bb4b440bb
permissions -rw-r--r--
Add methods for backward compatibilty with older sublasses
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     1
"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     2
 COPYRIGHT (c) 2002 by eXept Software AG
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     3
              All Rights Reserved
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     4
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     5
 This software is furnished under a license and may be used
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    10
 hereby transferred.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    11
"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    12
"{ Package: 'stx:libbasic' }"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    13
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    14
Object subclass:#Visitor
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    15
	instanceVariableNames:''
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    16
	classVariableNames:''
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    17
	poolDictionaries:''
8392
17648405fc9b Category change
Stefan Vogel <sv@exept.de>
parents: 8391
diff changeset
    18
	category:'System-Visiting'
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    19
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    20
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    21
!Visitor class methodsFor:'documentation'!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    22
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    23
copyright
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    24
"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    25
 COPYRIGHT (c) 2002 by eXept Software AG
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    26
              All Rights Reserved
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    27
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    28
 This software is furnished under a license and may be used
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    29
 only in accordance with the terms of that license and with the
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    31
 be provided or otherwise made available to, or used by, any
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    32
 other person.  No title to or ownership of the software is
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    33
 hereby transferred.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    34
"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    35
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    36
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    37
documentation
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    38
"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    39
    This class is abstract and implements the visitor pattern.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    40
    It defines #visitXXX:with: messages for various kinds of objects.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    41
    Any of these messsages is eventually mapped to #visitObject:with:.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    42
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    43
    When a class redefines #acceptVisitor:with:, an method has to be defined here, too.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    44
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    45
    Subclasses have to define at least #visitObject:with:
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    46
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    47
    [author:]
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    48
        Stefan Vogel (stefan@zwerg)
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    49
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    50
    [see also:]
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    51
        Object>>acceptVisitor:with:
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    52
"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    53
! !
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    54
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    55
!Visitor methodsFor:'helpers'!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    56
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    57
doesNotUnderstand:aMessage
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    58
    "catch unimplemented #visitXXX:with: messages and redirect them to #visitObject:with:.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    59
     maybe someone implemented an #acceptVisitor:with: in the XXX class and didn't
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    60
     implement the corresponding method here.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    61
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    62
     This should not happen, and a error message is printed, because this can also
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    63
     occur due to a typo."
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    64
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    65
    |selector args|
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    66
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    67
    selector := aMessage selector.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    68
    ((selector startsWith:'visit') and:[selector endsWith:'with:']) ifTrue:[
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    69
        ('Visitor: unimplemented #', selector, ' in class ', self className, '. Please define as #visitObject:with:') errorPrintCR.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    70
        args := aMessage arguments.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    71
        ^ self visitObject:(args at:1) with:(args at:2).
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    72
    ].
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    73
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    74
    ^ super doesNotUnderstand:aMessage
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    75
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    76
    "
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    77
       Visitor new visitFoo:#foo with:'arg'
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    78
    "
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    79
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    80
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    81
visitChildrenOf:anObject
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    82
    "recursively enumerate anObjects refs, visiting each of the child objects.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    83
     nil childs are not visited"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    84
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    85
    |instVarNames theClass 
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    86
     sz "{ Class: SmallInteger }"|
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    87
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    88
    theClass := anObject class.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    89
    sz := theClass instSize.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    90
    sz ~~ 0 ifTrue:[
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    91
        instVarNames := theClass allInstVarNames.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    92
        1 to:sz do:[:i |  |ref|
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    93
            ref := anObject instVarAt:i.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    94
            ref notNil ifTrue:[
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    95
                ref acceptVisitor:self with:(instVarNames at:i).
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    96
                self nextObject.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    97
            ].
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    98
        ].
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    99
    ].
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   100
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   101
    theClass isVariable ifTrue:[
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   102
        sz := anObject basicSize.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   103
        sz ~~ 0 ifTrue:[
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   104
            1 to:sz do:[:i |
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   105
                (anObject basicAt:i) acceptVisitor:self with:i.   
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   106
                self nextObject.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   107
            ]
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   108
        ].
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   109
    ].
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   110
! !
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   111
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   112
!Visitor methodsFor:'subclass responsibility'!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   113
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   114
nextObject
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   115
    "this is sent, when a new Object is going to be visited.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   116
     Subclasses may redefine this to perform specific actions"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   117
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   118
    ^ self 
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   119
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   120
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   121
visitObject:anObject with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   122
    "visit an object. Subclasses must at least implement this method"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   123
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   124
    self subclassResponsibility
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   125
! !
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   126
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   127
!Visitor methodsFor:'visiting smalltalk types'!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   128
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   129
visitBehavior:aSymbol with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   130
    "visit a class"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   131
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   132
    self visitObject:aSymbol with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   133
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   134
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   135
visitBitArray:aByteArray with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   136
    "visit an absolute time value"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   137
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   138
    self visitSequenceableCollection:aByteArray with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   139
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   140
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   141
visitBlock:aBlock with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   142
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   143
    self visitObject:aBlock with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   144
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   145
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   146
visitBoolean:aBoolean with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   147
    "visit a Boolean"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   148
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   149
    self visitObject:aBoolean with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   150
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   151
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   152
visitByteArray:aByteArray with:aParameter
11037
ab98e48e189e changed #visitByteArray:with: - comment
Stefan Vogel <sv@exept.de>
parents: 11036
diff changeset
   153
    "visit a ByteArray value"
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   154
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   155
    self visitSequenceableCollection:aByteArray with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   156
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   157
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   158
visitCharacter:aCharacter with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   159
    "visit a Character"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   160
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   161
    self visitObject:aCharacter with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   162
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   163
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   164
visitCollection:aCollection with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   165
    "visit a Collection"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   166
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   167
    self visitObject:aCollection with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   168
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   169
11175
7272e8604a9a #visitDate:with:
Stefan Vogel <sv@exept.de>
parents: 11037
diff changeset
   170
visitDate:aDate with:aParameter
7272e8604a9a #visitDate:with:
Stefan Vogel <sv@exept.de>
parents: 11037
diff changeset
   171
    "visit a date value"
7272e8604a9a #visitDate:with:
Stefan Vogel <sv@exept.de>
parents: 11037
diff changeset
   172
7272e8604a9a #visitDate:with:
Stefan Vogel <sv@exept.de>
parents: 11037
diff changeset
   173
    self visitObject:aDate with:aParameter
7272e8604a9a #visitDate:with:
Stefan Vogel <sv@exept.de>
parents: 11037
diff changeset
   174
!
7272e8604a9a #visitDate:with:
Stefan Vogel <sv@exept.de>
parents: 11037
diff changeset
   175
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   176
visitDictionary:aDictionary with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   177
    "visit a Dictionary"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   178
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   179
    self visitCollection:aDictionary with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   180
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   181
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   182
visitFloat:aFloat with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   183
    "visit a Float"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   184
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   185
    self visitNumber:aFloat with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   186
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   187
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   188
visitFraction:aFraction with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   189
    "visit a Fraction"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   190
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   191
    self visitNumber:aFraction with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   192
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   193
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   194
visitInteger:anInteger with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   195
    "visit an Integer"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   196
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   197
    self visitNumber:anInteger with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   198
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   199
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   200
visitInterval:anInterval with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   201
    "intervals are a special flavor of sequenceable collection (saving memory)
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   202
     We treat it as SequenceableCollection by default.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   203
     Encoders that do a dense representation, redefine this to #visitObject"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   204
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   205
    ^ self visitSequenceableCollection:anInterval with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   206
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   207
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   208
visitNilWith:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   209
    "visit a nil"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   210
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   211
    self visitObject:nil with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   212
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   213
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   214
visitNumber:aNumber with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   215
    "visit an Integer"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   216
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   217
    self visitObject:aNumber with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   218
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   219
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   220
visitSequenceableCollection:aCollection with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   221
    "visit a SequenceableCollection"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   222
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   223
    self visitCollection:aCollection with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   224
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   225
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   226
visitSet:aCollection with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   227
    "visit a Set"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   228
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   229
    self visitCollection:aCollection with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   230
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   231
11749
983e95cad15e new: #visitStream:with:
Stefan Vogel <sv@exept.de>
parents: 11175
diff changeset
   232
visitStream:aStream with:aParameter
983e95cad15e new: #visitStream:with:
Stefan Vogel <sv@exept.de>
parents: 11175
diff changeset
   233
    "visit a Stream"
983e95cad15e new: #visitStream:with:
Stefan Vogel <sv@exept.de>
parents: 11175
diff changeset
   234
983e95cad15e new: #visitStream:with:
Stefan Vogel <sv@exept.de>
parents: 11175
diff changeset
   235
    self visitObject:aStream with:aParameter
983e95cad15e new: #visitStream:with:
Stefan Vogel <sv@exept.de>
parents: 11175
diff changeset
   236
!
983e95cad15e new: #visitStream:with:
Stefan Vogel <sv@exept.de>
parents: 11175
diff changeset
   237
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   238
visitString:aString with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   239
    "visit a String"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   240
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   241
    self visitObject:aString with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   242
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   243
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   244
visitSymbol:aSymbol with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   245
    "visit a Symbol"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   246
11036
69e153cab289 changed #visitSymbol:with:
Stefan Vogel <sv@exept.de>
parents: 8392
diff changeset
   247
    ^ self visitString:aSymbol with:aParameter
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   248
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   249
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   250
visitTimestamp:aTimestamp with:aParameter
11175
7272e8604a9a #visitDate:with:
Stefan Vogel <sv@exept.de>
parents: 11037
diff changeset
   251
    "visit an timestamp value"
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   252
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   253
    self visitObject:aTimestamp with:aParameter
13230
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   254
!
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   255
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   256
visitUtcTimestamp:aTimestamp with:aParameter
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   257
    "visit an UTC timestamp value"
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   258
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   259
    self visitTimestamp:aTimestamp with:aParameter
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   260
! !
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   261
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   262
!Visitor class methodsFor:'documentation'!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   263
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   264
version
13230
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   265
    ^ '$Header: /cvs/stx/stx/libbasic/Visitor.st,v 1.7 2011-01-24 13:20:08 stefan Exp $'
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   266
!
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   267
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   268
version_CVS
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   269
    ^ '$Header: /cvs/stx/stx/libbasic/Visitor.st,v 1.7 2011-01-24 13:20:08 stefan Exp $'
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   270
! !