aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/cxxsupp/libcxx/include/ctime
blob: 3502fa5670e7c4314e8367fffcfe42288b56d916 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
// -*- C++ -*- 
//===---------------------------- ctime -----------------------------------===// 
// 
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
// 
//===----------------------------------------------------------------------===// 
 
#ifndef _LIBCPP_CTIME 
#define _LIBCPP_CTIME 
 
/* 
    ctime synopsis 
 
Macros: 
 
    NULL 
    CLOCKS_PER_SEC 
    TIME_UTC // C++17

namespace std 
{ 
 
Types: 
 
    clock_t 
    size_t 
    time_t 
    tm 
    timespec // C++17

clock_t clock(); 
double difftime(time_t time1, time_t time0); 
time_t mktime(tm* timeptr); 
time_t time(time_t* timer); 
char* asctime(const tm* timeptr); 
char* ctime(const time_t* timer); 
tm*    gmtime(const time_t* timer); 
tm* localtime(const time_t* timer); 
size_t strftime(char* restrict s, size_t maxsize, const char* restrict format, 
                const tm* restrict timeptr); 
int timespec_get( struct timespec *ts, int base); // C++17
}  // std 
 
*/ 
 
#include <__config> 
#include <time.h> 
 
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 
#pragma GCC system_header 
#endif 
 
// FIXME: 
// Apple SDKs don't define ::timespec_get unconditionally in C++ mode. This 
// should be fixed in future SDKs, but for the time being we need to avoid 
// trying to use that declaration when the SDK doesn't provide it. Note that 
// we're detecting this here instead of in <__config> because we can't include 
// system headers from <__config>, since it leads to circular module dependencies. 
// This is also meant to be a very temporary workaround until the SDKs are fixed. 
#if defined(__APPLE__) && !__has_attribute(using_if_exists) 
#   include <sys/cdefs.h> 
#   if defined(_LIBCPP_HAS_TIMESPEC_GET) && (__DARWIN_C_LEVEL < __DARWIN_C_FULL) 
#       define _LIBCPP_HAS_TIMESPEC_GET_NOT_ACTUALLY_PROVIDED 
#   endif 
#endif 
 
_LIBCPP_BEGIN_NAMESPACE_STD 
 
using ::clock_t _LIBCPP_USING_IF_EXISTS; 
using ::size_t _LIBCPP_USING_IF_EXISTS; 
using ::time_t _LIBCPP_USING_IF_EXISTS; 
using ::tm _LIBCPP_USING_IF_EXISTS; 
#if _LIBCPP_STD_VER > 14 && defined(_LIBCPP_HAS_TIMESPEC_GET) 
using ::timespec _LIBCPP_USING_IF_EXISTS; 
#endif
using ::clock _LIBCPP_USING_IF_EXISTS; 
using ::difftime _LIBCPP_USING_IF_EXISTS; 
using ::mktime _LIBCPP_USING_IF_EXISTS; 
using ::time _LIBCPP_USING_IF_EXISTS; 
using ::asctime _LIBCPP_USING_IF_EXISTS; 
using ::ctime _LIBCPP_USING_IF_EXISTS; 
using ::gmtime _LIBCPP_USING_IF_EXISTS; 
using ::localtime _LIBCPP_USING_IF_EXISTS; 
using ::strftime _LIBCPP_USING_IF_EXISTS; 
#if _LIBCPP_STD_VER > 14 && defined(_LIBCPP_HAS_TIMESPEC_GET) && !defined(_LIBCPP_HAS_TIMESPEC_GET_NOT_ACTUALLY_PROVIDED) 
using ::timespec_get _LIBCPP_USING_IF_EXISTS; 
#endif
 
_LIBCPP_END_NAMESPACE_STD 
 
#endif // _LIBCPP_CTIME