AbstractObjectCoder.st
author Claus Gittinger <cg@exept.de>
Tue, 17 Jun 2003 22:13:34 +0200
changeset 7412 daae29634e02
parent 7265 3b007758ff5b
child 7591 19fa013c1c58
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:libbasic' }"
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     2
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     3
Object subclass:#AbstractObjectCoder
6719
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
     4
	instanceVariableNames:'aspect'
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     7
	category:'System-Storage'
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     8
!
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
     9
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    10
!AbstractObjectCoder class methodsFor:'documentation'!
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    11
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    12
documentation
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    13
"
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    14
    This class is defines #encodeXXX:with: messages for various kinds of objects.
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    15
    Any of these messsages is mapped to #encodeObject:with:.
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    16
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    17
    When a class redefines #encodeOn:with:, an method has to be defined here, too.
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    18
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    19
    Subclasses have to define at least #encodeObject:with:
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    20
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    21
    [author:]
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    22
        Stefan Vogel (stefan@zwerg)
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    23
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    24
    [see also:]
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    25
        Object>>encodeOn:with:
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    26
"
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    27
! !
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    28
6719
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
    29
!AbstractObjectCoder methodsFor:'accessing'!
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
    30
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
    31
aspect
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
    32
    "return the value of the instance variable 'aspect' (automatically generated)"
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
    33
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
    34
    ^ aspect
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
    35
!
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
    36
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
    37
aspect:something
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
    38
    "set the value of the instance variable 'aspect' (automatically generated)"
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
    39
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
    40
    aspect := something.
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
    41
! !
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
    42
7265
3b007758ff5b method category rename
Claus Gittinger <cg@exept.de>
parents: 6750
diff changeset
    43
!AbstractObjectCoder methodsFor:'encoding-smalltalk types'!
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    44
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    45
encodeAbsoluteTime:anAbsoluteTime with:aParameter
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    46
    "encode an absolute time value"
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    47
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    48
    self encodeObject:anAbsoluteTime with:aParameter
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    49
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    50
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    51
!
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    52
6597
1e88a153e183 #encodeBehavior
Stefan Vogel <sv@exept.de>
parents: 6594
diff changeset
    53
encodeBehavior:aSymbol with:aParameter
1e88a153e183 #encodeBehavior
Stefan Vogel <sv@exept.de>
parents: 6594
diff changeset
    54
    "encode a class"
1e88a153e183 #encodeBehavior
Stefan Vogel <sv@exept.de>
parents: 6594
diff changeset
    55
1e88a153e183 #encodeBehavior
Stefan Vogel <sv@exept.de>
parents: 6594
diff changeset
    56
    self encodeObject:aSymbol with:aParameter
1e88a153e183 #encodeBehavior
Stefan Vogel <sv@exept.de>
parents: 6594
diff changeset
    57
!
1e88a153e183 #encodeBehavior
Stefan Vogel <sv@exept.de>
parents: 6594
diff changeset
    58
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    59
encodeBitArray:aBitArray with:aParameter
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    60
    "encode a BitArray"
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    61
6594
d354bbc111d0 Encoding
Stefan Vogel <sv@exept.de>
parents: 6485
diff changeset
    62
    self encodeSequenceableCollection:aBitArray with:aParameter
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    63
!
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    64
6750
2f9d8cebba00 Catch encoding of Blocks.
Stefan Vogel <sv@exept.de>
parents: 6747
diff changeset
    65
encodeBlock:aBlock with:aParameter
2f9d8cebba00 Catch encoding of Blocks.
Stefan Vogel <sv@exept.de>
parents: 6747
diff changeset
    66
    "encoding of blocks is rather difficult and an error by default.
2f9d8cebba00 Catch encoding of Blocks.
Stefan Vogel <sv@exept.de>
parents: 6747
diff changeset
    67
     If your encoder supports this, redefine it there"
2f9d8cebba00 Catch encoding of Blocks.
Stefan Vogel <sv@exept.de>
parents: 6747
diff changeset
    68
2f9d8cebba00 Catch encoding of Blocks.
Stefan Vogel <sv@exept.de>
parents: 6747
diff changeset
    69
    self error:'encoding of blocks is not supported'
2f9d8cebba00 Catch encoding of Blocks.
Stefan Vogel <sv@exept.de>
parents: 6747
diff changeset
    70
!
2f9d8cebba00 Catch encoding of Blocks.
Stefan Vogel <sv@exept.de>
parents: 6747
diff changeset
    71
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    72
encodeBoolean:aBoolean with:aParameter
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    73
    "encode a Boolean"
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    74
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    75
    self encodeObject:aBoolean with:aParameter
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    76
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    77
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    78
!
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    79
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    80
encodeByteArray:aByteArray with:aParameter
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    81
    "encode an absolute time value"
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    82
6594
d354bbc111d0 Encoding
Stefan Vogel <sv@exept.de>
parents: 6485
diff changeset
    83
    self encodeSequenceableCollection:aByteArray with:aParameter
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    84
!
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    85
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    86
encodeCharacter:aCharacter with:aParameter
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    87
    "encode a Character"
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    88
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    89
    self encodeObject:aCharacter with:aParameter
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    90
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    91
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    92
!
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
    93
6594
d354bbc111d0 Encoding
Stefan Vogel <sv@exept.de>
parents: 6485
diff changeset
    94
encodeCollection:aCollection with:aParameter
d354bbc111d0 Encoding
Stefan Vogel <sv@exept.de>
parents: 6485
diff changeset
    95
    "encode a Collection"
d354bbc111d0 Encoding
Stefan Vogel <sv@exept.de>
parents: 6485
diff changeset
    96
d354bbc111d0 Encoding
Stefan Vogel <sv@exept.de>
parents: 6485
diff changeset
    97
    self encodeObject:aCollection with:aParameter
d354bbc111d0 Encoding
Stefan Vogel <sv@exept.de>
parents: 6485
diff changeset
    98
!
d354bbc111d0 Encoding
Stefan Vogel <sv@exept.de>
parents: 6485
diff changeset
    99
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   100
encodeDictionary:aDictionary with:aParameter
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   101
    "encode a Dictionary"
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   102
6594
d354bbc111d0 Encoding
Stefan Vogel <sv@exept.de>
parents: 6485
diff changeset
   103
    self encodeCollection:aDictionary with:aParameter
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   104
!
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   105
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   106
encodeFloat:aFloat with:aParameter
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   107
    "encode a Float"
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   108
6485
ca1aa73a3f91 #encodeFraction:
Stefan Vogel <sv@exept.de>
parents: 6379
diff changeset
   109
    self encodeNumber:aFloat with:aParameter
ca1aa73a3f91 #encodeFraction:
Stefan Vogel <sv@exept.de>
parents: 6379
diff changeset
   110
!
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   111
6485
ca1aa73a3f91 #encodeFraction:
Stefan Vogel <sv@exept.de>
parents: 6379
diff changeset
   112
encodeFraction:aFraction with:aParameter
ca1aa73a3f91 #encodeFraction:
Stefan Vogel <sv@exept.de>
parents: 6379
diff changeset
   113
    "encode a Fraction"
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   114
6485
ca1aa73a3f91 #encodeFraction:
Stefan Vogel <sv@exept.de>
parents: 6379
diff changeset
   115
    self encodeNumber:aFraction with:aParameter
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   116
!
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   117
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   118
encodeInteger:anInteger with:aParameter
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   119
    "encode an Integer"
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   120
6485
ca1aa73a3f91 #encodeFraction:
Stefan Vogel <sv@exept.de>
parents: 6379
diff changeset
   121
    self encodeNumber:anInteger with:aParameter
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   122
!
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   123
6747
6f749de322b2 #encodeInterval
Stefan Vogel <sv@exept.de>
parents: 6719
diff changeset
   124
encodeInterval:anInterval with:aParameter
6f749de322b2 #encodeInterval
Stefan Vogel <sv@exept.de>
parents: 6719
diff changeset
   125
    "intervals are a special flavor of sequenceable collection (saving memory)
6f749de322b2 #encodeInterval
Stefan Vogel <sv@exept.de>
parents: 6719
diff changeset
   126
     We treat it as SequenceableCollection by default.
6f749de322b2 #encodeInterval
Stefan Vogel <sv@exept.de>
parents: 6719
diff changeset
   127
     Encoders that do a dense representation, redefine this to #encodeObject"
6f749de322b2 #encodeInterval
Stefan Vogel <sv@exept.de>
parents: 6719
diff changeset
   128
6f749de322b2 #encodeInterval
Stefan Vogel <sv@exept.de>
parents: 6719
diff changeset
   129
    ^ self encodeSequenceableCollection:anInterval with:aParameter
6f749de322b2 #encodeInterval
Stefan Vogel <sv@exept.de>
parents: 6719
diff changeset
   130
!
6f749de322b2 #encodeInterval
Stefan Vogel <sv@exept.de>
parents: 6719
diff changeset
   131
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   132
encodeNilWith:aParameter
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   133
    "encode a nil"
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   134
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   135
    self encodeObject:nil with:aParameter
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   136
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   137
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   138
!
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   139
6485
ca1aa73a3f91 #encodeFraction:
Stefan Vogel <sv@exept.de>
parents: 6379
diff changeset
   140
encodeNumber:aNumber with:aParameter
ca1aa73a3f91 #encodeFraction:
Stefan Vogel <sv@exept.de>
parents: 6379
diff changeset
   141
    "encode an Integer"
ca1aa73a3f91 #encodeFraction:
Stefan Vogel <sv@exept.de>
parents: 6379
diff changeset
   142
ca1aa73a3f91 #encodeFraction:
Stefan Vogel <sv@exept.de>
parents: 6379
diff changeset
   143
    self encodeObject:aNumber with:aParameter
ca1aa73a3f91 #encodeFraction:
Stefan Vogel <sv@exept.de>
parents: 6379
diff changeset
   144
!
ca1aa73a3f91 #encodeFraction:
Stefan Vogel <sv@exept.de>
parents: 6379
diff changeset
   145
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   146
encodeSequencableCollection:aCollection with:aParameter
6594
d354bbc111d0 Encoding
Stefan Vogel <sv@exept.de>
parents: 6485
diff changeset
   147
    "encode a SequenceableCollection.
d354bbc111d0 Encoding
Stefan Vogel <sv@exept.de>
parents: 6485
diff changeset
   148
     This is the wrong spelling but kept foe backward compatibility"
d354bbc111d0 Encoding
Stefan Vogel <sv@exept.de>
parents: 6485
diff changeset
   149
d354bbc111d0 Encoding
Stefan Vogel <sv@exept.de>
parents: 6485
diff changeset
   150
    self encodeCollection:aCollection with:aParameter
d354bbc111d0 Encoding
Stefan Vogel <sv@exept.de>
parents: 6485
diff changeset
   151
!
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   152
6594
d354bbc111d0 Encoding
Stefan Vogel <sv@exept.de>
parents: 6485
diff changeset
   153
encodeSequenceableCollection:aCollection with:aParameter
d354bbc111d0 Encoding
Stefan Vogel <sv@exept.de>
parents: 6485
diff changeset
   154
    "encode a SequenceableCollection"
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   155
6594
d354bbc111d0 Encoding
Stefan Vogel <sv@exept.de>
parents: 6485
diff changeset
   156
    "send the historic (wrong) selector, for backward compatibility with old subclasses"
d354bbc111d0 Encoding
Stefan Vogel <sv@exept.de>
parents: 6485
diff changeset
   157
    self encodeSequencableCollection:aCollection with:aParameter
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   158
!
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   159
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   160
encodeSet:aCollection with:aParameter
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   161
    "encode a Set"
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   162
6594
d354bbc111d0 Encoding
Stefan Vogel <sv@exept.de>
parents: 6485
diff changeset
   163
    self encodeCollection:aCollection with:aParameter
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   164
!
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   165
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   166
encodeString:aString with:aParameter
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   167
    "encode a String"
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   168
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   169
    self encodeObject:aString with:aParameter
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   170
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   171
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   172
!
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   173
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   174
encodeSymbol:aSymbol with:aParameter
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   175
    "encode a Symbol"
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   176
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   177
    self encodeObject:aSymbol with:aParameter
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   178
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   179
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   180
! !
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   181
6719
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   182
!AbstractObjectCoder methodsFor:'helpers'!
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   183
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   184
encodeAllInstanceVariablesOf:anObject
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   185
    "recursively enumerate anObjects refs, encoding each of the child objects.
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   186
     nil childs are not encoded"
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   187
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   188
    |instVarNames theClass 
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   189
     sz "{ Class: SmallInteger }"|
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   190
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   191
    theClass := anObject class.
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   192
    sz := theClass instSize.
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   193
    sz ~~ 0 ifTrue:[
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   194
        instVarNames := theClass allInstVarNames.
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   195
        1 to:sz do:[:i |  |ref|
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   196
            ref := anObject instVarAt:i.
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   197
            ref notNil ifTrue:[
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   198
                ref encodeOn:self with:(instVarNames at:i).
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   199
                self nextObject.
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   200
            ].
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   201
        ].
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   202
    ].
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   203
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   204
    theClass isVariable ifTrue:[
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   205
        sz := anObject basicSize.
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   206
        sz ~~ 0 ifTrue:[
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   207
            1 to:sz do:[:i |
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   208
                (anObject basicAt:i) encodeOn:self with:i.   
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   209
                self nextObject.
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   210
            ]
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   211
        ].
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   212
    ].
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   213
!
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   214
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   215
encodeChildrenOf:anObject
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   216
    "encode all child objects of anObject.
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   217
     If aspect is defined, perform aspect to fetch the child objects.
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   218
     Otherwise encode all the instance variables"
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   219
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   220
    |childObjectDescriptors|
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   221
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   222
    aspect isNil ifTrue:[
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   223
        "shortcut -- basic mechanism: encode instance variables by name"
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   224
        self encodeAllInstanceVariablesOf:anObject.
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   225
        ^ self.
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   226
    ].
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   227
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   228
    childObjectDescriptors := anObject encodingVectorFor:aspect.
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   229
    childObjectDescriptors do:[:association|
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   230
        association notNil ifTrue:[
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   231
            association value encodeOn:self with:association key.
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   232
            self nextObject.
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   233
        ].
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   234
    ].
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   235
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   236
    "
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   237
        XMLStandardCoder new aspect:#encodingVectorForInstanceVariables;
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   238
                 encodingOf:('blaKey' -> 'blaValue')
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   239
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   240
        XMLStandardCoder new aspect:#encodingVectorForInstanceVariables;
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   241
                 encodingOf:('blaKey' -> nil)
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   242
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   243
        XMLStandardCoder new aspect:#encodingVectorForNonNilInstanceVariables;
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   244
                 encodingOf:('blaKey' -> nil)
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   245
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   246
        XMLStandardCoder new aspect:#blaFaselQuall;
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   247
                 encodingOf:('blaKey' -> nil)
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   248
    "
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   249
! !
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   250
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   251
!AbstractObjectCoder methodsFor:'subclass responsibility'!
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   252
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   253
encodeObject:anObject with:aParameter
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   254
    "encode an object. Subclasses must implement this method"
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   255
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   256
    self subclassResponsibility
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   257
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   258
6719
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   259
!
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   260
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   261
nextObject
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   262
    "this is sent, when a new Object is going to be encoded.
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   263
     Subclasses may redefine this e.g.to output a CR"
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   264
45ecc7859152 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 6597
diff changeset
   265
    ^ self 
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   266
! !
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   267
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   268
!AbstractObjectCoder class methodsFor:'documentation'!
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   269
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   270
version
7265
3b007758ff5b method category rename
Claus Gittinger <cg@exept.de>
parents: 6750
diff changeset
   271
    ^ '$Header: /cvs/stx/stx/libbasic/Attic/AbstractObjectCoder.st,v 1.8 2003-05-07 15:14:30 cg Exp $'
6379
ecdfef1013c8 initial checkin
Stefan Vogel <sv@exept.de>
parents:
diff changeset
   272
! !