Encapsulates the user defined interface to command history. 
         
            
            Synopsis 
            
            
            
#include <AlCommand.h>
class AlCommand : public AlObject
AlCommand();
virtual	~AlCommand();
virtual statusCode	deleteObject();
virtual AlObjectType	type() const;
statusCode	create( const char *name );
statusCode	install();
statusCode	uninstall();
statusCode	modified();
int	execute( boolean freeIfInvalid = TRUE );
int	undo( boolean freeIfInvalid = TRUE );
AlSurfaceType	surfaceType() const;
statusCode	setSurfaceType( AlSurfaceType );
AlUserCommand*	userCommand();
int	status() const;
static statusCode	setDebug( boolean on );
static statusCode	add( AlUserCommandAlloc *, const char *name );
static statusCode	remove( const char *name );
 
         
            
            Description 
            
            
            This file contains the definitions required to define an user command history command. 
            
            The command layer in Alias is a software layer that is between the user interface and the main application. A command is an object that represents actions
               such as: fillet, square, or patch. 
            
            
            The user interface code builds commands that are sent through the layer to be executed. The user interface does not create
               geometry itself, it creates commands that do it. 
            
            
            Commands can be saved somewhere and re-executed whenever the system feels it is necessary. As long as the data the command
               depends upon is valid, the command remains valid. 
            
            
            The most practical application of re-executing a command is the generation of data from a piece of source geometry. When the
               original geometry changes, the new model can be ’automatically’ created by re-executing the command history on the new data.
               
            
            
            Command functions: These are outlined in the AlUserCommand class. 
            
            A ‘constructor’ DAG node is considered to be a DAG node which creates the result. An example of a constructor is one of the
               original curves in a fillet operation. 
            
            
            A ‘target’ DAG node is considered to be the result of a command operation. An example is the fillet created by the fillet
               command. 
            
            
            The ’AlCommand’ class is used to maintain a list of the current plug-in defined command history commands. New commands are
               installed using the ’AlCommand::add’ method. This associates a string with a function that allocates a new copy of a command.
               The first parameter of the add command is a AlUserCommandAlloc. An AlUserCommandAlloc is a pointer to a function returning
               an AlUserCommand class as defined below. 
            
            
            
typedef AlUserCommand *AlUserCommandAlloc(); 
AlCommand::remove is used to remove a command type from the database. 
            
            AlCommand::create is used to create an new copy of the command. After a command has been created, its data fields can be accessed
               using the ’AlCommand->userCommand’ method. 
            
            
            A command has two components, the UI driver and the underlying geometry manipulation code. The UI creates a new command using
               AlCommand::create. The private data is accessed using the AlCommand -> userCommand method (which is typecast to the plug-in’s
               derived command). From this, the command data structure’s fields can be filled in. The UI uses the execute method to call
               the userCommand’s execute command. This does the actual command. Finally the result is added to the Alias system using the ’install’ method. 
            
            
            The Alias messaging system will call the various functions in the command to maintain the dependencies and re-execute the command if
               necessary.
            
            
          
         
            
            statusCode AlCommand::setDebug( boolean on )
            
            
            
               
               Description
               
               
                Turns command history debugging on (TRUE) or off (FALSE). Alias will write information into the errlog as the construction history plug-in runs if this boolean is set.
               
               
             
            
            
               
               Arguments
               
               
               < on - the new value of command history debugging
               
             
            
            
               
               Return Codes
               
               
               sSuccess - setting worked
               
             
            
          
         
            
            AlCommand::AlCommand()
            
            
            
               
               Description
               
               
                Constructor for a command wrapper. 
               
             
            
          
         
            
            AlCommand::~AlCommand()
            
            
            
               
               Description
               
               
                Destructor for a command wrapper. 
               
             
            
          
         
            
            AlObjectType AlCommand::type() const
            
            
            
               
               Description
               
               
                Returns kCommandType. 
               
             
            
          
         
            
            AlCommand *AlCommand::asCommandPtr()
            
            
            
               
               Description
               
               
                Safe downcast to AlCommand. 
               
             
            
          
         
            
            AlUserCommand *AlCommand::userCommand()
            
            
            
               
               Description
               
               
                Returns a pointer to the user command. 
               
             
            
          
         
            
            int AlCommand::status() const
            
            
            
               
               Description
               
               
                Returns the value of the result from the last execution of the command. Returns -1 if this command is invalid. 
               
             
            
          
         
            
            statusCode AlCommand::create( const char *name )
            
            
            
               
               Description
               
               
                Allocates a new user defined command history command. 
               
             
            
            
               
               Arguments
               
               
               < name - the name of the command to create 
               
             
            
            
               
               Return Codes
               
               
               sSuccess - method was successful
               
               sInvalidArgument - name was NULL
               
               sObjectNotFound - the command name was not found (undefined)
               
               sFailure - not enough memory or user constructor failure
               
             
            
          
         
            
            statusCode AlCommand::deleteObject()
            
            
            
               
               Description
               
               
                Deletes the command (also calls the user command destructor) 
               
             
            
            
               
               Return Codes
               
               
               sSuccess - the command was deleted
               
               sInvalidObject - the command was invalid
               
             
            
          
         
            
            AlSurfaceType AlCommand::surfaceType() const
            
            
            
               
               Description
               
               
                Gets the type of surface produced by the given command. 
               
             
            
          
         
            
            statusCode AlCommand::modified()
            
            
            
               
               Description
               
               
                Marks this command as being modified. 
               
             
            
            
               
               Return Codes
               
               
               sInvalidObject - the command was invalid
               
               sSuccess - the command was marked as being modified
               
             
            
          
         
            
            statusCode AlCommand::setSurfaceType( AlSurfaceType type )
            
            
            
               
               Description
               
               
                Sets the type of surface produced by the given command. 
               
             
            
            
               
               Arguments
               
               
               < type - type of surface to be produced by the given command
               
             
            
            
               
               Return Codes
               
               
               sSuccess - setting was successful
               
               sInvalidArgument - type was neither kSurfaceSpline nor kSurfacePolyset
               
               sInvalidObject - the command was invalid
               
             
            
          
         
            
            statusCode AlCommand::install()
            
            
            
               
               Description
               
               
                Installs a command in the construction history list. 
               
             
            
            
               
               Return Codes
               
               
               sInvalidObject - the command was invalid
               
               sSuccess - the command was installed
               
               sFailure - the command was already installed
               
             
            
          
         
            
            statusCode AlCommand::uninstall()
            
            
            
               
               Description
               
               
                Remove a command from the construction history list. 
               
             
            
            
               
               Return Codes
               
               
               sInvalidObject - the command was invalid
               
               sSuccess - the command was uninstalled
               
               sFailure - the command was not installed
               
             
            
          
         
            
            int AlCommand::execute( boolean freeIfInvalid )
            
            
            
               
               Description
               
               
                Executes the command after it has been created. Do not directly call the execute command in the user command, but use this
                  function instead. 
               
               
             
            
            
               
               Arguments
               
               
               < freeIfInvalid - the command is freed if it is found to be invalid 
               
             
            
            
               
               Return Values
               
               
               zero - command was successful
               
               negative number - the command is no longer valid
               
               positive number - the command did not succeed (the number returned is the error return value)
               
             
            
          
         
            
            int AlCommand::undo( boolean freeIfInvalid )
            
            
            
               
               Description
               
               
                Undoes the command after it has been created. Do not directly call the undo command in the user command, but use this function
                  instead. 
               
               
             
            
            
               
               Arguments
               
               
               < freeIfInvalid - the command is freed if it is found to be invalid 
               
             
            
            
               
               Return Values
               
               
               zero - command was successful
               
               negative number - the command is no longer valid
               
               positive number - the command did not succeed (the number returned is the error return value)
               
             
            
          
         
            
            statusCode AlCommand::add( AlUserCommandAlloc *func, const char *name )
            
            
            
               
               Description
               
               
                Adds the construction history command to the list of available commands. 
               
             
            
            
               
               Arguments
               
               
               func - name of the function that will allocate the new AlUserCommand 
               
               name - string name of the function 
               
             
            
            
               
               Return Codes
               
               
               sFailure - another command with the same name already exists 
               
               sInvalidArgument - func is NULL or name is NULL
               
               sInsufficientMemory - could not allocate memory for new function 
               
               sSuccess - the add was successful 
               
             
            
          
         
            
            statusCode AlCommand::remove( const char *name )
            
            
            
               
               Description
               
               
                Deletes the construction history command.
               
             
            
            
               
               Arguments
               
               
               name - string name of the function 
               
             
            
            
               
               Return Codes
               
               
               sFailure - command not found 
               
               sInvalidArgument - name is NULL
               
               sSuccess - command was removed