Visitor.st
author Claus Gittinger <cg@exept.de>
Tue, 09 Jul 2019 20:55:17 +0200
changeset 24417 03b083548da2
parent 23193 0cd93aab464a
child 24791 b74d57425436
permissions -rw-r--r--
#REFACTORING by exept class: Smalltalk class changed: #recursiveInstallAutoloadedClassesFrom:rememberIn:maxLevels:noAutoload:packageTop:showSplashInLevels: Transcript showCR:(... bindWith:...) -> Transcript showCR:... with:...
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
22808
25bffa650ead #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22338
diff changeset
     1
"{ Encoding: utf8 }"
25bffa650ead #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22338
diff changeset
     2
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     3
"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     4
 COPYRIGHT (c) 2002 by eXept Software AG
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     5
              All Rights Reserved
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     6
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     7
 This software is furnished under a license and may be used
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     8
 only in accordance with the terms of that license and with the
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     9
 inclusion of the above copyright notice.   This software may not
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    10
 be provided or otherwise made available to, or used by, any
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    11
 other person.  No title to or ownership of the software is
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    12
 hereby transferred.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    13
"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    14
"{ Package: 'stx:libbasic' }"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    15
21397
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    16
"{ NameSpace: Smalltalk }"
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    17
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    18
Object subclass:#Visitor
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    19
	instanceVariableNames:''
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    20
	classVariableNames:''
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    21
	poolDictionaries:''
8392
17648405fc9b Category change
Stefan Vogel <sv@exept.de>
parents: 8391
diff changeset
    22
	category:'System-Visiting'
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    23
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    24
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    25
!Visitor class methodsFor:'documentation'!
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
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    28
"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    29
 COPYRIGHT (c) 2002 by eXept Software AG
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    30
              All Rights Reserved
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    31
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    32
 This software is furnished under a license and may be used
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    33
 only in accordance with the terms of that license and with the
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    34
 inclusion of the above copyright notice.   This software may not
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    35
 be provided or otherwise made available to, or used by, any
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    36
 other person.  No title to or ownership of the software is
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    37
 hereby transferred.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    38
"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    39
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    40
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    41
documentation
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    42
"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    43
    This class is abstract and implements the visitor pattern.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    44
    It defines #visitXXX:with: messages for various kinds of objects.
21790
e2c2bf98f841 #OTHER by mawalch
mawalch
parents: 21397
diff changeset
    45
    Any of these messages is eventually mapped to #visitObject:with:.
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    46
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    47
    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
    48
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    49
    Subclasses have to define at least #visitObject:with:
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    50
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    51
    [author:]
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    52
        Stefan Vogel (stefan@zwerg)
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    53
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    54
    [see also:]
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    55
        Object>>acceptVisitor:with:
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    56
"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    57
! !
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    58
21397
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    59
!Visitor class methodsFor:'queries'!
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    60
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    61
isAbstract
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    62
    "Return if this class is an abstract class.
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    63
     True is returned here for myself only; false for subclasses.
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    64
     Abstract subclasses must redefine this again."
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
    ^ self == Visitor.
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    67
! !
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
    68
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    69
!Visitor methodsFor:'helpers'!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    70
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    71
doesNotUnderstand:aMessage
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    72
    "catch unimplemented #visitXXX:with: messages and redirect them to #visitObject:with:.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    73
     maybe someone implemented an #acceptVisitor:with: in the XXX class and didn't
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    74
     implement the corresponding method here.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    75
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    76
     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
    77
     occur due to a typo."
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 args|
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    80
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    81
    selector := aMessage selector.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    82
    ((selector startsWith:'visit') and:[selector endsWith:'with:']) ifTrue:[
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    83
        ('Visitor: unimplemented #', selector, ' in class ', self className, '. Please define as #visitObject:with:') errorPrintCR.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    84
        args := aMessage arguments.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    85
        ^ self visitObject:(args at:1) with:(args at:2).
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    86
    ].
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    87
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    88
    ^ super doesNotUnderstand:aMessage
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    89
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    90
    "
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    91
       Visitor new visitFoo:#foo with:'arg'
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    92
    "
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    93
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    94
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    95
visitChildrenOf:anObject
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    96
    "recursively enumerate anObjects refs, visiting each of the child objects.
22338
ab440df285c4 #DOCUMENTATION by mawalch
mawalch
parents: 21790
diff changeset
    97
     nil children are not visited"
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    98
22338
ab440df285c4 #DOCUMENTATION by mawalch
mawalch
parents: 21790
diff changeset
    99
    |instVarNames theClass
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   100
     sz "{ Class: SmallInteger }"|
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   101
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   102
    theClass := anObject class.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   103
    sz := theClass instSize.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   104
    sz ~~ 0 ifTrue:[
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   105
        instVarNames := theClass allInstVarNames.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   106
        1 to:sz do:[:i |  |ref|
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   107
            ref := anObject instVarAt:i.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   108
            ref notNil ifTrue:[
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   109
                ref acceptVisitor:self with:(instVarNames at:i).
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   110
                self nextObject.
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
    ].
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   114
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   115
    theClass isVariable ifTrue:[
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   116
        sz := anObject basicSize.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   117
        sz ~~ 0 ifTrue:[
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   118
            1 to:sz do:[:i |
22338
ab440df285c4 #DOCUMENTATION by mawalch
mawalch
parents: 21790
diff changeset
   119
                (anObject basicAt:i) acceptVisitor:self with:i.
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   120
                self nextObject.
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
    ].
22338
ab440df285c4 #DOCUMENTATION by mawalch
mawalch
parents: 21790
diff changeset
   124
ab440df285c4 #DOCUMENTATION by mawalch
mawalch
parents: 21790
diff changeset
   125
    "Modified (comment): / 09-11-2017 / 10:46:55 / mawalch"
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   126
! !
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   127
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   128
!Visitor methodsFor:'subclass responsibility'!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   129
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   130
nextObject
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   131
    "this is sent, when a new Object is going to be visited.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   132
     Subclasses may redefine this to perform specific actions"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   133
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   134
    ^ self 
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   135
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   136
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   137
visitObject:anObject with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   138
    "visit an object. Subclasses must at least implement this method"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   139
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   140
    self subclassResponsibility
23192
caffc3cc76e4 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22808
diff changeset
   141
!
caffc3cc76e4 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22808
diff changeset
   142
caffc3cc76e4 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22808
diff changeset
   143
visitProtoObject:anObject with:aParameter
caffc3cc76e4 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22808
diff changeset
   144
    "visit a proto object."
caffc3cc76e4 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22808
diff changeset
   145
23193
0cd93aab464a #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 23192
diff changeset
   146
    "/ ^ self visitObject:anObject with:aParameter
23192
caffc3cc76e4 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22808
diff changeset
   147
    self subclassResponsibility
caffc3cc76e4 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22808
diff changeset
   148
caffc3cc76e4 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22808
diff changeset
   149
    "Created: / 04-07-2018 / 00:43:49 / Claus Gittinger"
8391
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
!Visitor methodsFor:'visiting smalltalk types'!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   153
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   154
visitBehavior:aSymbol with:aParameter
22808
25bffa650ead #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22338
diff changeset
   155
    "visit a class - fallback here is to call visitObject"
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   156
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   157
    self visitObject:aSymbol with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   158
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   159
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   160
visitBitArray:aByteArray with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   161
    "visit an absolute time value"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   162
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   163
    self visitSequenceableCollection:aByteArray with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   164
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   165
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   166
visitBlock:aBlock with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   167
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   168
    self visitObject:aBlock with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   169
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   170
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   171
visitBoolean:aBoolean with:aParameter
22808
25bffa650ead #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22338
diff changeset
   172
    "visit a Boolean - fallback here is to call visitObject"
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   173
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   174
    self visitObject:aBoolean with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   175
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   176
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   177
visitByteArray:aByteArray with:aParameter
11037
ab98e48e189e changed #visitByteArray:with: - comment
Stefan Vogel <sv@exept.de>
parents: 11036
diff changeset
   178
    "visit a ByteArray value"
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   179
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   180
    self visitSequenceableCollection:aByteArray with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   181
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   182
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   183
visitCharacter:aCharacter with:aParameter
22808
25bffa650ead #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22338
diff changeset
   184
    "visit a Character - fallback here is to call visitObject"
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   185
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   186
    self visitObject:aCharacter with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   187
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   188
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   189
visitCollection:aCollection with:aParameter
22808
25bffa650ead #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22338
diff changeset
   190
    "visit a Collection - fallback here is to call visitObject"
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   191
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   192
    self visitObject:aCollection with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   193
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   194
11175
7272e8604a9a #visitDate:with:
Stefan Vogel <sv@exept.de>
parents: 11037
diff changeset
   195
visitDate:aDate with:aParameter
22808
25bffa650ead #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22338
diff changeset
   196
    "visit a date value - fallback here is to call visitObject"
11175
7272e8604a9a #visitDate:with:
Stefan Vogel <sv@exept.de>
parents: 11037
diff changeset
   197
7272e8604a9a #visitDate:with:
Stefan Vogel <sv@exept.de>
parents: 11037
diff changeset
   198
    self visitObject:aDate with:aParameter
7272e8604a9a #visitDate:with:
Stefan Vogel <sv@exept.de>
parents: 11037
diff changeset
   199
!
7272e8604a9a #visitDate:with:
Stefan Vogel <sv@exept.de>
parents: 11037
diff changeset
   200
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   201
visitDictionary:aDictionary with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   202
    "visit a Dictionary"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   203
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   204
    self visitCollection:aDictionary with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   205
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   206
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   207
visitFloat:aFloat with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   208
    "visit a Float"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   209
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   210
    self visitNumber:aFloat with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   211
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   212
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   213
visitFraction:aFraction with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   214
    "visit a Fraction"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   215
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   216
    self visitNumber:aFraction with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   217
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   218
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   219
visitInteger:anInteger with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   220
    "visit an Integer"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   221
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   222
    self visitNumber:anInteger with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   223
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   224
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   225
visitInterval:anInterval with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   226
    "intervals are a special flavor of sequenceable collection (saving memory)
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   227
     We treat it as SequenceableCollection by default.
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   228
     Encoders that do a dense representation, redefine this to #visitObject"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   229
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   230
    ^ self visitSequenceableCollection:anInterval with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   231
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   232
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   233
visitNilWith:aParameter
22808
25bffa650ead #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22338
diff changeset
   234
    "visit nil - fallback here is to call visitObject"
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   235
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   236
    self visitObject:nil with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   237
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   238
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   239
visitNumber:aNumber with:aParameter
22808
25bffa650ead #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22338
diff changeset
   240
    "visit any number  - fallback here is to call visitObject"
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   241
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   242
    self visitObject:aNumber with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   243
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   244
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   245
visitSequenceableCollection:aCollection with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   246
    "visit a SequenceableCollection"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   247
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   248
    self visitCollection:aCollection with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   249
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   250
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   251
visitSet:aCollection with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   252
    "visit a Set"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   253
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   254
    self visitCollection:aCollection with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   255
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   256
11749
983e95cad15e new: #visitStream:with:
Stefan Vogel <sv@exept.de>
parents: 11175
diff changeset
   257
visitStream:aStream with:aParameter
22808
25bffa650ead #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22338
diff changeset
   258
    "visit a Stream - fallback here is to call visitObject"
11749
983e95cad15e new: #visitStream:with:
Stefan Vogel <sv@exept.de>
parents: 11175
diff changeset
   259
983e95cad15e new: #visitStream:with:
Stefan Vogel <sv@exept.de>
parents: 11175
diff changeset
   260
    self visitObject:aStream with:aParameter
983e95cad15e new: #visitStream:with:
Stefan Vogel <sv@exept.de>
parents: 11175
diff changeset
   261
!
983e95cad15e new: #visitStream:with:
Stefan Vogel <sv@exept.de>
parents: 11175
diff changeset
   262
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   263
visitString:aString with:aParameter
22808
25bffa650ead #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22338
diff changeset
   264
    "visit a String - fallback here is to call visitObject"
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   265
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   266
    self visitObject:aString with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   267
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   268
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   269
visitSymbol:aSymbol with:aParameter
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   270
    "visit a Symbol"
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   271
11036
69e153cab289 changed #visitSymbol:with:
Stefan Vogel <sv@exept.de>
parents: 8392
diff changeset
   272
    ^ self visitString:aSymbol with:aParameter
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   273
!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   274
22808
25bffa650ead #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22338
diff changeset
   275
visitTime:aTime with:aParameter
25bffa650ead #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22338
diff changeset
   276
    "visit a time value - fallback here is to call visitObject"
25bffa650ead #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22338
diff changeset
   277
25bffa650ead #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22338
diff changeset
   278
    self visitObject:aTime with:aParameter
25bffa650ead #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22338
diff changeset
   279
!
25bffa650ead #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22338
diff changeset
   280
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   281
visitTimestamp:aTimestamp with:aParameter
22808
25bffa650ead #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22338
diff changeset
   282
    "visit an timestamp value - fallback here is to call visitObject"
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   283
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   284
    self visitObject:aTimestamp with:aParameter
13230
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   285
!
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   286
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   287
visitUtcTimestamp:aTimestamp with:aParameter
22808
25bffa650ead #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 22338
diff changeset
   288
    "visit an UTC timestamp value - fallback here is to call visitObject"
13230
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   289
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   290
    self visitTimestamp:aTimestamp with:aParameter
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   291
! !
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   292
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   293
!Visitor class methodsFor:'documentation'!
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   294
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   295
version
21397
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
   296
    ^ '$Header$'
13230
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   297
!
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   298
cc6bc2d6c296 added: #visitUtcTimestamp:with:
Stefan Vogel <sv@exept.de>
parents: 11749
diff changeset
   299
version_CVS
21397
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
   300
    ^ '$Header$'
8391
1ed9d94d2ba8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   301
! !
21397
2b6bb4b440bb #OTHER by cg
Claus Gittinger <cg@exept.de>
parents: 13230
diff changeset
   302