StdCodecs.txt 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. MODULE EncStdCodecs;
  2. (* THIS IS TEXT COPY OF StdCodecs.odc *)
  3. (* DO NOT EDIT *)
  4. (*
  5. A. V. Shiryaev, 2012.10
  6. *)
  7. IMPORT Meta, Codecs := EncCodecs, Aliases := EncStdAliases;
  8. TYPE
  9. Directory* = POINTER TO RECORD (Codecs.Directory) END;
  10. (* Directory *)
  11. PROCEDURE (dir: Directory) NewEncoder* (enc: Codecs.Encoding): Codecs.Encoder;
  12. VAR modName: ARRAY LEN(Codecs.Encoding) + 16 OF CHAR;
  13. item: Meta.Item; ok: BOOLEAN;
  14. item0: RECORD (Meta.Value)
  15. fun: PROCEDURE (): Codecs.Encoder
  16. END;
  17. e: Codecs.Encoder;
  18. BEGIN
  19. e := NIL;
  20. Aliases.GetModName(enc, modName, ok);
  21. IF ok THEN
  22. Meta.Lookup(modName, item);
  23. IF item.obj = Meta.modObj THEN
  24. item.Lookup("NewEncoder", item);
  25. IF item.obj = Meta.procObj THEN
  26. item.GetVal(item0, ok);
  27. IF ok THEN
  28. e := item0.fun()
  29. END
  30. END
  31. END
  32. END;
  33. RETURN e
  34. END NewEncoder;
  35. PROCEDURE (dir: Directory) NewDecoder* (enc: Codecs.Encoding): Codecs.Decoder;
  36. VAR modName: ARRAY LEN(Codecs.Encoding) + 16 OF CHAR;
  37. item: Meta.Item; ok: BOOLEAN;
  38. item0: RECORD (Meta.Value)
  39. fun: PROCEDURE (): Codecs.Decoder
  40. END;
  41. d: Codecs.Decoder;
  42. BEGIN
  43. d := NIL;
  44. Aliases.GetModName(enc, modName, ok);
  45. IF ok THEN
  46. Meta.Lookup(modName, item);
  47. IF item.obj = Meta.modObj THEN
  48. item.Lookup("NewDecoder", item);
  49. IF item.obj = Meta.procObj THEN
  50. item.GetVal(item0, ok);
  51. IF ok THEN
  52. d := item0.fun()
  53. END
  54. END
  55. END
  56. END;
  57. RETURN d
  58. END NewDecoder;
  59. PROCEDURE Init;
  60. VAR dir: Directory;
  61. BEGIN
  62. NEW(dir); Codecs.SetDir(dir)
  63. END Init;
  64. BEGIN
  65. Init
  66. END EncStdCodecs.