Visitor.st
author mawalch
Mon, 12 Jun 2017 12:41:34 +0200
changeset 21790 e2c2bf98f841
parent 21397 2b6bb4b440bb
child 22338 ab440df285c4
permissions -rw-r--r--
#OTHER by mawalch Spelling fixes.
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
21397
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    14
"{ NameSpace: Smalltalk }"
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    15
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    16
Object subclass:#Visitor
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    17
	instanceVariableNames:''
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    18
	classVariableNames:''
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    19
	poolDictionaries:''
8392
17648405fc9b Category change
Stefan Vogel <sv@exept.de>
parents: 8391
diff changeset
    20
	category:'System-Visiting'
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    21
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    22
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    23
!Visitor class methodsFor:'documentation'!
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
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    26
"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    27
 COPYRIGHT (c) 2002 by eXept Software AG
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    28
              All Rights Reserved
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    29
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    30
 This software is furnished under a license and may be used
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    31
 only in accordance with the terms of that license and with the
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    32
 inclusion of the above copyright notice.   This software may not
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    33
 be provided or otherwise made available to, or used by, any
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    34
 other person.  No title to or ownership of the software is
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    35
 hereby transferred.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    36
"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    37
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    38
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    39
documentation
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    40
"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    41
    This class is abstract and implements the visitor pattern.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    42
    It defines #visitXXX:with: messages for various kinds of objects.
21790
e2c2bf98f841 #OTHER by mawalch
mawalch
parents: 21397
diff changeset
    43
    Any of these messages is eventually mapped to #visitObject:with:.
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    44
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    45
    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
    46
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    47
    Subclasses have to define at least #visitObject:with:
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    48
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    49
    [author:]
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    50
        Stefan Vogel (stefan@zwerg)
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    51
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    52
    [see also:]
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    53
        Object>>acceptVisitor:with:
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    54
"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    55
! !
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    56
21397
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    57
!Visitor class methodsFor:'queries'!
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    58
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    59
isAbstract
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    60
    "Return if this class is an abstract class.
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    61
     True is returned here for myself only; false for subclasses.
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    62
     Abstract subclasses must redefine this again."
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    63
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    64
    ^ self == Visitor.
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    65
! !
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    66
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    67
!Visitor methodsFor:'helpers'!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    68
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    69
doesNotUnderstand:aMessage
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    70
    "catch unimplemented #visitXXX:with: messages and redirect them to #visitObject:with:.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    71
     maybe someone implemented an #acceptVisitor:with: in the XXX class and didn't
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    72
     implement the corresponding method here.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    73
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    74
     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
    75
     occur due to a typo."
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    76
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    77
    |selector args|
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    78
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    79
    selector := aMessage selector.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    80
    ((selector startsWith:'visit') and:[selector endsWith:'with:']) ifTrue:[
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    81
        ('Visitor: unimplemented #', selector, ' in class ', self className, '. Please define as #visitObject:with:') errorPrintCR.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    82
        args := aMessage arguments.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    83
        ^ self visitObject:(args at:1) with:(args at:2).
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    84
    ].
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    85
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    86
    ^ super doesNotUnderstand:aMessage
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    87
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    88
    "
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    89
       Visitor new visitFoo:#foo with:'arg'
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    90
    "
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    91
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    92
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    93
visitChildrenOf:anObject
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    94
    "recursively enumerate anObjects refs, visiting each of the child objects.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    95
     nil childs are not visited"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    96
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    97
    |instVarNames theClass 
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    98
     sz "{ Class: SmallInteger }"|
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    99
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   100
    theClass := anObject class.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   101
    sz := theClass instSize.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   102
    sz ~~ 0 ifTrue:[
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   103
        instVarNames := theClass allInstVarNames.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   104
        1 to:sz do:[:i |  |ref|
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   105
            ref := anObject instVarAt:i.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   106
            ref notNil ifTrue:[
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   107
                ref acceptVisitor:self with:(instVarNames at:i).
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   108
                self nextObject.
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
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   113
    theClass isVariable ifTrue:[
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   114
        sz := anObject basicSize.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   115
        sz ~~ 0 ifTrue:[
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   116
            1 to:sz do:[:i |
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   117
                (anObject basicAt:i) acceptVisitor:self with:i.   
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   118
                self nextObject.
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
    ].
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   122
! !
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   123
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   124
!Visitor methodsFor:'subclass responsibility'!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   125
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   126
nextObject
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   127
    "this is sent, when a new Object is going to be visited.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   128
     Subclasses may redefine this to perform specific actions"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   129
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   130
    ^ self 
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   131
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   132
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   133
visitObject:anObject with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   134
    "visit an object. Subclasses must at least implement this method"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   135
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   136
    self subclassResponsibility
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   137
! !
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   138
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   139
!Visitor methodsFor:'visiting smalltalk types'!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   140
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   141
visitBehavior:aSymbol with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   142
    "visit a class"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   143
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   144
    self visitObject:aSymbol with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   145
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   146
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   147
visitBitArray:aByteArray with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   148
    "visit an absolute time value"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   149
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   150
    self visitSequenceableCollection:aByteArray with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   151
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   152
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   153
visitBlock:aBlock with:aParameter
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 visitObject:aBlock 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
visitBoolean:aBoolean with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   159
    "visit a Boolean"
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:aBoolean 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
visitByteArray:aByteArray with:aParameter
11037
ab98e48e189e changed #visitByteArray:with: - comment
Stefan Vogel <sv@exept.de>
parents: 11036
diff changeset
   165
    "visit a ByteArray value"
8391
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 visitSequenceableCollection:aByteArray 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
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   170
visitCharacter:aCharacter with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   171
    "visit a Character"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   172
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   173
    self visitObject:aCharacter with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   174
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   175
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   176
visitCollection:aCollection with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   177
    "visit a Collection"
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 visitObject:aCollection 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
11175
7272e8604a9a #visitDate:with:
Stefan Vogel <sv@exept.de>
parents: 11037
diff changeset
   182
visitDate:aDate with:aParameter
7272e8604a9a #visitDate:with:
Stefan Vogel <sv@exept.de>
parents: 11037
diff changeset
   183
    "visit a date value"
7272e8604a9a #visitDate:with:
Stefan Vogel <sv@exept.de>
parents: 11037
diff changeset
   184
7272e8604a9a #visitDate:with:
Stefan Vogel <sv@exept.de>
parents: 11037
diff changeset
   185
    self visitObject:aDate with:aParameter
7272e8604a9a #visitDate:with:
Stefan Vogel <sv@exept.de>
parents: 11037
diff changeset
   186
!
7272e8604a9a #visitDate:with:
Stefan Vogel <sv@exept.de>
parents: 11037
diff changeset
   187
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   188
visitDictionary:aDictionary with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   189
    "visit a Dictionary"
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 visitCollection:aDictionary 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
visitFloat:aFloat with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   195
    "visit a Float"
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:aFloat 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
visitFraction:aFraction with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   201
    "visit a Fraction"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   202
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   203
    self visitNumber:aFraction with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   204
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   205
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   206
visitInteger:anInteger with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   207
    "visit an Integer"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   208
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   209
    self visitNumber:anInteger with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   210
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   211
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   212
visitInterval:anInterval with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   213
    "intervals are a special flavor of sequenceable collection (saving memory)
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   214
     We treat it as SequenceableCollection by default.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   215
     Encoders that do a dense representation, redefine this to #visitObject"
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 visitSequenceableCollection:anInterval 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
visitNilWith:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   221
    "visit a nil"
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 visitObject:nil 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
visitNumber:aNumber with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   227
    "visit an Integer"
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 visitObject:aNumber 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
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   232
visitSequenceableCollection:aCollection with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   233
    "visit a SequenceableCollection"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   234
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   235
    self visitCollection:aCollection with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   236
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   237
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   238
visitSet:aCollection with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   239
    "visit a Set"
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 visitCollection:aCollection 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
11749
983e95cad15e new: #visitStream:with:
Stefan Vogel <sv@exept.de>
parents: 11175
diff changeset
   244
visitStream:aStream with:aParameter
983e95cad15e new: #visitStream:with:
Stefan Vogel <sv@exept.de>
parents: 11175
diff changeset
   245
    "visit a Stream"
983e95cad15e new: #visitStream:with:
Stefan Vogel <sv@exept.de>
parents: 11175
diff changeset
   246
983e95cad15e new: #visitStream:with:
Stefan Vogel <sv@exept.de>
parents: 11175
diff changeset
   247
    self visitObject:aStream with:aParameter
983e95cad15e new: #visitStream:with:
Stefan Vogel <sv@exept.de>
parents: 11175
diff changeset
   248
!
983e95cad15e new: #visitStream:with:
Stefan Vogel <sv@exept.de>
parents: 11175
diff changeset
   249
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   250
visitString:aString with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   251
    "visit a String"
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:aString with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   254
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   255
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   256
visitSymbol:aSymbol with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   257
    "visit a Symbol"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   258
11036
69e153cab289 changed #visitSymbol:with:
Stefan Vogel <sv@exept.de>
parents: 8392
diff changeset
   259
    ^ self visitString:aSymbol 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
visitTimestamp:aTimestamp with:aParameter
11175
7272e8604a9a #visitDate:with:
Stefan Vogel <sv@exept.de>
parents: 11037
diff changeset
   263
    "visit an timestamp value"
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   264
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   265
    self visitObject:aTimestamp with:aParameter
13230
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
visitUtcTimestamp:aTimestamp with:aParameter
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   269
    "visit an UTC timestamp value"
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   270
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   271
    self visitTimestamp:aTimestamp with:aParameter
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   272
! !
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   273
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   274
!Visitor class methodsFor:'documentation'!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   275
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   276
version
21397
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
   277
    ^ '$Header$'
13230
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   278
!
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   279
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   280
version_CVS
21397
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
   281
    ^ '$Header$'
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   282
! !
21397
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
   283