00001 #ifndef __J2K__PositionTracker_HPP__
00002 #define __J2K__PositionTracker_HPP__
00003
00004 #include <j2k/Fred/Standard.hpp>
00005
00006 class Track;
00007 class Train;
00008 class Semaphore;
00009
00010 class FileReader;
00011
00012 class PositionTracker
00013 {
00014 public:
00015 PositionTracker( const char* n = "circle.trk" );
00016
00017 virtual ~PositionTracker();
00018
00019 long getLeft( size_t track_id, size_t index = 0 ) const;
00020 long getRight( size_t track_id, size_t index = 0 ) const;
00021
00022 long getLeftEmpty( size_t track_id ) const;
00023 long getRightEmpty( size_t track_id ) const;
00024
00025 Track* getTrack( size_t track_id );
00026
00027 inline Track* operator[]( size_t track_id )
00028 {
00029 return getTrack( track_id );
00030 }
00031
00032 protected:
00033 FileReader* reader;
00034 Track** track;
00035 size_t size;
00036 long start_bit;
00037 long end_bit;
00038
00039 private:
00040
00041 inline PositionTracker( const PositionTracker& src );
00042 inline const PositionTracker& operator=( const PositionTracker& src );
00043 };
00044
00045 #endif
00046