MacroCmd(3) a command that composes other commands


#include <Unidraw/Commands/macro.h>


MacroCmd composes other commands in a linear fashion. Executing a MacroCmd is equivalent to executing its children in preorder.


Editor* = nil,
Command* first = nil, Command* second = nil,
Command* third = nil, Command* fourth = nil

Construct a MacroCmd instance, optionally supplying up to four of its child commands.
virtual void Execute()
virtual void Unexecute()
virtual boolean Reversible()
Execute simply executes each child, from first to last. Unexecute calls Unexecute on each child, from last to first. The MacroCmd is reversible if any of its children are.
virtual void SetEditor(Editor*)
SetEditor calls SetEditor on each child with the given argument.
Command* GetCommand(Iterator)
void SetCommand(Command*, Iterator&)
GetCommand returns the child Command to which an iterator points. SetCommand initializes the iterator to point to a particular child Command; it initializes the iterator to point to a nil instance if the given Command is not a child.
void Append(
Command*, Command* = nil, Command* = nil, Command* = nil
void Prepend(
Command*, Command* = nil, Command* = nil, Command* = nil
void InsertAfter(Iterator, Command*)
void InsertBefore(Iterator, Command*)
void Remove(Command*)
void Remove(Iterator&)
Operations that modify the MacroCmd's list of children. Append and Prepend add up to four Commands to the end and the beginning of the list, respectively. InsertAfter and InsertBefore insert a Command after and before the Command pointed to by the iterator, respectively. The Remove operations remove a child from the list without deleting it. You can remove a child by referring to it explicitly or by specifying an iterator. If an iterator is supplied, the Remove operation should advance it to point to the following child as a side effect.


Command* Cmd(UList*)
UList* Elem(Iterator)
Convenience functions for extracting a Command from a UList element a UList from an iterator, respectively.