home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / xc212os2.zip / DEF / oberonrt.def < prev    next >
Text File  |  1995-03-17  |  2KB  |  80 lines

  1. (* Copyright (c) xTech 1992,94. All Rights Reserved *)
  2. (* XDS (ANSI C) v2.0 *)
  3. DEFINITION MODULE oberonRTS;
  4.  
  5. IMPORT  SYSTEM;
  6.  
  7. TYPE
  8.   Module;
  9.   Type;
  10.   Command = PROC;
  11.   CARDINAL = SYSTEM.CARD32;
  12.   Finalizer = PROCEDURE (SYSTEM.ADDRESS);
  13.  
  14. VAR
  15.   nullModule: Module;
  16.   nullType: Type;
  17.  
  18. (* ------------------ Garbage Collector ------------------ *)
  19.  
  20. PROCEDURE Collect;
  21. (* Garbage Collector *)
  22.  
  23. PROCEDURE GetInfo(VAR objects, busymem: CARDINAL);
  24. (* Returns number of allocated objects and total size
  25.    of allocated memory.
  26. *)
  27.  
  28. (* ----------------- Object finalization ----------------- *)
  29.  
  30. PROCEDURE InstallFinalizer(f: Finalizer; obj: SYSTEM.ADDRESS);
  31. (* Sets finalizer "f" for object "obj". The finalizer will be
  32.    called when the object will become unreachable.
  33.    Notes:
  34.         - finalizer is called on GC stack (stack size is limited);
  35.         - finalized object may be became reachable, in this case
  36.           it will not be deleted;
  37. *)
  38.  
  39. (*--------------- Meta-language facilities --------------- *)
  40.  
  41. PROCEDURE Search(name: ARRAY OF CHAR): Module;
  42. (* Returns module or "nullModule" *)
  43.  
  44. PROCEDURE NameOfModule(m: Module; VAR name: ARRAY OF CHAR);
  45. (* Returns the name of module *)
  46.  
  47. PROCEDURE ThisCommand(m: Module; name: ARRAY OF CHAR): Command;
  48. (* Returns the command or NIL *)
  49.  
  50. PROCEDURE ThisType(m: Module; name: ARRAY OF CHAR): Type;
  51. (* Returns the type or "nullType" *)
  52.  
  53. PROCEDURE SizeOf(t: Type): INTEGER;
  54. PROCEDURE BaseOf(t: Type; level: INTEGER): Type;
  55. PROCEDURE LevelOf(t: Type): INTEGER;
  56. PROCEDURE ModuleOf(t: Type): Module;
  57. PROCEDURE NameOfType(t: Type; VAR name: ARRAY OF CHAR);
  58.  
  59. PROCEDURE TypeOf(obj: SYSTEM.ADDRESS): Type;
  60.  
  61. PROCEDURE NewObj(type: Type): SYSTEM.ADDRESS;
  62. (* Create a new object of the type. *)
  63.  
  64. (* -------------- Iterators ------------------- *)
  65.  
  66. TYPE
  67.   NameIterator = PROCEDURE (SYSTEM.ADDRESS, ARRAY OF CHAR): BOOLEAN;
  68.   (* Return FALSE to stop iteration *)
  69.  
  70. PROCEDURE IterModules(session: SYSTEM.ADDRESS; iter: NameIterator);
  71. (* Iterates all Oberon-2 modules. *)
  72.  
  73. PROCEDURE IterCommands(mod: Module; session: SYSTEM.ADDRESS; iter: NameIterator);
  74. (* Iterates all commands in the module *)
  75.  
  76. PROCEDURE IterTypes(mod: Module; session: SYSTEM.ADDRESS; iter: NameIterator);
  77. (* Iterates all types in the module *)
  78.  
  79. END oberonRTS.
  80.