VariableString.st
author Claus Gittinger <cg@exept.de>
Sat, 02 May 2020 21:40:13 +0200
changeset 5476 7355a4b11cb6
parent 807 7610484aaf50
permissions -rw-r--r--
#FEATURE by cg class: Socket class added: #newTCPclientToHost:port:domain:domainOrder:withTimeout: changed: #newTCPclientToHost:port:domain:withTimeout:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
1cf8d1747859 Initial revision
claus
parents:
diff changeset
     1
"
4
1f66800df351 *** empty log message ***
claus
parents: 3
diff changeset
     2
 COPYRIGHT (c) 1993 by Claus Gittinger
42
506596f9a1a8 *** empty log message ***
claus
parents: 36
diff changeset
     3
	      All Rights Reserved
0
1cf8d1747859 Initial revision
claus
parents:
diff changeset
     4
1cf8d1747859 Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
1cf8d1747859 Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
1cf8d1747859 Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
1cf8d1747859 Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
1cf8d1747859 Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    11
"
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    12
130
c6b0235349fe removed VariableString - it was obsolete anyway
Claus Gittinger <cg@exept.de>
parents: 124
diff changeset
    13
ArrayedCollection subclass:#VariableString
807
7610484aaf50 classCategory
Claus Gittinger <cg@exept.de>
parents: 178
diff changeset
    14
	instanceVariableNames:'contents'
7610484aaf50 classCategory
Claus Gittinger <cg@exept.de>
parents: 178
diff changeset
    15
	classVariableNames:''
7610484aaf50 classCategory
Claus Gittinger <cg@exept.de>
parents: 178
diff changeset
    16
	poolDictionaries:''
7610484aaf50 classCategory
Claus Gittinger <cg@exept.de>
parents: 178
diff changeset
    17
	category:'Obsolete'
0
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    18
!
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    19
31
e223f3cf2995 *** empty log message ***
claus
parents: 28
diff changeset
    20
!VariableString class methodsFor:'documentation'!
e223f3cf2995 *** empty log message ***
claus
parents: 28
diff changeset
    21
e223f3cf2995 *** empty log message ***
claus
parents: 28
diff changeset
    22
copyright
e223f3cf2995 *** empty log message ***
claus
parents: 28
diff changeset
    23
"
e223f3cf2995 *** empty log message ***
claus
parents: 28
diff changeset
    24
 COPYRIGHT (c) 1993 by Claus Gittinger
42
506596f9a1a8 *** empty log message ***
claus
parents: 36
diff changeset
    25
	      All Rights Reserved
0
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    26
31
e223f3cf2995 *** empty log message ***
claus
parents: 28
diff changeset
    27
 This software is furnished under a license and may be used
e223f3cf2995 *** empty log message ***
claus
parents: 28
diff changeset
    28
 only in accordance with the terms of that license and with the
e223f3cf2995 *** empty log message ***
claus
parents: 28
diff changeset
    29
 inclusion of the above copyright notice.   This software may not
e223f3cf2995 *** empty log message ***
claus
parents: 28
diff changeset
    30
 be provided or otherwise made available to, or used by, any
e223f3cf2995 *** empty log message ***
claus
parents: 28
diff changeset
    31
 other person.  No title to or ownership of the software is
e223f3cf2995 *** empty log message ***
claus
parents: 28
diff changeset
    32
 hereby transferred.
e223f3cf2995 *** empty log message ***
claus
parents: 28
diff changeset
    33
"
e223f3cf2995 *** empty log message ***
claus
parents: 28
diff changeset
    34
!
0
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    35
31
e223f3cf2995 *** empty log message ***
claus
parents: 28
diff changeset
    36
documentation
e223f3cf2995 *** empty log message ***
claus
parents: 28
diff changeset
    37
"
e223f3cf2995 *** empty log message ***
claus
parents: 28
diff changeset
    38
    VariableStrings can grow and shrink - in contrast to Strings which are
e223f3cf2995 *** empty log message ***
claus
parents: 28
diff changeset
    39
    fixed in size - this may change in the future.
e223f3cf2995 *** empty log message ***
claus
parents: 28
diff changeset
    40
e223f3cf2995 *** empty log message ***
claus
parents: 28
diff changeset
    41
    WARNING: This class is a historic leftover and will vanish soon.
42
506596f9a1a8 *** empty log message ***
claus
parents: 36
diff changeset
    42
	     Dont use it.
31
e223f3cf2995 *** empty log message ***
claus
parents: 28
diff changeset
    43
"
e223f3cf2995 *** empty log message ***
claus
parents: 28
diff changeset
    44
! !
0
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    45
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    46
!VariableString class methodsFor:'instance creation'!
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    47
124
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    48
copyFrom:aString
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    49
    "return a new VariableString with contents copied from the argument"
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    50
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    51
    ^ self basicNew setContents:(String copyFrom:aString)
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    52
!
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    53
0
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    54
new
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    55
    "return a new VariableString - with size 0"
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    56
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    57
    ^ self new:0
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    58
!
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    59
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    60
new:size
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    61
    "return a new VariableString"
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    62
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    63
    ^ (self basicNew) setContents:(String new:size)
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    64
! !
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    65
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    66
!VariableString methodsFor:'accessing'!
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    67
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    68
at:index
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    69
    "return the element at index"
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    70
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    71
    ^ contents at:index
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    72
!
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    73
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    74
at:index put:anObject
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    75
    "set the element at index"
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    76
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    77
    ^ contents at:index put:anObject
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    78
! !
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    79
124
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    80
!VariableString methodsFor:'converting'!
0
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    81
124
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    82
asStringCollection
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    83
    ^ contents asStringCollection
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    84
! !
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    85
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    86
!VariableString methodsFor:'copying'!
0
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    87
124
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    88
postCopy
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    89
    contents := contents copy
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    90
! !
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    91
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    92
!VariableString methodsFor:'error handling'!
0
1cf8d1747859 Initial revision
claus
parents:
diff changeset
    93
124
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    94
doesNotUnderstand:aMessage
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    95
    "this is funny: all message we do not understand, are passed
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    96
     on to the string - so we do not have to care for all
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    97
     possible messages ...(thanks to the Message class)"
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    98
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
    99
     ^ contents perform:(aMessage selector)
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   100
	  withArguments:(aMessage arguments)
0
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   101
! !
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   102
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   103
!VariableString methodsFor:'filling & replacing'!
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   104
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   105
replaceFrom:start to:stop with:aCollection startingAt:repStart
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   106
    "reimplemented for speed
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   107
     - can use Strings fast replace if aCollection
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   108
       is String or VariableString"
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   109
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   110
    |col|
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   111
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   112
    col := aCollection.
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   113
    (aCollection isKindOf:VariableString) ifTrue:[
42
506596f9a1a8 *** empty log message ***
claus
parents: 36
diff changeset
   114
	((stop - start + repStart) <= aCollection size) ifTrue:[
506596f9a1a8 *** empty log message ***
claus
parents: 36
diff changeset
   115
	    col := aCollection getContents
506596f9a1a8 *** empty log message ***
claus
parents: 36
diff changeset
   116
	]
0
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   117
    ].
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   118
    (col isMemberOf:String) ifTrue:[
42
506596f9a1a8 *** empty log message ***
claus
parents: 36
diff changeset
   119
	(stop <= (contents size)) ifTrue:[
506596f9a1a8 *** empty log message ***
claus
parents: 36
diff changeset
   120
	    contents replaceFrom:start to:stop with:col startingAt:repStart.
28
350f8e9493a4 *** empty log message ***
claus
parents: 22
diff changeset
   121
	    ^ self
42
506596f9a1a8 *** empty log message ***
claus
parents: 36
diff changeset
   122
	]
0
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   123
    ].
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   124
    ^ super replaceFrom:start to:stop with:aCollection startingAt:repStart
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   125
! !
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   126
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   127
!VariableString methodsFor:'grow & shrink'!
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   128
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   129
grow:newSize
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   130
    |old oldSize|
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   131
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   132
    oldSize := contents size.
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   133
    (newSize < oldSize) ifTrue:[
42
506596f9a1a8 *** empty log message ***
claus
parents: 36
diff changeset
   134
	contents := contents copyTo:newSize
0
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   135
    ] ifFalse:[
42
506596f9a1a8 *** empty log message ***
claus
parents: 36
diff changeset
   136
	(newSize > oldSize) ifTrue:[
506596f9a1a8 *** empty log message ***
claus
parents: 36
diff changeset
   137
	    old := contents.
506596f9a1a8 *** empty log message ***
claus
parents: 36
diff changeset
   138
	    (newSize > (oldSize * 2)) ifTrue:[
506596f9a1a8 *** empty log message ***
claus
parents: 36
diff changeset
   139
		contents := String new:newSize
506596f9a1a8 *** empty log message ***
claus
parents: 36
diff changeset
   140
	    ] ifFalse:[
506596f9a1a8 *** empty log message ***
claus
parents: 36
diff changeset
   141
		contents := String new:(oldSize * 2)
506596f9a1a8 *** empty log message ***
claus
parents: 36
diff changeset
   142
	    ].
506596f9a1a8 *** empty log message ***
claus
parents: 36
diff changeset
   143
	    contents replaceFrom:1 to:oldSize
506596f9a1a8 *** empty log message ***
claus
parents: 36
diff changeset
   144
			    with:old startingAt:1
506596f9a1a8 *** empty log message ***
claus
parents: 36
diff changeset
   145
	]
0
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   146
    ]
1cf8d1747859 Initial revision
claus
parents:
diff changeset
   147
! !
124
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   148
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   149
!VariableString methodsFor:'private'!
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   150
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   151
getContents
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   152
    "return the contents array"
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   153
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   154
    ^ contents
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   155
!
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   156
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   157
setContents:aString
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   158
    "set the contents"
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   159
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   160
    contents := aString
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   161
! !
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   162
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   163
!VariableString methodsFor:'queries'!
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   164
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   165
isFixedSize
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   166
    "return true if the receiver cannot grow - this will vanish once
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   167
     Arrays and Strings learn how to grow ..."
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   168
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   169
    ^ false
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   170
!
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   171
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   172
size
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   173
    ^ contents size
d919bc2f0078 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 112
diff changeset
   174
! !
807
7610484aaf50 classCategory
Claus Gittinger <cg@exept.de>
parents: 178
diff changeset
   175
7610484aaf50 classCategory
Claus Gittinger <cg@exept.de>
parents: 178
diff changeset
   176
!VariableString class methodsFor:'documentation'!
7610484aaf50 classCategory
Claus Gittinger <cg@exept.de>
parents: 178
diff changeset
   177
7610484aaf50 classCategory
Claus Gittinger <cg@exept.de>
parents: 178
diff changeset
   178
version
7610484aaf50 classCategory
Claus Gittinger <cg@exept.de>
parents: 178
diff changeset
   179
    ^ '$Header: /cvs/stx/stx/libbasic2/VariableString.st,v 1.17 1999-09-08 21:28:21 cg Exp $'
7610484aaf50 classCategory
Claus Gittinger <cg@exept.de>
parents: 178
diff changeset
   180
! !