Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

PhxClock.h

Go to the documentation of this file.
00001 #ifndef PHX_CLOCK_H
00002 #define PHX_CLOCK_H
00003 
00010 #include <Phx/PhxConfig.h>
00011 #include <Phx/PhxTypes.h>
00012 #include <Phx/Core/PhxNamedInterface.h>
00013 
00014 namespace Phx {
00015 
00036   class Clock : public NamedInterface {
00037   public:
00038     class Task; // Task sub-interface
00039     class Timer;// Timer sub-interface
00040 
00041     // Sub interfaces
00042 
00049     virtual Ptr<Task> newTask(const String& name) = 0;
00050 
00072     virtual Ptr<Timer> newTimer(void) = 0;
00073 
00074     // public attributes
00075 
00080     virtual double time(void) const = 0;
00081 
00086     virtual void time(double time) = 0;
00087 
00094     virtual double rate(void) const = 0;
00095 
00102     virtual void rate(double rate) = 0;
00103   };
00104 
00105 
00110   class Clock::Timer : public LockedPtrInterface<Clock::Timer> {
00111   public:
00116     virtual double time(void) = 0;
00117 
00122     virtual void time(double time) = 0;
00123 
00130     virtual double rate(void) const = 0;
00131 
00138     virtual void rate(double rate) = 0;
00139 
00140   };
00141 
00152   class Clock::Task : public LockedPtrInterface<Clock::Task> {
00153   public:
00154 
00158     const static uint32_t AFFINITY_NONE;
00159 
00166     const static uint32_t AFFINITY_MAIN_THREAD;
00167 
00168 
00169     virtual ~Task() {} // virtual destructor
00170 
00175     const static double NEVER;
00176 
00181     class Listener : public BaseListener<Clock::Task, Listener> {
00182     public:
00193       virtual void onTimeout(double scheduledTime) = 0;
00194     };
00195 
00215     virtual double nextTime(void) const = 0;
00216 
00263     virtual void nextTime(double nextTime) = 0;
00264 
00272     virtual double time(void) const = 0;
00273 
00278     virtual void listener(Listener* listener) = 0;
00279 
00284     virtual String name(void) const = 0;
00285 
00299     virtual void affinity(uint32_t affinity) = 0;
00300 
00308     virtual uint32_t affinity(void) const = 0;
00309   };
00310   
00324   class WallClock : public Clock {
00325   public:
00326     const static NamedInterface::Type INTERFACE_TYPE;
00327     const static String               INTERFACE_TYPE_NAME;
00328   };
00329 
00342   class FrameClock : public Clock {
00343   public:
00344     const static NamedInterface::Type INTERFACE_TYPE;
00345     const static String               INTERFACE_TYPE_NAME;
00346   };
00347 
00348 }; // namespace Phx
00349 
00350 #endif /* PHX_CLOCK_H */

Generated on Wed Dec 21 22:05:37 2005 for Phoenix OSFS by  doxygen 1.4.2