StdMap_iso8859_5.txt 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. MODULE EncStdMap_iso8859_5;
  2. (* This file was generated automatically *)
  3. (* Source: http://www.unicode.org/Public/MAPPINGS/ISO8859/8859-5.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..0A0H,0ADH: y := 00H + x
  16. | 0401H..040CH,040EH..044FH,0451H..045CH,045EH,045FH: y := -0360H + x
  17. | 2116H: y := 0F0H
  18. | 0A7H: y := 0FDH
  19. ELSE
  20. RETURN
  21. END;
  22. t[tW] := SHORT(CHR(y)); INC(tW);
  23. INC(fR); DEC(fLen)
  24. END
  25. END Encode;
  26. PROCEDURE NewEncoder* (): Codecs.Encoder;
  27. VAR e: Encoder;
  28. BEGIN
  29. NEW(e); RETURN e
  30. END NewEncoder;
  31. (* Decoder *)
  32. PROCEDURE (d: Decoder) Decode (IN f: ARRAY OF SHORTCHAR; VAR fR, fLen: INTEGER; VAR t: ARRAY OF CHAR; VAR tW: INTEGER; OUT state: BOOLEAN);
  33. VAR x, y: INTEGER;
  34. BEGIN
  35. WHILE fLen > 0 DO
  36. x := ORD(f[fR]);
  37. CASE x OF
  38. | 00H..0A0H,0ADH: y := 00H + x
  39. | 0A1H..0ACH,0AEH..0EFH,0F1H..0FCH,0FEH,0FFH: y := 0360H + x
  40. | 0FDH: y := 0A7H
  41. | 0F0H: y := 2116H
  42. ELSE
  43. RETURN
  44. END;
  45. t[tW] := CHR(y); INC(tW);
  46. INC(fR); DEC(fLen)
  47. END;
  48. state := FALSE
  49. END Decode;
  50. PROCEDURE (d: Decoder) Reset, EMPTY;
  51. PROCEDURE NewDecoder* (): Codecs.Decoder;
  52. VAR d: Decoder;
  53. BEGIN
  54. NEW(d); RETURN d
  55. END NewDecoder;
  56. END EncStdMap_iso8859_5.