class Command_Data { public: char* string; bool ordered; Command_Data( char* msg, bool bit ) { string = alloc_string( msg, MEM_PLAYER ); ordered = bit; return; } ~Command_Data( ) { free_string( string, MEM_PLAYER ); return; } }; class Command_Queue { private: int size; command_data** list; public: Command_Queue( ) { size = 0; list = NULL; } friend int entries( command_queue& queue ) { return queue.size; } friend command_data* pop( command_queue& queue ) { if( queue.size == 0 ) return NULL; command_data* cmd = queue.list[0]; remove( queue.list, queue.size, 0 ); return cmd; } friend void push( command_queue& queue, char* string, bool ordered ) { command_data* cmd = new command_data( string, ordered ); insert( queue.list, queue.size, cmd, queue.size ); return; } friend void clear( command_queue& queue ) { int i; for( i = 0; i < queue.size; i++ ) delete queue.list[i]; delete [] queue.list; queue.list = NULL; queue.size = 0; return; } };