StdMap_cp874.txt 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. MODULE EncStdMap_cp874;
  2. (* This file was generated automatically *)
  3. (* Source: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP874.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..7FH: y := x
  16. | 0A0H: y := 0A0H
  17. | 0E01H..0E3AH: y := x - 0D60H
  18. | 0E3FH..0E5BH: y := x - 0D60H
  19. | 2013H..2014H: y := x - 1F7DH
  20. | 2018H..2019H: y := x - 1F87H
  21. | 201CH..201DH: y := x - 1F89H
  22. | 2022H: y := 95H
  23. | 2026H: y := 85H
  24. | 20ACH: y := 80H
  25. ELSE
  26. RETURN
  27. END;
  28. t[tW] := SHORT(CHR(y)); INC(tW);
  29. INC(fR); DEC(fLen)
  30. END
  31. END Encode;
  32. PROCEDURE NewEncoder* (): Codecs.Encoder;
  33. VAR e: Encoder;
  34. BEGIN
  35. NEW(e); RETURN e
  36. END NewEncoder;
  37. (* Decoder *)
  38. PROCEDURE (d: Decoder) Decode (IN f: ARRAY OF SHORTCHAR; VAR fR, fLen: INTEGER; VAR t: ARRAY OF CHAR; VAR tW: INTEGER; OUT state: BOOLEAN);
  39. VAR x, y: INTEGER;
  40. BEGIN
  41. WHILE fLen > 0 DO
  42. x := ORD(f[fR]);
  43. CASE x OF
  44. | 00H..7FH: y := x
  45. | 80H: y := 20ACH
  46. | 85H: y := 2026H
  47. | 91H..92H: y := x + 1F87H
  48. | 93H..94H: y := x + 1F89H
  49. | 95H: y := 2022H
  50. | 96H..97H: y := x + 1F7DH
  51. | 0A0H: y := 0A0H
  52. | 0A1H..0DAH: y := x + 0D60H
  53. | 0DFH..0FBH: y := x + 0D60H
  54. ELSE
  55. RETURN
  56. END;
  57. t[tW] := CHR(y); INC(tW);
  58. INC(fR); DEC(fLen)
  59. END;
  60. state := FALSE
  61. END Decode;
  62. PROCEDURE (d: Decoder) Reset, EMPTY;
  63. PROCEDURE NewDecoder* (): Codecs.Decoder;
  64. VAR d: Decoder;
  65. BEGIN
  66. NEW(d); RETURN d
  67. END NewDecoder;
  68. END EncStdMap_cp874.