00001 #ifndef __J2K__TrackArray_HPP__ 00002 #define __J2K__TrackArray_HPP__ 00003 00004 class Track; 00005 class TrackArray; 00006 class Train; 00007 00008 00009 class TrackArray 00010 { 00011 public: 00012 TrackArray( size_t len = 1 ) 00013 : length( len ) 00014 { 00015 array = new Track*[ length ]; 00016 00017 register size_t i = 0; 00018 for( ; i < length; i++ ) { 00019 array[i] = NULL; 00020 } 00021 } 00022 00023 virtual ~TrackArray() 00024 { 00025 if ( !array ) return; 00026 00027 register size_t i = 0; 00028 for( ; i < length; i++ ) { 00029 if ( array[i] ) delete array[i]; 00030 } 00031 00032 delete[] array; 00033 } 00034 00035 inline size_t getLength() 00036 { 00037 return length; 00038 } 00039 00040 inline void setTrack( size_t pos, Track* trk ) 00041 { 00042 assert( pos < length ); 00043 array[ pos ] = trk; 00044 } 00045 00046 inline Track* getTrack( size_t pos ) 00047 { 00048 assert( pos < length ); 00049 return array[ pos ]; 00050 } 00051 00052 00053 protected: 00054 00055 Track** array; 00056 size_t length; 00057 00058 00059 private: 00060 TrackArray( const TrackArray& src ); 00061 const TrackArray& operator=( const TrackArray& src ); 00062 }; 00063 00064 #endif 00065