Provided by: ivtools-dev_1.2.11a1-2_amd64 bug


       MacroCmd - 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

       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.


       Command(3U), Iterator(3U), UList(3U)