DIRECTORY
BasicTime USING [GMT],
DFPorter USING [DFContents],
MobConnection USING [ModuleID],
Rope USING [ROPE];
~
BEGIN
OPEN Rope;
ExportItems:
TYPE =
RECORD [
id: MobConnection.ModuleID,
items: BitVector
];
BitVector: TYPE = RECORD [w0: PACKED ARRAY [0..BITS[WORD]) OF BOOL, rest: REF BitVector];
emptyBitVector: BitVector = [ALL[FALSE], NIL];
MobConnections: TYPE = REF MobConnectionsRep;
MobConnectionsRep:
TYPE =
RECORD [
kind: ATOM, -- $definitions, $program, $configuration
id: MobConnection.ModuleID,
directory: LIST OF MobConnection.ModuleID,
imports: LIST OF MobConnection.ModuleID,
exports: LIST OF ExportItems,
modules: LIST OF MobConnection.ModuleID,
goal: BOOL ¬ FALSE,
fileName: ROPE,
dfName: ROPE
];
LORA:
TYPE =
LIST
OF
REF;
MakeLoadList:
PROC [dfNames:
LIST
OF
ROPE, goals:
LIST
OF
ROPE]
RETURNS [
LIST
OF
LIST
OF
ATOM];
MakeDependentsList: PROC [dfNames: LIST OF ROPE, roots: LIST OF ROPE] RETURNS [modules: LIST OF ATOM, dependentDFNames: LIST OF ROPE];
EnumerateFiles:
PROC [action:
PROC [dfName:
ROPE, name:
ROPE, fullFName:
ROPE, created: BasicTime.
GMT, goal:
BOOL], dfs:
LIST
OF DFPorter.DFContents];
BitVectorRest:
PROC [bitVector: BitVector]
RETURNS [BitVector];
BitVectorRef:
PROC [bitVector: BitVector, i:
NAT]
RETURNS [
BOOL];
BitVectorSet:
PROC [bitVector: BitVector, i:
NAT]
RETURNS [BitVector];
BitVectorOr:
PROC [a, b: BitVector]
RETURNS [BitVector];
BitVectorImplies:
PROC [a, b: BitVector]
RETURNS [
BOOL];
BitVectorEmptyIntersection:
PROC [a, b: BitVector]
RETURNS [
BOOL];
CachedLORAFromMob:
PROC [fileName:
ROPE]
RETURNS [mob:
LORA];
DecodeMob:
PROC [fileName:
ROPE]
RETURNS [MobConnections];
GetMobsViaDFs:
PROC [dfNames:
LIST
OF
ROPE]
RETURNS [
LIST
OF MobConnections];
BogusMob: SIGNAL [msg: ROPE];
ExtractNames:
PROC [in:
LIST
OF
LIST
OF MobConnections]
RETURNS [
LIST
OF
LIST
OF
ATOM];
FindImportGoals:
PROC [connections:
LIST
OF MobConnections, importGoals:
LIST
OF
ATOM]
RETURNS [ans:
LIST
OF
ROPE ¬
NIL];
MarkGoals:
PROC [connections:
LIST
OF MobConnections, goals:
LIST
OF
ROPE]
RETURNS [
LIST
OF MobConnections];
Moves the goals to the front, in the order specified in the goals list.
GoalNotFound: SIGNAL [rope: ROPE];
MobConnectionsListLength:
PROC [connections:
LIST
OF MobConnections]
RETURNS [n:
INT ¬ 0];
IncorrectVersionNumberInDF:
SIGNAL [fullFName, realName:
ROPE];
BoundProgramNotKnown:
SIGNAL [configuration, program: MobConnection.ModuleID];
DuplicateExports:
SIGNAL [moduleID, interfaceID: MobConnection.ModuleID];
TopoSortConnections:
PROC [connections:
LIST
OF MobConnections, topDown:
BOOL ¬
TRUE]
RETURNS [
LIST
OF
LIST
OF MobConnections];