home *** CD-ROM | disk | FTP | other *** search
- (*-------------------------------------------------------------------------*)
- (* *)
- (* Amiga Oberon Interface Module: OberonSupport Date: 02-Nov-92 *)
- (* *)
- (* © 1992 by Fridtjof Siebert *)
- (* *)
- (*-------------------------------------------------------------------------*)
-
- MODULE OberonSupport;
-
- IMPORT e * := Exec,
- (* $IF Internal (internal version for compiler authors :-) *)
- ot := OberonTypes,
- (* $END *)
- avl * := UntracedAVL,
- I := Intuition,
- Dos,
- rx * := Rexx,
- s := SYSTEM;
-
- TYPE
- Error* = STRUCT
- num-, line-, column-: INTEGER;
- END;
- ErrorHeaderPtr* = UNTRACED POINTER TO ErrorHeader;
- ErrorHeader* = STRUCT
- numErrors-: INTEGER;
- error-: ARRAY MAX (INTEGER) OF Error;
- (* really: ARRAY numErrors OF Error !! *)
- END;
-
- CONST
-
- (* $IF Internal *)
-
- (* Results of LoadSyms() *)
-
- ok * = 0;
- readerr * = 1;
- notfound * = 2;
- formaterr * = 3;
- namewrong * = 4;
- oom * = 5;
- versconfl * = 6;
-
- (* $END *)
-
- name * = "oberonsupport.library";
- version * = 3;
-
- VAR
- base * : e.LibraryPtr;
-
- PROCEDURE ARexxQuery * {base,- 30} (RxMsg{8} : rx.RexxMsgPtr): LONGINT;
-
- PROCEDURE FreeErrorFile * {base,- 36} (errors{8} : ErrorHeaderPtr);
- PROCEDURE ReadErrorFile * {base,- 42} (name{8} : e.STRPTR): ErrorHeaderPtr;
- PROCEDURE GetErrorText * {base,- 48} (num{0} : INTEGER): e.STRPTR;
-
- (* $IF Internal private routines, do not use! *)
- PROCEDURE GetSymID * {base,- 54} (): INTEGER;
- PROCEDURE FreeSymID * {base,- 60} (id{3} : INTEGER);
- PROCEDURE LoadSyms * {base,- 66} (VAR namePtr: ot.String;
- VAR syms : ot.SymbolFilePtr;
- outH : Dos.FileHandlePtr): INTEGER;
- PROCEDURE FreeSyms * {base,- 72} (syms{8} : ot.SymbolFilePtr);
- (* $END *)
-
-
- PROCEDURE MarkChanged * {base,- 78} (VAR name{8}: avl.String);
- (* mark resident symbol file of module name invalid. It's memory will be freed
- * ASAP (when its usecount reached zero) and it will be reloaded the next time
- * it's used (even if the old version's usecount is > 0)
- *)
-
-
- (* $IF Internal private routines, do not use! *)
- PROCEDURE GetStdTypes * {base,- 84} (): ot.StdTypesPtr;
- (* $END *)
-
-
- PROCEDURE RemoveAllResidents * {base,- 90};
- (* mark all resident symbol files as invalid (see MarkChanged) and clear the
- * list of files to be kept resident.
- *)
-
- PROCEDURE AllResident * {base,- 96};
- (* tells oberonsupport.library to keep all symbol files resident
- *)
-
- PROCEDURE AddResident * {base,-102} (VAR name : avl.String);
- (* tells oberonsupport.library to keep the symbol file of module name resident
- *)
-
-
- BEGIN
-
- base := e.OpenLibrary(name,version);
- IF base=NIL THEN
- s.SETREG(0,I.DisplayAlert(0,"\x00\x64\x14missing oberonsupport.library V3.0\o\o",50));
- HALT(0)
- END;
-
- CLOSE
-
- IF base#NIL THEN e.CloseLibrary(base) END;
-
- END OberonSupport.
-
-
-