INTERFACE---------------------------------------------------------------------------PkgKindData ; IMPORT PkgError, FileInfo, MsgIF;
CONST Brand = "PkgKindData interface 0.0";---------------------------------------------------------------------------
TYPE T <: Public; (* PkgKindData consists of a table that maps symbolic names of actions to names, a name of this kind of package, and of a simple kind of predicate that can be evaluated to ascertain that at a given root exists this kind of package structure. The predicate consists of a series of conditions that must all be true. Only possible conditions are the existence or non-existence of a file of a directory. *) PredKind = {Dir, File, Match, NoDir, NoFile, NoMatch, Platform, HostType, OSType}; Public = OBJECT METHODS init(fc : FileInfo.T := NIL; msgif : MsgIF.T := NIL) : T; init2(n : TEXT; fc : FileInfo.T := NIL; msgif : MsgIF.T := NIL) : T; setCache(fc : FileInfo.T); setName(n : TEXT); name() : TEXT; putAction(name, cmds : TEXT) : BOOLEAN; getAction(name : TEXT; VAR cmds : TEXT) : BOOLEAN; addCondition(p : PredKind; arg : TEXT); evalCondition(path : TEXT; hosttype := "unknown"; ostype := "unknown") : BOOLEAN; createStructure(path : TEXT) RAISES {PkgError.E}; ensureStructureExists(path : TEXT) RAISES {PkgError.E}; END; END PkgKindData.