Codec:YEnc

Import List

    ADT:StringBuffer
    Codec
    Object
    RT0
 
Class List
Decoder
Encoder
YEnc
Class Summary: Decoder [Detail]
  +---Codec.Decoder
       |
       +--Codec:YEnc.Decoder
Method Summary
Decode(ARRAY OF CHAR, LONGINT, LONGINT, StringBuffer)

          Decode the 8-bit character sequence in `data[start, end-1]' starting with the decoder state dec.
INIT()

          
Reset()

          Resets the decoder's state to that created by the initial dec.Start.
Inherited Methods

From Codec.Decoder:

          Decode, End, INIT, Reset, Start

 
Class Summary: Encoder [Detail]
  +---Codec.Encoder
       |
       +--Codec:YEnc.Encoder
Method Summary
Closure(StringBuffer)

          If the encoder still holds any partial data from previous calls to enc.Encode, then flush this data to the buffer b.
EncodeLatin1(ARRAY OF CHAR, LONGINT, LONGINT, StringBuffer)

          Encode the Latin1 character sequence in `s[start, end-1]' starting with the encoder state enc.
EncodeUTF16(ARRAY OF LONGCHAR, LONGINT, LONGINT, StringBuffer)

          Encode the UTF-16 character sequence in `s[start, end-1]' starting with the encoder state enc.
INIT()

          
Reset()

          Resets the encoder's state to that created by the initial enc.Start.
Inherited Methods

From Codec.Encoder:

          Closure, Encode, EncodeLatin1, EncodeUTF16, End, INIT, Reset, SetEscapeEncoder, Start

 
Class Summary: YEnc [Detail]
  +---RT0.Object
       |
       +---Object.Object
            |
            +---Codec.Codec
                 |
                 +--Codec:YEnc.YEnc
Inherited Fields

From Codec.Codec:

          class, preferredName

Method Summary
NewDecoder(): Decoder

          Creates a decoder object for the codec c.
NewEncoder(): Encoder

          Creates an encoder object for the codec c.
Inherited Methods

From RT0.Object:

          Finalize

From Object.Object:

          Equals, HashCode, ToString

From Codec.Codec:

          Decode, DecodeRegion, Encode, EncodeRegion, INIT, NewDecoder, NewEncoder

 
Type Summary
Header = RECORD ... END

          
Procedure Summary
IsEOL(CHAR): BOOLEAN

          
LineBegin(ARRAY OF CHAR, LONGINT, LONGINT, VAR Header): LONGINT

          If the text starting a `data[start]' holds a valid `begin' of a yencoded file, then return the index of the first eol character of the `begin' line.
LineData(ARRAY OF CHAR, LONGINT, LONGINT, VAR Header): LONGINT

          If the text starting a `data[start]' holds a complete text line with yencoded data, then return the index of the first eol character of the line.
LineEnd(ARRAY OF CHAR, LONGINT, LONGINT, VAR Header): LONGINT

          If the text starting a `data[start]' holds a valid `end' of a uuencode file, then return the index of the first eol character of the `begin' line.
LinePart(ARRAY OF CHAR, LONGINT, LONGINT, VAR Header): LONGINT

          
Register()

          
Variable Summary
yenc-: YEnc

          

Class Detail: Decoder
Method Detail

Decode

PROCEDURE (dec: Decoder) Decode(data: ARRAY OF CHAR; 
                 start: LONGINT; 
                 end: LONGINT; 
                 b: StringBuffer)

Decode the 8-bit character sequence in `data[start, end-1]' starting with the decoder state dec. The result is appended to the string buffer b. On completion, dec is updated to reflect the decoder's state after the last byte of the sequence has been processed.

Pre-condition: `0 <= start <= end <= LEN(data)'. dec.Start has been called.

[Description inherited from Decode]

Redefines: Decode


INIT

PROCEDURE (dec: Decoder) INIT()

Redefines: INIT


Reset

PROCEDURE (dec: Decoder) Reset()

Resets the decoder's state to that created by the initial dec.Start. All allocated resources are kept. Using this method, it is possible to use one and the same decoder for several different data streams.

[Description inherited from Reset]

Redefines: Reset

 
Class Detail: Encoder
Method Detail

Closure

PROCEDURE (enc: Encoder) Closure(b: StringBuffer)

If the encoder still holds any partial data from previous calls to enc.Encode, then flush this data to the buffer b. This method must be called at the end of the data stream for codecs that operate on blocks of data, and for which the last and possibly incomplete block must be handled specially.

[Description inherited from Closure]

Redefines: Closure


EncodeLatin1

PROCEDURE (enc: Encoder) EncodeLatin1(s: ARRAY OF CHAR; 
                       start: LONGINT; 
                       end: LONGINT; 
                       b: StringBuffer)

Encode the Latin1 character sequence in `s[start, end-1]' starting with the encoder state enc. The result is a string holding only code points in the range `[U+0000, U+00FF]', which is appended to the string buffer b. On completion, enc is updated to reflect the encoder's state after the last byte of the sequence has been processed.

Pre-condition: `0 <= start <= end <= s.length'. enc.Start has been called. All code points in `data[start, end-1]' are valid. That is, neither is out of range nor from the surrogate areas.

[Description inherited from EncodeLatin1]

Redefines: EncodeLatin1


EncodeUTF16

PROCEDURE (enc: Encoder) EncodeUTF16(s: ARRAY OF LONGCHAR; 
                      start: LONGINT; 
                      end: LONGINT; 
                      b: StringBuffer)

Encode the UTF-16 character sequence in `s[start, end-1]' starting with the encoder state enc. The result is a string holding only code points in the range `[U+0000, U+00FF]', which is appended to the string buffer b. On completion, enc is updated to reflect the encoder's state after the last byte of the sequence has been processed.

Pre-condition: `0 <= start <= end <= s.length'. enc.Start has been called. All code points in `data[start, end-1]' are valid. That is, neither is out of range nor from the surrogate areas.

[Description inherited from EncodeUTF16]

Redefines: EncodeUTF16


INIT

PROCEDURE (enc: Encoder) INIT()

Redefines: INIT


Reset

PROCEDURE (enc: Encoder) Reset()

Resets the encoder's state to that created by the initial enc.Start. All allocated resources are kept. Using this method, it is possible to use one and the same encoder for several different data streams.

[Description inherited from Reset]

Redefines: Reset

 
Class Detail: YEnc
Method Detail

NewDecoder

PROCEDURE (c: YEnc) NewDecoder(): Decoder

Creates a decoder object for the codec c. Note: Some decoders, like those implementing an decryption algorithm, require additional settings before they can be used.

[Description inherited from NewDecoder]

Redefines: NewDecoder


NewEncoder

PROCEDURE (c: YEnc) NewEncoder(): Encoder

Creates an encoder object for the codec c. By default, any character sequences the encoder cannot handle cause it to raise an exception EncodingError.

Note: Some encoders, like those implementing encryption algorithm, require additional settings before they can be used.

[Description inherited from NewEncoder]

Redefines: NewEncoder

 
Type Detail

Header

TYPE Header = RECORD
                  part-: LONGINT;
                  line-: LONGINT;
                  size-: LONGINT;
                  fileName-: ARRAY n OF CHAR;
                  partBegin-: LONGINT;
                  partEnd-: LONGINT;
                  endSize-: LONGINT;
                  endPart-: LONGINT;
                  hasPCrc32-: BOOLEAN;
                  endPCrc32-: LONGINT;
                  hasCrc32-: BOOLEAN;
                  endCrc32-: LONGINT;
                  shortLines-: LONGINT;
              END
Procedure Detail

IsEOL

PROCEDURE IsEOL(ch: CHAR): BOOLEAN

LineBegin

PROCEDURE LineBegin(data: ARRAY OF CHAR; 
                    start: LONGINT; 
                    end: LONGINT; 
                    VAR header: Header): LONGINT

If the text starting a `data[start]' holds a valid `begin' of a yencoded file, then return the index of the first eol character of the `begin' line. In this case, `data[start, result-1]' is the complete line, without the eol character that ends it.

If there is no match, then result `-1'. If the indicated region of data holds no end of line character, then no match is possible.


LineData

PROCEDURE LineData(data: ARRAY OF CHAR; 
                   start: LONGINT; 
                   end: LONGINT; 
                   VAR header: Header): LONGINT

If the text starting a `data[start]' holds a complete text line with yencoded data, then return the index of the first eol character of the line. In this case, `data[start, result-1]' is the complete line, without the eol character that ends it.

If there is no match, then result `-1'. If the indicated region of data holds no end of line character, then no match is possible.

If the data line is shorted than the announced line length in the `=ybegin' header, then header.shortLines is incremented by one.


LineEnd

PROCEDURE LineEnd(data: ARRAY OF CHAR; 
                  start: LONGINT; 
                  end: LONGINT; 
                  VAR header: Header): LONGINT

If the text starting a `data[start]' holds a valid `end' of a uuencode file, then return the index of the first eol character of the `begin' line. In this case, `data[start, result-1]' is the complete line, without the eol character that ends it.

If there is no match, then result `-1'. If the indicated region of data holds no end of line character, then no match is possible.


LinePart

PROCEDURE LinePart(data: ARRAY OF CHAR; 
                   start: LONGINT; 
                   end: LONGINT; 
                   VAR header: Header): LONGINT

Register

PROCEDURE Register()
Variable Detail

yenc

VAR yenc-: YEnc