Chris@16
|
1 // time.hpp --------------------------------------------------------------//
|
Chris@16
|
2
|
Chris@16
|
3 // Copyright 2010 Vicente J. Botet Escriba
|
Chris@101
|
4 // Copyright (c) Microsoft Corporation 2014
|
Chris@16
|
5
|
Chris@16
|
6 // Distributed under the Boost Software License, Version 1.0.
|
Chris@16
|
7 // See http://www.boost.org/LICENSE_1_0.txt
|
Chris@16
|
8
|
Chris@16
|
9
|
Chris@16
|
10 #ifndef BOOST_DETAIL_WINAPI_TIME_HPP
|
Chris@16
|
11 #define BOOST_DETAIL_WINAPI_TIME_HPP
|
Chris@16
|
12
|
Chris@16
|
13 #include <boost/detail/winapi/basic_types.hpp>
|
Chris@101
|
14 #include <boost/predef.h>
|
Chris@16
|
15
|
Chris@16
|
16 #ifdef BOOST_HAS_PRAGMA_ONCE
|
Chris@16
|
17 #pragma once
|
Chris@16
|
18 #endif
|
Chris@16
|
19
|
Chris@16
|
20 namespace boost {
|
Chris@16
|
21 namespace detail {
|
Chris@16
|
22 namespace winapi {
|
Chris@101
|
23
|
Chris@16
|
24 #if defined( BOOST_USE_WINDOWS_H )
|
Chris@101
|
25
|
Chris@16
|
26 typedef FILETIME FILETIME_;
|
Chris@16
|
27 typedef PFILETIME PFILETIME_;
|
Chris@16
|
28 typedef LPFILETIME LPFILETIME_;
|
Chris@16
|
29
|
Chris@16
|
30 typedef SYSTEMTIME SYSTEMTIME_;
|
Chris@16
|
31 typedef SYSTEMTIME* PSYSTEMTIME_;
|
Chris@16
|
32
|
Chris@16
|
33 #ifdef BOOST_HAS_GETSYSTEMTIMEASFILETIME // Windows CE does not define GetSystemTimeAsFileTime
|
Chris@16
|
34 using ::GetSystemTimeAsFileTime;
|
Chris@16
|
35 #endif
|
Chris@101
|
36 #if BOOST_PLAT_WINDOWS_DESKTOP
|
Chris@16
|
37 using ::FileTimeToLocalFileTime;
|
Chris@101
|
38 #endif
|
Chris@16
|
39 using ::GetSystemTime;
|
Chris@16
|
40 using ::SystemTimeToFileTime;
|
Chris@101
|
41
|
Chris@101
|
42 #if BOOST_PLAT_WINDOWS_DESKTOP
|
Chris@16
|
43 using ::GetTickCount;
|
Chris@101
|
44 #endif
|
Chris@101
|
45 #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
|
Chris@101
|
46 using ::GetTickCount64;
|
Chris@101
|
47 #endif
|
Chris@16
|
48
|
Chris@16
|
49 #else
|
Chris@101
|
50
|
Chris@16
|
51 extern "C" {
|
Chris@16
|
52 typedef struct _FILETIME {
|
Chris@16
|
53 DWORD_ dwLowDateTime;
|
Chris@16
|
54 DWORD_ dwHighDateTime;
|
Chris@16
|
55 } FILETIME_, *PFILETIME_, *LPFILETIME_;
|
Chris@16
|
56
|
Chris@16
|
57 typedef struct _SYSTEMTIME {
|
Chris@16
|
58 WORD_ wYear;
|
Chris@16
|
59 WORD_ wMonth;
|
Chris@16
|
60 WORD_ wDayOfWeek;
|
Chris@16
|
61 WORD_ wDay;
|
Chris@16
|
62 WORD_ wHour;
|
Chris@16
|
63 WORD_ wMinute;
|
Chris@16
|
64 WORD_ wSecond;
|
Chris@16
|
65 WORD_ wMilliseconds;
|
Chris@16
|
66 } SYSTEMTIME_, *PSYSTEMTIME_;
|
Chris@16
|
67
|
Chris@16
|
68 #ifdef BOOST_HAS_GETSYSTEMTIMEASFILETIME // Windows CE does not define GetSystemTimeAsFileTime
|
Chris@16
|
69 __declspec(dllimport) void WINAPI
|
Chris@16
|
70 GetSystemTimeAsFileTime(FILETIME_* lpFileTime);
|
Chris@16
|
71 #endif
|
Chris@16
|
72 __declspec(dllimport) int WINAPI
|
Chris@16
|
73 FileTimeToLocalFileTime(const FILETIME_* lpFileTime,
|
Chris@16
|
74 FILETIME_* lpLocalFileTime);
|
Chris@16
|
75 __declspec(dllimport) void WINAPI
|
Chris@16
|
76 GetSystemTime(SYSTEMTIME_* lpSystemTime);
|
Chris@16
|
77 __declspec(dllimport) int WINAPI
|
Chris@16
|
78 SystemTimeToFileTime(const SYSTEMTIME_* lpSystemTime,
|
Chris@16
|
79 FILETIME_* lpFileTime);
|
Chris@101
|
80 #if BOOST_PLAT_WINDOWS_DESKTOP
|
Chris@16
|
81 __declspec(dllimport) DWORD_ WINAPI
|
Chris@16
|
82 GetTickCount();
|
Chris@101
|
83 #endif
|
Chris@101
|
84 #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
|
Chris@101
|
85 __declspec(dllimport) ULONGLONG_ WINAPI
|
Chris@101
|
86 GetTickCount64();
|
Chris@101
|
87 #endif
|
Chris@16
|
88 }
|
Chris@101
|
89
|
Chris@16
|
90 #endif
|
Chris@16
|
91
|
Chris@16
|
92 #ifndef BOOST_HAS_GETSYSTEMTIMEASFILETIME
|
Chris@16
|
93 inline void WINAPI GetSystemTimeAsFileTime(FILETIME_* lpFileTime)
|
Chris@16
|
94 {
|
Chris@16
|
95 SYSTEMTIME_ st;
|
Chris@16
|
96 GetSystemTime(&st);
|
Chris@16
|
97 SystemTimeToFileTime(&st, lpFileTime);
|
Chris@16
|
98 }
|
Chris@16
|
99 #endif
|
Chris@16
|
100
|
Chris@16
|
101 }
|
Chris@16
|
102 }
|
Chris@16
|
103 }
|
Chris@16
|
104
|
Chris@16
|
105 #endif // BOOST_DETAIL_WINAPI_TIME_HPP
|