Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Sep 28, 2009, 10:48:47 PM (15 years ago)
Author:
landauf
Message:

Realized Timer doesn't have to be a template, hence merged TimerBase, Timer and StaticTimer.
Removed the object pointer from Timer for memberfunctions, use createFunctor(f, object) instead.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/core5/src/libraries/tools/Timer.h

    r5798 r5831  
    4040                ClassName();
    4141                void functionName();
    42                 Timer<ClassName> myTimer;
     42                Timer myTimer;
    4343        };
    4444
     
    4848        ClassName::ClassName()
    4949        {
    50             myTimer.setTimer(interval_in_seconds, bLoop, this, createExecutor(createFunctor(&ClassName::functionName)));
     50            myTimer.setTimer(interval_in_seconds, bLoop, createExecutor(createFunctor(&ClassName::functionName, this)));
    5151        }
    5252
     
    6969namespace orxonox
    7070{
    71     class StaticTimer;
    7271    void delay(float delay, const std::string& command);
    7372    void killdelays();
    74     void executeDelayedCommand(StaticTimer* timer, const std::string& command);
     73    void executeDelayedCommand(Timer* timer, const std::string& command);
    7574
    76     //! TimerBase is the parent of the Timer class.
    77     class _ToolsExport TimerBase : public TimeFactorListener
     75    //! The Timer is a callback-object, calling a given function after a given time-interval.
     76    class _ToolsExport Timer : public TimeFactorListener
    7877    {
    7978        public:
    80             ~TimerBase();
     79            Timer();
     80            ~Timer();
     81
     82            Timer(float interval, bool bLoop, Executor* executor, bool bKillAfterCall = false);
     83
     84            /**
     85                @brief Initializes the Timer with given values.
     86                @param interval The timer-interval in seconds
     87                @param bLoop If true, the function gets called every 'interval' seconds
     88                @param object The object owning the timer and the function
     89                @param executor A executor of the function to call
     90            */
     91            void setTimer(float interval, bool bLoop, Executor* executor, bool bKillAfterCall = false)
     92            {
     93                this->deleteExecutor();
     94
     95                this->setInterval(interval);
     96                this->bLoop_ = bLoop;
     97                this->executor_ = executor;
     98                this->bActive_ = true;
     99
     100                this->time_ = this->interval_;
     101                this->bKillAfterCall_ = bKillAfterCall;
     102            }
    81103
    82104            void run();
     
    116138            void tick(const Clock& time);
    117139
    118         protected:
    119             TimerBase();
    120 
     140        private:
     141            void init();
     142       
    121143            Executor* executor_;  //!< The executor of the function that should be called when the time expires
    122144
     
    128150            long long time_;      //!< Internal variable, counting the time till the next function-call
    129151    };
    130 
    131     //! The Timer is a callback-object, calling a given function after a given time-interval.
    132     template <class T = BaseObject>
    133     class Timer : public TimerBase
    134     {
    135         public:
    136             Timer() {}
    137 
    138             /**
    139                 @brief Constructor: Initializes the Timer with given values.
    140                 @param interval The timer-interval in seconds
    141                 @param bLoop If true, the function gets called every 'interval' seconds
    142                 @param object The object owning the timer and the function
    143                 @param exeuctor A executor of the function to call
    144             */
    145             template <class O>
    146             Timer(float interval, bool bLoop, T* object, ExecutorMember<O>* exeuctor, bool bKillAfterCall = false)
    147             {
    148                 this->setTimer(interval, bLoop, object, exeuctor, bKillAfterCall);
    149             }
    150 
    151             /**
    152                 @brief Initializes the Timer with given values.
    153                 @param interval The timer-interval in seconds
    154                 @param bLoop If true, the function gets called every 'interval' seconds
    155                 @param object The object owning the timer and the function
    156                 @param exeuctor A executor of the function to call
    157             */
    158             template <class O>
    159             void setTimer(float interval, bool bLoop, T* object, ExecutorMember<O>* executor, bool bKillAfterCall = false)
    160             {
    161                 this->deleteExecutor();
    162 
    163                 this->setInterval(interval);
    164                 this->bLoop_ = bLoop;
    165                 executor->setObject(object);
    166                 this->executor_ = static_cast<Executor*>(executor);
    167                 this->bActive_ = true;
    168 
    169                 this->time_ = this->interval_;
    170                 this->bKillAfterCall_ = bKillAfterCall;
    171             }
    172     };
    173 
    174     //! The StaticTimer is a callback-object, calling a static function after a given time-interval.
    175     class _ToolsExport StaticTimer : public TimerBase
    176     {
    177         public:
    178             StaticTimer() {}
    179 
    180             /**
    181                 @brief Constructor: Initializes the Timer with given values.
    182                 @param interval The timer-interval in seconds
    183                 @param bLoop If true, the function gets called every 'interval' seconds
    184                 @param exeuctor A executor of the function to call
    185             */
    186             StaticTimer(float interval, bool bLoop, ExecutorStatic* executor, bool bKillAfterCall = false)
    187             {
    188                 this->setTimer(interval, bLoop, executor, bKillAfterCall);
    189             }
    190 
    191             /**
    192                 @brief Initializes the Timer with given values.
    193                 @param interval The timer-interval in seconds
    194                 @param bLoop If true, the function gets called every 'interval' seconds
    195                 @param object The object owning the timer and the function
    196                 @param executor A executor of the function to call
    197             */
    198             void setTimer(float interval, bool bLoop, ExecutorStatic* executor, bool bKillAfterCall = false)
    199             {
    200                 this->deleteExecutor();
    201 
    202                 this->setInterval(interval);
    203                 this->bLoop_ = bLoop;
    204                 this->executor_ = executor;
    205                 this->bActive_ = true;
    206 
    207                 this->time_ = this->interval_;
    208                 this->bKillAfterCall_ = bKillAfterCall;
    209             }
    210     };
    211 
    212152}
    213153
Note: See TracChangeset for help on using the changeset viewer.