github.com/searKing/golang/go@v1.2.74/os/signal/cgo/include/boost/winapi/time.hpp (about)

     1  /*
     2   * Copyright 2010 Vicente J. Botet Escriba
     3   * Copyright (c) Microsoft Corporation 2014
     4   * Copyright 2015, 2017 Andrey Semashev
     5   *
     6   * Distributed under the Boost Software License, Version 1.0.
     7   * See http://www.boost.org/LICENSE_1_0.txt
     8   */
     9  
    10  #ifndef BOOST_WINAPI_TIME_HPP_INCLUDED_
    11  #define BOOST_WINAPI_TIME_HPP_INCLUDED_
    12  
    13  #include <boost/winapi/basic_types.hpp>
    14  
    15  #ifdef BOOST_HAS_PRAGMA_ONCE
    16  #pragma once
    17  #endif
    18  
    19  #if !defined( BOOST_USE_WINDOWS_H )
    20  extern "C" {
    21  struct _FILETIME;
    22  struct _SYSTEMTIME;
    23  
    24  BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
    25  GetSystemTime(::_SYSTEMTIME* lpSystemTime);
    26  
    27  #ifdef BOOST_HAS_GETSYSTEMTIMEASFILETIME  // Windows CE does not define GetSystemTimeAsFileTime
    28  BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
    29  GetSystemTimeAsFileTime(::_FILETIME* lpSystemTimeAsFileTime);
    30  #endif
    31  
    32  BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
    33  SystemTimeToFileTime(
    34      const ::_SYSTEMTIME* lpSystemTime,
    35      ::_FILETIME* lpFileTime);
    36  
    37  BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
    38  FileTimeToSystemTime(
    39      const ::_FILETIME* lpFileTime,
    40      ::_SYSTEMTIME* lpSystemTime);
    41  
    42  #if BOOST_WINAPI_PARTITION_APP_SYSTEM
    43  
    44  BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
    45  FileTimeToLocalFileTime(
    46      const ::_FILETIME* lpFileTime,
    47      ::_FILETIME* lpLocalFileTime);
    48  
    49  BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
    50  LocalFileTimeToFileTime(
    51      const ::_FILETIME* lpLocalFileTime,
    52      ::_FILETIME* lpFileTime);
    53  
    54  #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
    55  
    56  #if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
    57  BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
    58  GetTickCount(BOOST_WINAPI_DETAIL_VOID);
    59  #endif // BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
    60  
    61  #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
    62  BOOST_SYMBOL_IMPORT boost::winapi::ULONGLONG_ BOOST_WINAPI_WINAPI_CC
    63  GetTickCount64(BOOST_WINAPI_DETAIL_VOID);
    64  #endif
    65  
    66  } // extern "C"
    67  #endif // !defined( BOOST_USE_WINDOWS_H )
    68  
    69  namespace boost {
    70  namespace winapi {
    71  
    72  typedef struct BOOST_MAY_ALIAS _FILETIME {
    73      DWORD_ dwLowDateTime;
    74      DWORD_ dwHighDateTime;
    75  } FILETIME_, *PFILETIME_, *LPFILETIME_;
    76  
    77  typedef struct BOOST_MAY_ALIAS _SYSTEMTIME {
    78      WORD_ wYear;
    79      WORD_ wMonth;
    80      WORD_ wDayOfWeek;
    81      WORD_ wDay;
    82      WORD_ wHour;
    83      WORD_ wMinute;
    84      WORD_ wSecond;
    85      WORD_ wMilliseconds;
    86  } SYSTEMTIME_, *PSYSTEMTIME_, *LPSYSTEMTIME_;
    87  
    88  #if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
    89  using ::GetTickCount;
    90  #endif
    91  #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
    92  using ::GetTickCount64;
    93  #endif
    94  
    95  BOOST_FORCEINLINE VOID_ GetSystemTime(LPSYSTEMTIME_ lpSystemTime)
    96  {
    97      ::GetSystemTime(reinterpret_cast< ::_SYSTEMTIME* >(lpSystemTime));
    98  }
    99  
   100  BOOST_FORCEINLINE BOOL_ SystemTimeToFileTime(const SYSTEMTIME_* lpSystemTime, FILETIME_* lpFileTime)
   101  {
   102      return ::SystemTimeToFileTime(reinterpret_cast< const ::_SYSTEMTIME* >(lpSystemTime), reinterpret_cast< ::_FILETIME* >(lpFileTime));
   103  }
   104  
   105  BOOST_FORCEINLINE BOOL_ FileTimeToSystemTime(const FILETIME_* lpFileTime, SYSTEMTIME_* lpSystemTime)
   106  {
   107      return ::FileTimeToSystemTime(reinterpret_cast< const ::_FILETIME* >(lpFileTime), reinterpret_cast< ::_SYSTEMTIME* >(lpSystemTime));
   108  }
   109  
   110  #if BOOST_WINAPI_PARTITION_APP_SYSTEM
   111  BOOST_FORCEINLINE BOOL_ FileTimeToLocalFileTime(const FILETIME_* lpFileTime, FILETIME_* lpLocalFileTime)
   112  {
   113      return ::FileTimeToLocalFileTime(reinterpret_cast< const ::_FILETIME* >(lpFileTime), reinterpret_cast< ::_FILETIME* >(lpLocalFileTime));
   114  }
   115  
   116  BOOST_FORCEINLINE BOOL_ LocalFileTimeToFileTime(const FILETIME_* lpLocalFileTime, FILETIME_* lpFileTime)
   117  {
   118      return ::LocalFileTimeToFileTime(reinterpret_cast< const ::_FILETIME* >(lpLocalFileTime), reinterpret_cast< ::_FILETIME* >(lpFileTime));
   119  }
   120  #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
   121  
   122  #if defined( BOOST_HAS_GETSYSTEMTIMEASFILETIME )
   123  BOOST_FORCEINLINE VOID_ GetSystemTimeAsFileTime(LPFILETIME_ lpSystemTimeAsFileTime)
   124  {
   125      ::GetSystemTimeAsFileTime(reinterpret_cast< ::_FILETIME* >(lpSystemTimeAsFileTime));
   126  }
   127  #else
   128  // Windows CE does not define GetSystemTimeAsFileTime
   129  BOOST_FORCEINLINE VOID_ GetSystemTimeAsFileTime(FILETIME_* lpFileTime)
   130  {
   131      boost::winapi::SYSTEMTIME_ st;
   132      boost::winapi::GetSystemTime(&st);
   133      boost::winapi::SystemTimeToFileTime(&st, lpFileTime);
   134  }
   135  #endif
   136  
   137  }
   138  }
   139  
   140  #endif // BOOST_WINAPI_TIME_HPP_INCLUDED_