-- File [Ivy]<Nelson>Lupine>LupineManagerPrivate.mesa.
-- Last edited by BZM on March 15, 1982 4:54 PM.
DIRECTORY
CWF USING [WF0],
Inline USING [LowHalf],
LupineManager USING [
ErrorCode, ErrorHandlerProc, ErrorType, Language,
Options, ParamPassingMethod, String, StringNIL ];
LupineManagerPrivate: DEFINITIONS
IMPORTS CWF, Inline
= BEGIN
-- Lupine-wide types and constants.
String: TYPE = LupineManager.String;
StringNIL: String = LupineManager.StringNIL;
AllocString: TYPE = STRING ← NIL; -- Circumvent String = [100] problem.
MaxFilenameLength: INTEGER = 100; -- Including full path (eventually).
MaxIdentifierLength: INTEGER = 120; -- Mesa identifiers.
Options: TYPE = LupineManager.Options;
Language: TYPE = LupineManager.Language;
ParamPassingMethod: TYPE = LupineManager.ParamPassingMethod;
ErrorType: TYPE = LupineManager.ErrorType;
ErrorCode: TYPE = LupineManager.ErrorCode;
ErrorHandlerProc: TYPE = LupineManager.ErrorHandlerProc;
-- Code file output routines.
OpenCodeFile: PROCEDURE [codeModuleName: String];
StampCodeFile: PROCEDURE [codeModuleName: String];
CloseCodeFile: PROCEDURE;
Nest: TYPE = INTEGER[0..LAST[INTEGER]];
Indent: PROCEDURE [nest: Nest] RETURNS [tabsAndSpaces: String];
WFS, WriteFormattedStrings: PUBLIC PROCEDURE [
s01, s02, s03: String←StringNIL ] =
INLINE BEGIN OPEN CWF;
IF s01 # StringNIL THEN WF0[s01]; IF s02 # StringNIL THEN WF0[s02];
IF s03 # StringNIL THEN WF0[s03]; --IF s04 # StringNIL THEN WF0[s04];
END;
WFS1, WriteFormattedString: PUBLIC PROCEDURE [s01: String] =
INLINE BEGIN CWF.WF0[s01]; END;
WFSL, WriteFormattedStringsLong: PUBLIC PROCEDURE [
s01, s02, s03, s04, s05, s06, s07, s08, s09, s10,
s11, s12, s13, s14, s15, s16, s17, s18: String←StringNIL] =
INLINE BEGIN OPEN CWF;
IF s01 # StringNIL THEN WF0[s01]; IF s02 # StringNIL THEN WF0[s02];
IF s03 # StringNIL THEN WF0[s03]; IF s04 # StringNIL THEN WF0[s04];
IF s05 # StringNIL THEN WF0[s05]; IF s06 # StringNIL THEN WF0[s06];
IF s07 # StringNIL THEN WF0[s07]; IF s08 # StringNIL THEN WF0[s08];
IF s09 # StringNIL THEN WF0[s09]; IF s10 # StringNIL THEN WF0[s10];
IF s11 # StringNIL THEN WF0[s11]; IF s12 # StringNIL THEN WF0[s12];
IF s13 # StringNIL THEN WF0[s13]; IF s14 # StringNIL THEN WF0[s14];
IF s15 # StringNIL THEN WF0[s15]; IF s16 # StringNIL THEN WF0[s16];
IF s17 # StringNIL THEN WF0[s17]; IF s18 # StringNIL THEN WF0[s18];
END;
WFL, WriteFormattedLine: PUBLIC PROCEDURE [
nest: Nest, s01, s02, s03: String←StringNIL ];
WFL1, WriteFormattedLine1: PUBLIC PROCEDURE [nest: Nest, s01: String];
WFLL, WriteFormattedLineLong: PUBLIC PROCEDURE [
nest: Nest, s01, s02, s03, s04, s05, s06: String←StringNIL ];
-- Translation-time error handling.
ExplanationProc: TYPE = PROCEDURE [explanation: String];
ReportError: PROCEDURE [type: ErrorType, code: ErrorCode, problemText: String];
GiveExplanation: PROCEDURE [code: ErrorCode, explainer: ExplanationProc];
Abort: PUBLIC PROC [code: ErrorCode, problemText: String←StringNIL] =
INLINE {ReportError[abort, code, problemText]};
Error: PUBLIC PROC [code: ErrorCode, problemText: String←StringNIL] =
INLINE {ReportError[error, code, problemText]};
Warning: PUBLIC PROC [code: ErrorCode, problemText: String←StringNIL] =
INLINE {ReportError[warning, code, problemText]};
-- Random utilities.
ModuleTypes: TYPE = {
interface, openedInterface,
control, client, clientBinder, server,
rpcPublic, rpcPrivate,
lupineRuntime };
ModuleName: PROCEDURE [module: ModuleTypes] RETURNS [name: String];
StampTranslationOptions: PROCEDURE [options: Options];
SHORT: PROCEDURE [long: LONG INTEGER] RETURNS [INTEGER] =
INLINE {RETURN[
IF long IN [FIRST[INTEGER]..LAST[INTEGER]]
THEN Inline.LowHalf[long] ELSE ERROR ]};
IsNull: PROCEDURE [string: String] RETURNS [--yes:-- BOOLEAN] =
INLINE {RETURN[ string=StringNIL OR string.length=0 ]};
END. -- LupineManagerPrivate.