Shadowrun: Awakened 29 September 2011 - Build 871
Clock.hpp
Go to the documentation of this file.
00001 /*
00002     Copyright (c) 2009-2010 Christopher A. Taylor.  All rights reserved.
00003 
00004     Redistribution and use in source and binary forms, with or without
00005     modification, are permitted provided that the following conditions are met:
00006 
00007     * Redistributions of source code must retain the above copyright notice,
00008       this list of conditions and the following disclaimer.
00009     * Redistributions in binary form must reproduce the above copyright notice,
00010       this list of conditions and the following disclaimer in the documentation
00011       and/or other materials provided with the distribution.
00012     * Neither the name of LibCat nor the names of its contributors may be used
00013       to endorse or promote products derived from this software without
00014       specific prior written permission.
00015 
00016     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00017     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00018     IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00019     ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
00020     LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00021     CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00022     SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00023     INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00024     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00025     ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00026     POSSIBILITY OF SUCH DAMAGE.
00027 */
00028 
00029 #ifndef CAT_CLOCK_HPP
00030 #define CAT_CLOCK_HPP
00031 
00032 #include <cat/Platform.hpp>
00033 #include <string>
00034 #include <cat/threads/Mutex.hpp>
00035 
00036 namespace cat {
00037 
00038 
00039 class Clock
00040 {
00041 #ifdef CAT_OS_WINDOWS
00042     static Mutex init_lock;
00043     static u32 initialized; // Number of times initialized
00044     static u32 period; // timegettime() and Windows scheduler period
00045     static double inv_freq; // Performance counter frequency (does not change, so cache it)
00046 #endif
00047 
00048 public:
00049     static bool Initialize();
00050     static bool Shutdown();
00051 
00052     static u32 sec();     // timestamp in seconds
00053     static u32 msec_fast(); // timestamp in milliseconds, less accurate than msec() but faster
00054     static u32 msec();    // timestamp in milliseconds, must call Initialize() first
00055     static double usec(); // timestamp in microseconds, must call Initialize() first
00056     static u32 cycles();  // timestamp in cycles
00057 
00058     static std::string format(const char *format_string);
00059 
00060     static void sleep(u32 milliseconds);
00061 
00062     static bool SetHighPriority();
00063     static bool SetNormalPriority();
00064 
00065     static u32 MeasureClocks(int iterations, void (*FunctionPtr)());
00066 };
00067 
00068 
00069 } // namespace cat
00070 
00071 #endif // CAT_CLOCK_HPP

Copyright © 2007-2010 by The Shadowrun: Awakened Team. This work is licensed under the GNU Lesser General Public License 3.

GNU Lesser General Public License 3 Sourceforge.net