00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 #ifndef COIN_SOSENSOR_H
00021 #define COIN_SOSENSOR_H
00022 
00023 #include <Inventor/SbBasic.h>
00024 
00025 class SoSensor;
00026 
00027 typedef void SoSensorCB(void * data, SoSensor * sensor);
00028 
00029 class COIN_DLL_API SoSensor {
00030 public:
00031   SoSensor(void);
00032   SoSensor(SoSensorCB * func, void * data);
00033   virtual ~SoSensor(void);
00034 
00035   void setFunction(SoSensorCB * callbackfunction);
00036   SoSensorCB * getFunction(void) const;
00037   void setData(void * callbackdata);
00038   void * getData(void) const;
00039 
00040   virtual void schedule(void) = 0;
00041   virtual void unschedule(void) = 0;
00042   virtual SbBool isScheduled(void) const = 0;
00043 
00044   virtual void trigger(void);
00045 
00046   virtual SbBool isBefore(const SoSensor * s) const = 0;
00047   void setNextInQueue(SoSensor * next);
00048   SoSensor * getNextInQueue(void) const;
00049 
00050   static void initClass(void);
00051 
00052 protected:
00053   SoSensorCB * func;
00054   void * funcData;
00055 };
00056 
00057 #endif // !COIN_SOSENSOR_H