Commands.SymU 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. MODULE Commands;
  2. IMPORT Objects, Modules, Streams, KernelLog, Trace, Machine;
  3. CONST
  4. Wait* = 0;
  5. InheritContext* = 1;
  6. Silent* = 2;
  7. Ok* = 0;
  8. CommandNotFound* = 3901;
  9. CommandError* = 3902;
  10. CommandParseError* = 3903;
  11. CommandTrapped* = 3904;
  12. Delimiter* = \"."\;
  13. Started = 0;
  14. Loaded = 1;
  15. Finished = 2;
  16. TYPE
  17. Context* = OBJECT
  18. VAR
  19. in-, arg-: Streams.Reader;
  20. out-, error-: Streams.Writer;
  21. caller-: OBJECT;
  22. result*: WORD;
  23. PROCEDURE ^ & Init*(in, arg: Streams.Reader; out, error: Streams.Writer; caller: OBJECT);
  24. END Context;
  25. ReaderMonitor* = OBJECT (Streams.Reader)
  26. VAR
  27. in: Streams.Reader;
  28. tracer: Streams.Writer;
  29. pos0: Streams.Position;
  30. tracedPos: LONGINT;
  31. PROCEDURE ^ & Init(in: Streams.Reader; tracer: Streams.Writer);
  32. PROCEDURE ^ Receiver(VAR buf: ARRAY OF CHAR; ofs, size, min: LONGINT; VAR len, res: LONGINT);
  33. PROCEDURE ^ CanSetPos*(): BOOLEAN;
  34. PROCEDURE ^ SetPos*(pos: Streams.Position);
  35. PROCEDURE ^ Pos*(): Streams.Position;
  36. END ReaderMonitor;
  37. CommandProc = PROCEDURE ;
  38. CommandContextProc = PROCEDURE (context: Context);
  39. Runner = OBJECT {EXCLUSIVE}
  40. VAR
  41. moduleName, commandName: Modules.Name;
  42. context: Context;
  43. tracer: Streams.Writer;
  44. r: ReaderMonitor;
  45. proc: CommandProc;
  46. commandProc: CommandContextProc;
  47. msg: ARRAY 128 OF CHAR;
  48. res: WORD;
  49. module: Modules.Module;
  50. state: WORD;
  51. exception: BOOLEAN;
  52. PROCEDURE ^ & Init*(CONST moduleName, commandName: Modules.Name; context: Context);
  53. PROCEDURE ^ Join(this: WORD; VAR res: WORD; VAR msg: ARRAY OF CHAR);
  54. BEGIN{ACTIVE, SAFE}
  55. END Runner;
  56. VAR
  57. emptyString: ARRAY 1 OF CHAR;
  58. silentWriter: Streams.Writer;
  59. trace: BOOLEAN;
  60. defaultContext: Context;
  61. PROCEDURE ^ GetEmptyReader(): Streams.Reader;
  62. PROCEDURE ^ SendNothing(CONST buf: ARRAY OF CHAR; ofs, len: LONGINT; propagate: BOOLEAN; VAR res: WORD);
  63. PROCEDURE ^ Split*(CONST cmdstr: ARRAY OF CHAR; VAR moduleName, procedureName: Modules.Name; VAR res: WORD; VAR msg: ARRAY OF CHAR);
  64. PROCEDURE ^ GetContext*(): Context;
  65. PROCEDURE ^ Activate*(CONST cmd: ARRAY OF CHAR; context: Context; flags: SET; VAR res: WORD; VAR msg: ARRAY OF CHAR);
  66. PROCEDURE ^ Call*(cmds: ARRAY OF CHAR; flags: SET; VAR res: WORD; VAR msg: ARRAY OF CHAR);
  67. PROCEDURE ^ Init;
  68. BEGIN
  69. END Commands.