LupineDeclare.mesa.
Copyright © 1985 by Xerox Corporation. All rights reserved.
Last edited by
BZM on 10-May-82 18:41:34.
Birrell, September 8, 1983 4:35 pm
Swinehart, June 26, 1984 8:55:21 am PDT
Bob Hagmann February 8, 1985 5:00:46 pm PST
LupineDeclare is exported by modules LupineDeclare*Impl.
DIRECTORY
LupineManagerPrivate USING [Language, Nest, Options, String, StringNIL],
LupineMarshal USING [ParamInfoObject, PktSite, TransferDeclaration, TransferSite],
LupineSymbolTable USING [SymbolHandle, TypeHandle, TypeInfo];
LupineDeclare: DEFINITIONS =
BEGIN OPEN LupineManagerPrivate, Marshal: LupineMarshal, ST: LupineSymbolTable;
TransferInfo: TYPE = Transfer ST.TypeInfo;
General symbol and type routines:
TransferName: PROCEDURE [transfer: ST.SymbolHandle]
RETURNS[name: String];
WriteTransferName: PROCEDURE [transfer: ST.SymbolHandle];
ParameterName: PROCEDURE [
parameter: ST.SymbolHandle,
parameterNumber: INTEGER]
RETURNS [name: String];
WriteParameterName: PROCEDURE [
parameter: ST.SymbolHandle,
parameterNumber: INTEGER];
WriteSymbolName: PROCEDURE [symbol: ST.SymbolHandle];
WriteSymbolType: PROCEDURE [symbol: ST.SymbolHandle];
WriteTypeName: PROCEDURE [type: ST.TypeHandle, includeReadonly: BOOLEANTRUE, extraFirstArg: String ← NIL];
GetArgResultInfo: PROCEDURE [
transferInfo: TransferInfo,
transferDeclaration: TransferDeclaration,
transferSite: TransferSite,
pktSite: PktSite,
options: Options ]
RETURNS [argInfo, resultInfo: ParamInfo];
GetTransferInfo: PROCEDURE [typeHandle: ST.TypeHandle]
RETURNS[--transferInfo:-- TransferInfo] ;
Directory and interface manipulation routines:
DirectoryItem: TYPE = RECORD [
module: String,
inhibit: BOOLFALSE, -- if TRUE, inhibit processing of this directory item
usingAll, usingSome: String←StringNIL, -- Use just one, not both.
openName: String←StringNIL,
usedIn: PACKED ARRAY InterfaceUse OF FalseBoolean←ALL[FALSE],
forLanguage: PACKED ARRAY Language OF FalseBoolean←ALL[TRUE],
outOfLineMarshalOnly: BOOLFALSE ];
InterfaceUse: TYPE = {imports, exports, shares, beginOpen};
FalseBoolean: TYPE = BOOLEANFALSE;
DirectoryList: TYPE = LONG DESCRIPTOR FOR READONLY ARRAY OF DirectoryItem;
EmptyDirectoryList: DirectoryList = NIL;
ModuleNameList: TYPE = LONG DESCRIPTOR FOR READONLY ARRAY OF String;
Directory: PROCEDURE [
includeInterfaceDirectory: BOOLEANTRUE,
extraDirectories: DirectoryList𡤎mptyDirectoryList,
options: Options,
nest: Nest𡤀 ];
ModuleHead: PROCEDURE [
moduleNames: ModuleNameList,
moduleType: String,
interfaceList: DirectoryList𡤎mptyDirectoryList,
options: Options,
nest: Nest𡤀,
noOutputFiles: INT ← 1];
InterfaceList: PROCEDURE [
use: InterfaceUse,
targetSystem: Language,
interfaceList: DirectoryList,
beginText, endText: String←StringNIL,
options: Options,
nest: Nest ];
Binding code generation routines:
ImportExport: TYPE = {import, export};
BindingInterface: PROCEDURE [options: Options];
BindingRoutinesStandard: PROCEDURE [kind: ImportExport, options: Options];
BindingRoutinesDynamic: PROCEDURE [kind: ImportExport, options: Options];
BindingRoutinesPrivate: PROCEDURE [kind: ImportExport, options: Options];
Other code generation routines:
ProcedureIndex: PROCEDURE [nest: Nest𡤁];
SignalIndex: PROCEDURE [nest: Nest𡤁];
DispatcherType: TYPE = {client, server, callback, none};
DispatcherHead: PROCEDURE [type: DispatcherType, nest: Nest];
DispatcherSelect: PROCEDURE [type: DispatcherType, nest: Nest];
DispatcherTail: PROCEDURE [type: DispatcherType, nest: Nest];
Stub code generation routines:
ParamInfo: TYPE = REF --READONLY-- Marshal.ParamInfoObject;
TransferDeclaration: TYPE = Marshal.TransferDeclaration;
TransferSite: TYPE = Marshal.TransferSite;
PktSite: TYPE = Marshal.PktSite;
ProcedureStub: PROCEDURE [
transfer: ST.SymbolHandle,
transferType: ST.TypeHandle,
transferDeclaration: TransferDeclaration,
signalDispatcherType: DispatcherType,
options: Options,
nest: Nest ];
DispatcherStubArm: PROCEDURE [
transfer: ST.SymbolHandle,
transferType: ST.TypeHandle,
transferDeclaration: TransferDeclaration,
options: Options,
nest: Nest ];
DispatcherStubBody: PROCEDURE [
transfer: ST.SymbolHandle,
transferType: ST.TypeHandle,
transferDeclaration: TransferDeclaration,
inlineBody: BOOLEAN,
options: Options,
nest: Nest ];
SignalCode: PROCEDURE [
transfer: ST.SymbolHandle,
transferType: ST.TypeHandle,
transferDeclaration: TransferDeclaration,
options: Options,
nest: Nest ];
SignalCatchStub: PROCEDURE [
transfer: ST.SymbolHandle,
transferType: ST.TypeHandle,
transferDeclaration: TransferDeclaration,
signalDispatcherType: DispatcherType ← none,
options: Options,
nest: Nest ];
END. -- LupineDeclare.