Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members

Timer.h

Go to the documentation of this file.
00001 //------------------------------------------------------------------------------
00002 // Lamp : Open source game middleware
00003 // Copyright (C) 2004  Junpei Ohtani ( Email : junpee@users.sourceforge.jp )
00004 //
00005 // This library is free software; you can redistribute it and/or
00006 // modify it under the terms of the GNU Lesser General Public
00007 // License as published by the Free Software Foundation; either
00008 // version 2.1 of the License, or (at your option) any later version.
00009 //
00010 // This library is distributed in the hope that it will be useful,
00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013 // Lesser General Public License for more details.
00014 //
00015 // You should have received a copy of the GNU Lesser General Public
00016 // License along with this library; if not, write to the Free Software
00017 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00018 //------------------------------------------------------------------------------
00019 
00020 /** @file
00021  * タイマヘッダ
00022  * @author Junpee
00023  */
00024 
00025 #ifndef Timer_H_
00026 #define Timer_H_
00027 
00028 namespace Lamp{
00029 
00030 //------------------------------------------------------------------------------
00031 /**
00032  * タイマ
00033  *
00034  * 時間間隔を計測します。<br>
00035  * タイマを使用するためには、まずシステムの初期化時に Timer::initialize()を
00036  * 呼んでください。その後時間を計測したい処理の前で Timer::getTick()を呼び、
00037  * 計測したい処理の後で Timer::getInterval() を呼んでください。
00038  * <pre>
00039  * サンプルコード
00040  * 
00041  * // 初期化
00042  * Timer::initialize();
00043  * // 計測開始時間の取得
00044  * Timer::Tick startTime = Timer::getTick();
00045  * // 時間を計測する処理
00046  * targetMethod1();
00047  * // 時間間隔の取得
00048  * float msTime = Timer::getInterval(startTime);
00049  * // デバッグ出力に表示
00050  * DebugOut("targetMethod1() using %fms\n", msTime);
00051  * </pre>
00052  */
00053 //------------------------------------------------------------------------------
00054 class Timer{
00055 public:
00056     /**
00057      * Timer::getTick()を呼び出した時点での時間
00058      *
00059      * Timer::getInterval()により時間の間隔を取得できる。
00060      * @see Timer
00061      */
00062     class Tick{
00063         friend class Timer;
00064     public:
00065         /**
00066          * コンストラクタ
00067          */
00068         Tick(){ tick = 0; }
00069 
00070         /**
00071          * 値の取得
00072          * @return tickの下位32ビット値
00073          */
00074         u_int getValue(){ return (u_int)(tick & 0xffffffff); }
00075 
00076     private:
00077         // 時間
00078         long long tick;
00079 
00080     };
00081 
00082     /**
00083      * タイマを初期化します
00084      *
00085      * システムの初期化時に一度呼び出してください。
00086      */
00087     static void initialize();
00088 
00089     /**
00090      * 時間の取得
00091      * @return getTick()を呼んだ時間。
00092      * @see Tick
00093      */
00094     static Tick getTick();
00095 
00096     /**
00097      * 時間間隔の取得
00098      *
00099      * 以前に取得した時間からの時間間隔をミリ秒単位で取得します。
00100      * @param previousTick 以前に取得した時間
00101      * @return ミリ秒単位での時間間隔
00102      */
00103     static float getInterval(const Tick& previousTick);
00104 
00105     /**
00106      * 時間間隔の取得
00107      *
00108      * 以前に取得した時間から以後に取得した時間の時間間隔をミリ秒単位で取得します。
00109      * @param previousTick 以前に取得した時間
00110      * @param afterTick 以後に取得した時間
00111      * @return ミリ秒単位での時間間隔
00112      */
00113     static float getInterval(const Tick& previousTick, const Tick& afterTick);
00114 
00115 private:
00116     // 1msあたりのクロック数
00117     static float tickPerMillisecond_;
00118     // 初期化済みフラグ
00119     static bool initialized_;
00120 };
00121 
00122 //------------------------------------------------------------------------------
00123 } // End of namespace Lamp
00124 #endif // End of Timer_H_
00125 //------------------------------------------------------------------------------

Generated on Wed Mar 16 10:29:38 2005 for Lamp by doxygen 1.3.2