1 /* ///////////////////////////////////////////////////////////////////////
2 * File: multimedia_counter.h
7 * Brief: The multimedia_counter class - precision: ms
10 * Copyright (c) 2008-2020, Waruqi All rights reserved.
11 * //////////////////////////////////////////////////////////////////// */
12 #ifndef EXTL_PLATFORM_WINDOWS_MULTIMEDIA_COUNTER_H
13 #define EXTL_PLATFORM_WINDOWS_MULTIMEDIA_COUNTER_H
15 /*!\file multimedia_counter.h
16 * \brief multimedia_counter class - precision: ms
19 # error multimedia_counter.h need be supported by c++.
22 /* ///////////////////////////////////////////////////////////////////////
28 #if !defined(EXTL_COMPILER_IS_GCC) && \
29 !defined(EXTL_COMPILER_IS_BORLAND)
30 # pragma comment(lib, "WinMM.lib")
33 /* ///////////////////////////////////////////////////////////////////////
34 * ::extl::platform::windows namespace
36 EXTL_WINDOWS_BEGIN_WHOLE_NAMESPACE
38 /*!\brief multimedia_counter class
40 * \ingroup extl_group_counter
42 class multimedia_counter
44 /// \name Constructors
53 typedef multimedia_counter class_type
;
54 #ifdef EXTL_64BIT_INT_SUPPORT
55 typedef e_uint64_t interval_type
;
57 typedef e_uint32_t interval_type
;
59 typedef DWORD size_type
;
72 inline interval_type
count() const;
73 inline interval_type
s() const;
74 inline interval_type
ms() const;
75 inline interval_type
us() const;
86 /* ///////////////////////////////////////////////////////////////////////
87 * Class implementation
89 inline multimedia_counter::multimedia_counter()
90 : m_start(0), m_stop(0)
93 inline void multimedia_counter::start()
95 m_start
= ::timeGetTime();
98 inline void multimedia_counter::stop()
100 m_stop
= ::timeGetTime();
102 inline multimedia_counter::interval_type
multimedia_counter::count() const
104 return static_cast<interval_type
>(m_stop
- m_start
);
106 inline multimedia_counter::interval_type
multimedia_counter::s() const
108 return count() / interval_type(1000);
110 inline multimedia_counter::interval_type
multimedia_counter::ms() const
114 inline multimedia_counter::interval_type
multimedia_counter::us() const
116 return count() * interval_type(1000);
119 /* ///////////////////////////////////////////////////////////////////////
120 * ::extl::platform::windows namespace
122 EXTL_WINDOWS_END_WHOLE_NAMESPACE
124 /* //////////////////////////////////////////////////////////////////// */
125 #endif /* EXTL_PLATFORM_WINDOWS_MULTIMEDIA_COUNTER_H */
126 /* //////////////////////////////////////////////////////////////////// */