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