Initial commit.
This commit is contained in:
98
codemp/icarus/sequence.h
Normal file
98
codemp/icarus/sequence.h
Normal file
@@ -0,0 +1,98 @@
|
||||
// Sequence Header File
|
||||
|
||||
#ifndef __SEQUENCE__
|
||||
#define __SEQUENCE__
|
||||
|
||||
#include "blockstream.h"
|
||||
#include "interface.h"
|
||||
#include "taskmanager.h"
|
||||
|
||||
class ICARUS_Instance;
|
||||
|
||||
class CSequence
|
||||
{
|
||||
|
||||
typedef list < CSequence * > sequence_l;
|
||||
typedef map < int, CSequence *> sequenceID_m;
|
||||
typedef list < CBlock * > block_l;
|
||||
|
||||
public:
|
||||
|
||||
//Constructors / Destructors
|
||||
CSequence( void );
|
||||
~CSequence( void );
|
||||
|
||||
//Creation and deletion
|
||||
static CSequence *Create( void );
|
||||
void Delete( void );
|
||||
|
||||
//Organization functions
|
||||
void AddChild( CSequence * );
|
||||
void RemoveChild( CSequence * );
|
||||
|
||||
void SetParent( CSequence * );
|
||||
CSequence *GetParent( void ) const { return m_parent; }
|
||||
|
||||
//Block manipulation
|
||||
CBlock *PopCommand( int );
|
||||
int PushCommand( CBlock *, int );
|
||||
|
||||
//Flag utilties
|
||||
void SetFlag( int );
|
||||
void RemoveFlag( int, bool = false );
|
||||
int HasFlag( int );
|
||||
int GetFlags( void ) const { return m_flags; }
|
||||
void SetFlags( int flags ) { m_flags = flags; }
|
||||
|
||||
//Various encapsulation utilities
|
||||
int GetIterations( void ) const { return m_iterations; }
|
||||
void SetIterations( int it ) { m_iterations = it; }
|
||||
|
||||
int GetID( void ) const { return m_id; }
|
||||
void SetID( int id ) { m_id = id; }
|
||||
|
||||
CSequence *GetReturn( void ) const { return m_return; }
|
||||
|
||||
void SetReturn ( CSequence *sequence );
|
||||
|
||||
int GetNumCommands( void ) const { return m_numCommands; }
|
||||
int GetNumChildren( void ) const { return m_children.size(); }
|
||||
|
||||
CSequence *GetChildByIndex( int id );
|
||||
bool HasChild( CSequence *sequence );
|
||||
|
||||
void SetOwner( ICARUS_Instance *owner ) { m_owner = owner; }
|
||||
|
||||
int Save( void );
|
||||
int Load( void );
|
||||
|
||||
inline void *operator new( size_t size )
|
||||
{ // Allocate the memory.
|
||||
return Z_Malloc( size, TAG_ICARUS3, qtrue );
|
||||
}
|
||||
// Overloaded delete operator.
|
||||
inline void operator delete( void *pRawData )
|
||||
{ // Free the Memory.
|
||||
Z_Free( pRawData );
|
||||
}
|
||||
|
||||
protected:
|
||||
|
||||
int SaveCommand( CBlock *block );
|
||||
|
||||
ICARUS_Instance *m_owner;
|
||||
|
||||
//Organization information
|
||||
sequence_l m_children;
|
||||
CSequence *m_parent;
|
||||
CSequence *m_return;
|
||||
|
||||
//Data information
|
||||
block_l m_commands;
|
||||
int m_flags;
|
||||
int m_iterations;
|
||||
int m_id;
|
||||
int m_numCommands;
|
||||
};
|
||||
|
||||
#endif //__SEQUENCE__
|
||||
Reference in New Issue
Block a user