StdMap_iso8859_15.txt 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. MODULE EncStdMap_iso8859_15;
  2. (* This file was generated automatically *)
  3. (* Source: http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-15.TXT *)
  4. IMPORT Codecs := EncCodecs;
  5. TYPE
  6. Encoder = POINTER TO RECORD (Codecs.Encoder) END;
  7. Decoder = POINTER TO RECORD (Codecs.Decoder) END;
  8. (* Encoder *)
  9. PROCEDURE (e: Encoder) Encode (IN f: ARRAY OF CHAR; VAR fR, fLen: INTEGER; VAR t: ARRAY OF SHORTCHAR; VAR tW: INTEGER);
  10. VAR x, y: INTEGER;
  11. BEGIN
  12. WHILE fLen > 0 DO
  13. x := ORD(f[fR]);
  14. CASE x OF
  15. | 00H..0A3H: y := x
  16. | 0A5H: y := 0A5H
  17. | 0A7H: y := 0A7H
  18. | 0A9H..0B3H: y := x
  19. | 0B5H..0B7H: y := x
  20. | 0B9H..0BBH: y := x
  21. | 0BFH..0FFH: y := x
  22. | 0152H..0153H: y := x - 96H
  23. | 0160H: y := 0A6H
  24. | 0161H: y := 0A8H
  25. | 0178H: y := 0BEH
  26. | 017DH: y := 0B4H
  27. | 017EH: y := 0B8H
  28. | 20ACH: y := 0A4H
  29. ELSE
  30. RETURN
  31. END;
  32. t[tW] := SHORT(CHR(y)); INC(tW);
  33. INC(fR); DEC(fLen)
  34. END
  35. END Encode;
  36. PROCEDURE NewEncoder* (): Codecs.Encoder;
  37. VAR e: Encoder;
  38. BEGIN
  39. NEW(e); RETURN e
  40. END NewEncoder;
  41. (* Decoder *)
  42. PROCEDURE (d: Decoder) Decode (IN f: ARRAY OF SHORTCHAR; VAR fR, fLen: INTEGER; VAR t: ARRAY OF CHAR; VAR tW: INTEGER; OUT state: BOOLEAN);
  43. VAR x, y: INTEGER;
  44. BEGIN
  45. WHILE fLen > 0 DO
  46. x := ORD(f[fR]);
  47. CASE x OF
  48. | 00H..0A3H: y := x
  49. | 0A4H: y := 20ACH
  50. | 0A5H: y := 0A5H
  51. | 0A6H: y := 0160H
  52. | 0A7H: y := 0A7H
  53. | 0A8H: y := 0161H
  54. | 0A9H..0B3H: y := x
  55. | 0B4H: y := 017DH
  56. | 0B5H..0B7H: y := x
  57. | 0B8H: y := 017EH
  58. | 0B9H..0BBH: y := x
  59. | 0BCH..0BDH: y := x + 96H
  60. | 0BEH: y := 0178H
  61. | 0BFH..0FFH: y := x
  62. ELSE
  63. RETURN
  64. END;
  65. t[tW] := CHR(y); INC(tW);
  66. INC(fR); DEC(fLen)
  67. END;
  68. state := FALSE
  69. END Decode;
  70. PROCEDURE (d: Decoder) Reset, EMPTY;
  71. PROCEDURE NewDecoder* (): Codecs.Decoder;
  72. VAR d: Decoder;
  73. BEGIN
  74. NEW(d); RETURN d
  75. END NewDecoder;
  76. END EncStdMap_iso8859_15.