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;
}
};