00001 #ifndef __COMPOSED_COMMAND__ 00002 #define __COMPOSED_COMMAND__ 00003 00004 00005 //------------------------------------------------------------------------------------------------------------ 00006 // Includes 00007 //------------------------------------------------------------------------------------------------------------ 00008 #include <iostream> 00009 #include <deque> 00010 #include "CommandObject.h" 00011 00012 /* 00013 class CommandObject; 00014 class ExecutableCommand;*/ 00015 00016 class ComposedCommand : public CommandObject{ 00017 00018 //------------------------------------------------------------------------------------------------------------ 00019 // Constructors & Destructors 00020 //------------------------------------------------------------------------------------------------------------ 00021 public: 00022 00023 ComposedCommand( ); 00024 00025 virtual ~ComposedCommand( ); 00026 //------------------------------------------------------------------------------------------------------------ 00027 // Methods 00028 //------------------------------------------------------------------------------------------------------------ 00029 00030 /* 00031 * Adds a command to the list of command 00032 * @param nwCommand Is the new command to include 00033 */ 00034 void addCommand(CommandObject * nwCommand); 00035 00036 /* 00037 * Includes the command into the given queue for execution 00038 * @param executionQueue Is the queue in which is included the command 00039 */ 00040 virtual void includeToExecute(std::deque<CommandObject *> &executionQueue); 00041 00042 /* 00043 * Counts the command(s) 00044 * @return The value of commands that represents this 00045 */ 00046 virtual int count(); 00047 00048 /* 00049 * Method that clears the command 00050 */ 00051 virtual void clear(); 00052 00053 //------------------------------------------------------------------------------------------------------------ 00054 // Constants 00055 //------------------------------------------------------------------------------------------------------------ 00056 00057 private: 00058 //------------------------------------------------------------------------------------------------------------ 00059 // Attributes 00060 //------------------------------------------------------------------------------------------------------------ 00061 00062 /* 00063 * Represents the internal commands 00064 */ 00065 std::deque< CommandObject *> internalCommands; 00066 00067 }; 00068 #endif