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