-- File [Ivy]<Nelson>Lupine>LupineManager.mesa.
-- Last edited by BZM on 2-May-82 22:48:33.
DIRECTORY
File USING [Capability, nullCapability];
LupineManager: DEFINITIONS = BEGIN
-- These string definitions are used for easy SDD compatibility.
String: TYPE = LONG STRING ← StringNIL | NULL;
StringNIL: String = NIL; -- Explicit nonNIL constant needed for INLINEs.
-- TranslateRemoteInterface is the procedural access to Lupine.
-- It is not reentrant, and is monitored to enforce serial access.
-- If interfaceBcdCapability is specified, then it is used in
-- preference to interfaceBcdFilename. But interfaceBcdFilename
-- must always be specified for error reporting.
-- All errors are reported through the errorHandler procedure.
TranslateRemoteInterface: PROCEDURE [
interfaceBcdFilename: String,
interfaceBcdCapability: File.Capability ← File.nullCapability,
errorHandler: ErrorHandlerProc,
options: Options←StandardOptions,
desiredLineLength: LONG INTEGER ← 82 ];
Options: TYPE = RECORD [
targetLanguage: Language ← Cedar,
defaultParamPassing: ParamPassingMethod ← Value,
freeServerArguments: BOOLEAN ← TRUE,
inlineServerDispatcherStubs: BOOLEAN ← TRUE,
maxHeapAllocations, maxMdsAllocations: LONG INTEGER ← 50 ];
StandardOptions: Options = [];
Language: TYPE = {Cedar, Mesa};
ParamPassingMethod: TYPE = {Var, Value, Result, Handle, InterMds};
-- ErrorHandlerProc is called so that clients can see and act on each
-- translation error. The problemCausingText argument usually contains the
-- the source text in which the error was located (e.g., bad file name,
-- invalid procedure name, unmarshalable type). Even when problemCausingText
-- is NIL, however, the generated stub files contain full error descriptions
-- as comments. If type=abort, abortTranslation is always forced to be TRUE.
-- The outputFileName and outputFilePosition arguments tell where the error
-- occurred. For errors found before code generation starts, outputFileName=NIL.
-- ErrorHandlerProc must behave since a monitor lock is held during the call.
ErrorHandlerProc: TYPE = --INTERNAL-- PROCEDURE [
type: ErrorType,
code: ErrorCode,
codeExplanation: String,
outputFileName: String←StringNIL,
outputFileCharPosition: LONG INTEGER,
problemCausingText: String←StringNIL ]
RETURNS [abortTranslation: BOOLEAN←FALSE];
ErrorType: TYPE = {abort, error, warning};
ErrorCode: TYPE = {
AnonymousIdentifier,
BadBcdFileFormat, BadBcdFileVersion,
ComputedSequence, ComputedVariant,
EmbeddedRESULT,
EmptyArray,
HandleREF,
ImproperPassingMethod, ImproperReadonlyRESULT, ImproperRESULTResult,
InterfaceVariables,
InvalidHandle,
NoSuchFile,
NotInterfaceModule,
ProbablePointerRecursion,
SequenceInsideVariant,
ShortInterMdsPointers,
TransferParameter,
UnimplementedMarshaling,
Unknown,
UnsupportedTransfers };
END. -- LupineManager.