#ifndef FF_HANDLETABLE_H #define FF_HANDLETABLE_H //===[FFHandleTable]==================================================///////////// // // This table houses the master list of initialized effects. Indices // into this table are handles used by external modules. This way // effects may be reinitialized on other devices, removed entirely, // and perused informatively at any time without invalidating pointers. // //====================================================================///////////// class FFHandleTable { public: typedef vector Vector; typedef map RegFail; protected: Vector mVector; RegFail mRegFail; public: FFHandleTable() : mVector() , mRegFail() { //Init(); // guarantees operator [] always works } void Init() { ChannelCompound handle_null; mVector.push_back( handle_null ); } // Empties handle table except for FF_HANDLE_NULL void clear() { mVector.clear(); mRegFail.clear(); //Init(); // guarantees operator [] always works } int size() { return mVector.size(); } ChannelCompound& operator [] ( ffHandle_t ff ) { return mVector[ InRange( ff, 0, mVector.size() - 1, FF_HANDLE_NULL ) ]; } qboolean GetFailedNames( TNameTable &NameTable ); qboolean GetChannels( vector &channels ); ffHandle_t Convert( ChannelCompound &compound, const char *name, qboolean create ); ffHandle_t Convert( ChannelCompound &compound ); const char *GetName( ffHandle_t ff ); // // Optional // // qboolean Lookup( set &result, MultiEffect *effect, const char *name ); // qboolean Lookup( set &result, set &effect, const char *name ); }; #endif // FF_HANDLETABLE_H