support/Xtreams__Encoder.st
author mkobetic
Sun, 15 Jan 2012 22:51:20 +0000
changeset 53 3a3d798e73b5
parent 47 b92b6ee7b460
child 57 83d1a5856145
permissions -rw-r--r--
packaging
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
53
3a3d798e73b5 packaging
mkobetic
parents: 47
diff changeset
     1
'From Smalltalk/X, Version:6.2.1 on 15-01-2012 at 05:49:26 PM'                  !
38
2f05f2f63e04 sockets and files
mkobetic
parents: 24
diff changeset
     2
6
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     3
"{ Package: 'stx:goodies/xtreams/support' }"
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     4
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     5
"{ NameSpace: Xtreams }"
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     6
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     7
Object subclass:#Encoder
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     8
	instanceVariableNames:''
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     9
	classVariableNames:'DialectEncoder Encoders'
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    10
	poolDictionaries:''
24
f906c95ca2ed added XtreamsPool to fix DefaultBufferSize; set proper category names
mkobetic
parents: 6
diff changeset
    11
	category:'Xtreams-Support'
6
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    12
!
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    13
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    14
Encoder comment:'Abstract character encoder class defines the API and maintains a registry of known encoders (Encoders). Also provides a hook to allow plugging in dialect specific encoders (DialectEncoder) as a secondary encoder resource.
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    15
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    16
Shared Variables
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    17
	DialectEncoder	<Class> optional dialect specific encoder class providing support for additional encodings
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    18
	Encoders	<Dictionary key: Symbol value: Class> maps encoding names to encoders
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    19
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    20
'
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    21
!
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    22
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    23
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    24
!Encoder class methodsFor:'instance creation'!
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    25
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    26
for: anEncoding
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    27
41
af7ad50a8f62 fix Encoder build failure
mkobetic
parents: 38
diff changeset
    28
        anEncoding isSymbol ifFalse: [ ^anEncoding streamingAsEncoder ].
af7ad50a8f62 fix Encoder build failure
mkobetic
parents: 38
diff changeset
    29
        ^Encoders at: anEncoding ifAbsent: [
af7ad50a8f62 fix Encoder build failure
mkobetic
parents: 38
diff changeset
    30
                DialectEncoder
af7ad50a8f62 fix Encoder build failure
mkobetic
parents: 38
diff changeset
    31
                        ifNil: [ self error: 'Unknown encoding!!' ]
af7ad50a8f62 fix Encoder build failure
mkobetic
parents: 38
diff changeset
    32
                        ifNotNil: [ DialectEncoder for: anEncoding ] ]
6
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    33
!
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    34
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    35
streamingAsEncoder
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    36
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    37
	^self new
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    38
! !
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    39
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    40
!Encoder class methodsFor:'accessing'!
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    41
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    42
encoders
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    43
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    44
	^Encoders ifNil: [ Encoders := IdentityDictionary new ]
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    45
! !
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    46
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    47
!Encoder methodsFor:'accessing'!
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    48
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    49
backupState
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    50
!
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    51
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    52
decodeFrom: aReadStream
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    53
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    54
	^self subclassResponsibility
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    55
!
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    56
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    57
encode: aCharacter on: aWriteStream
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    58
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    59
	^self subclassResponsibility
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    60
!
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    61
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    62
restoreState
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    63
!
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    64
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    65
streamingAsEncoder
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    66
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    67
	^self
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    68
! !
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    69
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    70
!Encoder class methodsFor:'documentation'!
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    71
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    72
version_SVN
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    73
    ^ '$Id$'
5fcffc3d40d2 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    74
! !