IncrementalLoadImpl.mesa
Copyright Ó 1989, 1991, 1992 by Xerox Corporation. All rights reserved.
This is an interface to the implementation of IncrementalLoad.h
Peter B. Kessler, April 18, 1990 3:28 pm PDT
Michael Plass, November 26, 1991 5:08 pm PST
Willie-s, March 3, 1992 5:38 pm PST
DIRECTORY
IncrementalLoad;
IncrementalLoadImpl: CEDAR PROGRAM
EXPORTS IncrementalLoad ~ BEGIN OPEN IncrementalLoad;
IncrementalLoadFile: PUBLIC PROC [
fName: CString,
fOffset: Long ¬ 0,
fMagic: CARD32 ¬ 0,
refProc: CProc ¬ NilCProc,
refClientData: POINTER ¬ NIL,
defProc: CProc ¬ NilCProc,
defClientData: POINTER ¬ NIL,
commonProc: CProc ¬ NilCProc,
commonClientData: POINTER ¬ NIL,
patchSizeProc: CProc ¬ NilCProc,
patchSizeClientData: POINTER ¬ NIL
]
RETURNS [Error] ~ {
XRIncrementalLoadFileMachineCode: PROC [
fName: CString,
fOffset: Long ¬ 0,
fMagic: CARD32 ¬ 0,
refProc: CProc ¬ NilCProc,
refClientData: POINTER ¬ NIL,
defProc: CProc ¬ NilCProc,
defClientData: POINTER ¬ NIL,
commonProc: CProc ¬ NilCProc,
commonClientData: POINTER ¬ NIL,
patchSizeProc: CProc ¬ NilCProc,
patchSizeClientData: POINTER ¬ NIL]
RETURNS [Error] ~ TRUSTED MACHINE CODE {
"XR←ILLoadFile"
};
RETURN [XRIncrementalLoadFileMachineCode[fName, fOffset, fMagic, refProc, refClientData, defProc, defClientData, commonProc, commonClientData, patchSizeProc, patchSizeClientData]];
};
LockIncrementalLoadState: PUBLIC PROC [wait: BOOL]
RETURNS [Error] ~ {
XRLockIncrementalLoadStateMachineCode: PROC [wait: BOOL]
RETURNS [Error] ~ TRUSTED MACHINE CODE {
"XR←LockIncrementalLoadState"
};
RETURN [XRLockIncrementalLoadStateMachineCode[wait: wait]];
};
UnlockIncrementalLoadState: PUBLIC PROC [] RETURNS [Error] ~ {
XRUnlockIncrementalLoadStateMachineCode: PROC
RETURNS [Error] ~ TRUSTED MACHINE CODE {
"XR←UnlockIncrementalLoadState"
};
RETURN [XRUnlockIncrementalLoadStateMachineCode[]];
};
GetPrevFileEntry: PUBLIC PROC [ilfe: FileEntry] RETURNS [FileEntry] ~ {
XRILGetPrevFileEntryMachineCode: PROC [ilfe: FileEntry]
RETURNS [FileEntry] ~ TRUSTED MACHINE CODE {
"XR←ILGetPrevFileEntry"
};
RETURN [XRILGetPrevFileEntryMachineCode[ilfe: ilfe]];
};
IgnoredClasses: TYPE ~ MACHINE DEPENDENT {ignoreNone (0), ignoreInternal(1), ignoreExternal(2), last(LAST[CARDINAL])};
WantedTypes: TYPE ~ MACHINE DEPENDENT {first(0), wantAllTypes(LAST[CARDINAL])};
LookupSymEntry: PUBLIC PROC [sym: CString, externOnly: BOOL]
RETURNS [SymEntry] ~ {
XRILGetMatchingSymEntryByName: PROC [ilse: SymEntry ← NIL, pattern: CString ← sym, caseSensitive: BOOLTRUE, wantedTypes: WantedTypes← wantAllTypes, ignoredClasses: IgnoredClasses ← IF externOnly THEN ignoreInternal ELSE ignoreNone, numToSkip: INT ← 1]
RETURNS [SymEntry] ~ TRUSTED MACHINE CODE {
"XR←ILGetMatchingSymEntryByName"
};
RETURN [XRILGetMatchingSymEntryByName[]];
};
LookupSymEntryByValue: PUBLIC PROC [val: CARD32]
RETURNS [SymEntry] ~ {
XRILGetMatchingSymEntryByValue: PROCEDURE [ilse: SymEntry ← NIL, symVal: CARD32 ← val, wantedTypes: WantedTypes← wantAllTypes, ignoredClasses: IgnoredClasses ← ignoreNone, numToSkip: INT ← 0]
RETURNS [SymEntry] ~ TRUSTED MACHINE CODE {
"XR←ILGetMatchingSymEntryByValue"
};
RETURN [XRILGetMatchingSymEntryByValue[]];
};
GetPrevSymEntry: PUBLIC PROC [se: SymEntry, externOnly: BOOL]
RETURNS [SymEntry] ~ {
XRILGetMatchingSymEntryByName: PROC [ilse: SymEntry ← se, pattern: CString ← NIL, caseSensitive: BOOLTRUE, wantedTypes: WantedTypes← wantAllTypes, ignoredClasses: IgnoredClasses ← IF externOnly THEN ignoreInternal ELSE ignoreNone, numToSkip: INT ← 1]
RETURNS [SymEntry] ~ TRUSTED MACHINE CODE {
"XR←ILGetMatchingSymEntryByName"
};
RETURN [XRILGetMatchingSymEntryByName[]];
};
GetPrevSymEntryByValue: PUBLIC PROC [ilse: SymEntry] RETURNS [SymEntry] ~ {
XRILGetMatchingSymEntryByValue: PROCEDURE [se: SymEntry ← ilse, val: CARD32 ← 0, wantedTypes: WantedTypes← wantAllTypes, ignoredClasses: IgnoredClasses ← ignoreNone, numToSkip: INT ← -1]
RETURNS [SymEntry] ~ TRUSTED MACHINE CODE {
"XR←ILGetMatchingSymEntryByValue"
};
RETURN [XRILGetMatchingSymEntryByValue[]];
};
GetNextSymEntryByValue: PUBLIC PROC [ilse: SymEntry] RETURNS [SymEntry] ~ {
XRILGetMatchingSymEntryByValue: PROCEDURE [se: SymEntry ← ilse, val: CARD32 ← 0, wantedTypes: WantedTypes← wantAllTypes, ignoredClasses: IgnoredClasses ← ignoreNone, numToSkip: INT ← 1]
RETURNS [SymEntry] ~ TRUSTED MACHINE CODE {
"XR←ILGetMatchingSymEntryByValue"
};
RETURN [XRILGetMatchingSymEntryByValue[]];
};
AddVersionStamp: PUBLIC PROC [fe: FileEntry, vMagic, vLen: CARD32, vStamp: CString] ~ {
XRAddVersionStampMachineCode: PROC [fe: FileEntry, vMagic, vLen: CARD32, vStamp: CString] ~ TRUSTED MACHINE CODE {
"XR←ILAddVersionStamp"
};
XRAddVersionStampMachineCode[fe, vMagic, vLen, vStamp];
};
AddVersionStampUsingPC: PUBLIC PROC [pc: POINTER, vMagic, vLen: CARD32, vStamp: CString] RETURNS [FileEntry] ~ {
XRILAddVersionStampUsingPCMachineCode: PROC [pc: POINTER, vMagic, vLen: CARD32, vStamp: CString]
RETURNS [FileEntry] ~ TRUSTED MACHINE CODE {
"XR←ILAddVersionStampUsingPC"
};
RETURN [XRILAddVersionStampUsingPCMachineCode[pc, vMagic, vLen, vStamp]];
};
SymIsInRecentLoad: PUBLIC PROC [se: SymEntry] RETURNS [Bool] ~ {
XRSymIsInRecentLoadMachineCode: PROC [se: SymEntry]
RETURNS [Bool] ~ TRUSTED MACHINE CODE {
"XR←ILSymIsInRecentLoad"
};
RETURN [XRSymIsInRecentLoadMachineCode[se: se]];
};
EnumerateUndefinedSymbols: PUBLIC PROC [func: CProc, clientData: POINTER]~ {
XRILEnumerateUndefinedSymbolsMachineCode: PROC [func: CProc, clientData: POINTER] ~ TRUSTED MACHINE CODE {
"XR←ILEnumerateUndefinedSyms"
};
XRILEnumerateUndefinedSymbolsMachineCode[func, clientData];
};
CommitIncrementalLoad: PUBLIC PROC RETURNS [Error] ~ {
XRCommitIncrementalLoadMachineCode: PROC
RETURNS [Error] ~ TRUSTED MACHINE CODE {
"XR𡤌ommitIncrementalLoad"
};
RETURN [XRCommitIncrementalLoadMachineCode[]];
};
AbortIncrementalLoad: PUBLIC PROC [se: SymEntry] RETURNS [Error] ~ {
XRAbortIncrementalLoadMachineCode: PROC [se: SymEntry]
RETURNS [Error] ~ TRUSTED MACHINE CODE {
"XR�ortIncrementalLoad"
};
RETURN [XRAbortIncrementalLoadMachineCode[se: se]];
};
InitializeIncrementalLoader: PUBLIC PROC [fName: CString] RETURNS [Error] ~ {
XRInitializeIncrementalLoaderMachineCode: PROC [fName: CString]
RETURNS [Error] ~ TRUSTED MACHINE CODE {
"XR←InitializeIncrementalLoader"
};
RETURN [XRInitializeIncrementalLoaderMachineCode[fName: fName]];
};
END.