<> <> <> <> <> DIRECTORY Pipal, PipalOps, RefTab; PipalMutate: CEDAR DEFINITIONS = BEGIN <> <> <> <> <<>> mutationMethod: Pipal.Method; MutationProc: TYPE = PROC [object: Pipal.Object] RETURNS [mutant: Pipal.Object _ NIL]; HasMutationProc: PROC [object: Pipal.Object] RETURNS [BOOL]; Mutation: MutationProc; < crash and burn.>> <<>> EachChildProc: TYPE = PROC [path: PipalOps.Path, child: Pipal.Object] RETURNS [quit: BOOL _ FALSE]; EnumerateMutantChildren: PROC [root: Pipal.Object, each: EachChildProc] RETURNS [quit: BOOL _ FALSE]; <> <> <> <> <> <> <> <> <<>> popEvent: READONLY ATOM; <> <<>> BroadcastPop: PROC [mutant: Pipal.Object]; <> <> NotifyReplace: PROC [mutant: Pipal.Object]; <<-- BS ???? -->> <> <> <<>> <> <> <> <<>> CommandProc: TYPE = PROC [mutant: Pipal.Object, name: ATOM, arguments: LIST OF REF _ NIL, issuer: REF _ NIL, registrationData: REF _ NIL] RETURNS [resultType: ResultType _ none, result: Pipal.Object _ NIL, new: Pipal.Object]; <> <> <> <> <> <<>> ResultType: TYPE = {none, object, selectionArea, changedArea}; < result is NIL; display should display all >> < result is a Pipal.Object; e.g. the selection for copy between different editors>> < result is a PipalObject with an area message outlining the current selection>> < result is a PipalObject with an area message; display should display these areas>> <> RegisterCommand: PROC [class: Pipal.Class, name: ATOM, command: CommandProc, registrationData: REF _ NIL]; <> <<>> FetchCommand: PROC [mutant: Pipal.Object, name: ATOM] RETURNS [command: CommandProc _ NIL, registrationData: REF _ NIL]; <, that command is returned.>> <, that command is returned.>> <> <<>> ApplyCommand: PROC [mutant: Pipal.Object, name: ATOM, arguments: LIST OF REF _ NIL, issuer: REF _ NIL] RETURNS [resultType: ResultType _ none, result: Pipal.Object _ NIL, new: Pipal.Object]; <, that command is applied.>> <<>> END.