Bernard Escaillas
/
MidiTee
Diff: memory.h
- Revision:
- 0:71d791204057
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/memory.h Tue Jun 07 13:32:20 2011 +0000 @@ -0,0 +1,78 @@ +#ifndef MEMORY_H +#define MEMORY_H + +//_____________________________________________________________________________ +class Memory +{//"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +private: +public: + char Name[16]; + short Value; + Memory() { Name[0] = 0; Value = 0; } + Memory( char* n, short v ) { strncpy( Name, n, 16 ); Value = v; } + ~Memory() {} +}; +//_____________________________________________________________________________ +class MemList +{//"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +private: + short allocated_; // size of allocated list +public: + short Count; // size of initialized list + Memory* List; // list of names + + MemList() : Count(0), List(NULL) {} + + ~MemList() + { + if( List != NULL ) free( List ); + Count = allocated_ = 0; + } + void Add( Memory &m ) + { + int n = Find( m.Name ); + if( n == -1 ) + { + if( Count == allocated_ ) List = (Memory*)realloc( List, ( allocated_ += 5 ) * sizeof( Memory ) ); + List[ Count++ ] = m; + } + else + List[n].Value = m.Value; + } + void Add( char* name, short value ) + { + int n = Find( name ); + if( n == -1 ) + { + if( Count == allocated_ ) List = (Memory*)realloc( List, ( allocated_ += 5 ) * sizeof( Memory ) ); + List[ Count++ ] = Memory( name, value ); + } + else + List[n].Value = value; + } + short Find( char* name ) + { + for( short i = 0 ; i < Count ; i++ ) + if( strcmp( List[i].Name, name ) == 0 ) + return i; + return -1; + } + short Get( char* name ) + { + for( short i = 0 ; i < Count ; i++ ) + if( strcmp( List[i].Name, name ) == 0 ) + return List[i].Value; + return 0; + } + void Set( char* name, short value ) + { + for( short i = 0 ; i < Count ; i++ ) + if( strcmp( List[i].Name, name ) == 0 ) + { + List[i].Value = value; + break; + } + } +}; + +#endif \ No newline at end of file