---
name: "MacroCmd"
section: "3"
platform: "linux"
package: "ivtools-dev"
version: "1.1.3-4"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/MacroCmd"
---

# MacroCmd(3)

a command that composes other commands

## NAME

MacroCmd - a command that composes other commands

## SYNOPSIS

**#include \<Unidraw/Commands/macro.h\>**

## DESCRIPTION

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

## PUBLIC OPERATIONS

- **MacroCmd(ControlInfo\*)**

  - **MacroCmd(**

  - **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.

## PROTECTED OPERATIONS

- **Command\* Cmd(UList\*)**

  - **UList\* Elem(Iterator)**

  Convenience functions for extracting a Command from a UList element a UList from an iterator, respectively.

## SEE ALSO

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