SiroccoPrivate.mesa
Copyright © 1986 by Xerox Corporation. All rights reserved.
Bhargava, August 9, 1986 1:52:41 pm PDT
Bill Jackson (bj) September 25, 1986 3:11:30 am PDT
Demers, January 5, 1987 1:23:53 am PST
DIRECTORY
WartDef USING [Generic],
HashTable USING [Table, Value],
IO USING [STREAM],
Rope USING [ROPE];
SiroccoPrivate: CEDAR DEFINITIONS ~ {
Version: READONLY ROPE;
Copied Types
Generic: TYPE ~ WartDef.Generic;
ROPE: TYPE ~ Rope.ROPE;
STREAM: TYPE ~ IO.STREAM;
Table: TYPE ~ HashTable.Table;
Value: TYPE ~ HashTable.Value;
Types
These are really AbstractSyntax2Def.ConstantNode & AbstractSyntax2Def.TypeNode
Constant: TYPE ~ REF;
Type: TYPE ~ REF;
CComponent: TYPE ~ REF CComponentBody;
CComponentBody: TYPE ~ RECORD [
name: ROPE,
sibling: CComponent,
type: ROPE,
val: CARD
];
CType: TYPE ~ REF CTypeBody;
CTypeBody: TYPE ~ RECORD [
bound: CARD,
children: CComponent,
class: Generic
];
DirectoryEntry: TYPE ~ RECORD [
constant: ROPE,
functions: LIST OF ROPE,
type: ROPE,
value: Constant
];
FunctionList: TYPE ~ LIST OF ROPE;
TABLES: TYPE ~ REF TablesBody;
TablesBody: TYPE ~ RECORD [
condensedTypeTable: Table,
directory: Table,
errors: Table,
functionTable: Table,
globalTable: Table,
localTable: Table,
procedures: Table,
typeTable: Table,
unresolvedConstantTable: Table,
unresolvedTypeTable: Table,
workTable: Table
];
UnresolvedConstantTableEntry: TYPE ~ RECORD [
constant: Constant,
type: Type
];
Handle: TYPE ~ REF Object;
Object: TYPE ~ RECORD [
allTheTables: TABLES,
defStream: STREAM,
defRope: ROPE,
initStream: STREAM,
initfile: ROPE,
programName: ROPE,
programNo: NAT,
programKey: ROPE,
programKeyWD: ROPE,
uniqueNo: NAT,
uniqueName: ROPE,
versionNo: NAT
];
Signals
AquireState: SIGNAL RETURNS [Handle];
EndItAll: ERROR;
Procs
SiroccoPrivateImpl
Nest: PROC [in: ROPE, level: NAT] RETURNS [out: ROPE];
Append newline and level tabs to in.
Sort: PROC [list: CComponent] RETURNS [comp: CComponent];
Sort (list of) CComponents by the .val field
MakeUpName: PROC [base: ROPE, suffix: ROPE, tables: TABLES]
RETURNS [madeUpName: ROPE];
MadeUpName: PROC [base: ROPE, suffix: ROPE]
RETURNS [madeUpName: ROPE];
UnDo: PROC [in: ROPE, programKey: ROPE] RETURNS [key: ROPE];
Strip unnecessary qualification (by current program key) from beginning of in — e.g. UnDo["FooP1V2.Bar", "FooP1V2"] = "Bar".
UnDoable: PROC [in: ROPE, programKey: ROPE] RETURNS [out: ROPE, yes: BOOLEAN];
Like UnDo, also returns yes~TRUE iff qualification was deleted.
UMProcNameProc: TYPE ~ PROC [h: Handle, type: CType, typeName: ROPE]
RETURNS [procName: ROPE];
Returns name of special (un)marshalling proc to be used, or NIL if none.
GetUProcName: UMProcNameProc;
GetMProcName: UMProcNameProc;
GenerateUMProcs: PROC [h: Handle, s: STREAM, level: NAT];
Marshal: PROC [h: Handle, s: STREAM, varName: ROPE, type: CType, typeName: ROPE, getProcName: UMProcNameProc, useProc: BOOL, level: NAT];
UnMarshal: PROC [h: Handle, s: STREAM, varName: ROPE, type: CType, typeName: ROPE, getProcName: UMProcNameProc, useProc: BOOL, level: NAT];
ConstExp: PROC [h: Handle, const: ROPE, type: CType, typeName: ROPE, level: NAT]
RETURNS [constExp: ROPE, setup: LIST OF ROPE, runtime: BOOL];
TypeExp: PROC [h: Handle, type: CType, typeName: ROPE, level: NAT]
RETURNS [typeExp: ROPE, objTypeDecls: LIST OF ROPE];
FileHeader: PROC [out: STREAM, filename: ROPE];
ParserPrivate1Impl
Collapse: PROC;
GenerateInterface
GenDefs: PROC;
GenerateAuxInterface
GenAuxDefs: PROC;
GenerateAuxImpl
GenAuxImpl: PROC;
GenerateClient
GenCImpl: PROC;
GenerateServer
GenSImpl: PROC;
}...