xref: /openbsd-src/gnu/llvm/libcxx/include/ctime (revision 4bdff4bed0e3d54e55670334c7d0077db4170f86)
146035553Spatrick// -*- C++ -*-
2*4bdff4beSrobert//===----------------------------------------------------------------------===//
346035553Spatrick//
446035553Spatrick// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
546035553Spatrick// See https://llvm.org/LICENSE.txt for license information.
646035553Spatrick// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
746035553Spatrick//
846035553Spatrick//===----------------------------------------------------------------------===//
946035553Spatrick
1046035553Spatrick#ifndef _LIBCPP_CTIME
1146035553Spatrick#define _LIBCPP_CTIME
1246035553Spatrick
1346035553Spatrick/*
1446035553Spatrick    ctime synopsis
1546035553Spatrick
1646035553SpatrickMacros:
1746035553Spatrick
1846035553Spatrick    NULL
1946035553Spatrick    CLOCKS_PER_SEC
2046035553Spatrick    TIME_UTC // C++17
2146035553Spatrick
2246035553Spatricknamespace std
2346035553Spatrick{
2446035553Spatrick
2546035553SpatrickTypes:
2646035553Spatrick
2746035553Spatrick    clock_t
2846035553Spatrick    size_t
2946035553Spatrick    time_t
3046035553Spatrick    tm
3146035553Spatrick    timespec // C++17
3246035553Spatrick
3346035553Spatrickclock_t clock();
3446035553Spatrickdouble difftime(time_t time1, time_t time0);
3546035553Spatricktime_t mktime(tm* timeptr);
3646035553Spatricktime_t time(time_t* timer);
3746035553Spatrickchar* asctime(const tm* timeptr);
3846035553Spatrickchar* ctime(const time_t* timer);
3946035553Spatricktm*    gmtime(const time_t* timer);
4046035553Spatricktm* localtime(const time_t* timer);
4146035553Spatricksize_t strftime(char* restrict s, size_t maxsize, const char* restrict format,
4246035553Spatrick                const tm* restrict timeptr);
4346035553Spatrickint timespec_get( struct timespec *ts, int base); // C++17
4446035553Spatrick}  // std
4546035553Spatrick
4646035553Spatrick*/
4746035553Spatrick
48*4bdff4beSrobert#include <__assert> // all public C++ headers provide the assertion handler
4946035553Spatrick#include <__config>
50*4bdff4beSrobert
51*4bdff4beSrobert// <time.h> is not provided by libc++
52*4bdff4beSrobert#if __has_include(<time.h>)
5346035553Spatrick#  include <time.h>
54*4bdff4beSrobert#  ifdef _LIBCPP_TIME_H
55*4bdff4beSrobert#    error "If libc++ starts defining <time.h>, the __has_include check should move to libc++'s <time.h>"
56*4bdff4beSrobert#  endif
57*4bdff4beSrobert#endif
5846035553Spatrick
5946035553Spatrick#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
6046035553Spatrick#  pragma GCC system_header
6146035553Spatrick#endif
6246035553Spatrick
6346035553Spatrick_LIBCPP_BEGIN_NAMESPACE_STD
6446035553Spatrick
6576d0caaeSpatrickusing ::clock_t _LIBCPP_USING_IF_EXISTS;
6676d0caaeSpatrickusing ::size_t _LIBCPP_USING_IF_EXISTS;
6776d0caaeSpatrickusing ::time_t _LIBCPP_USING_IF_EXISTS;
6876d0caaeSpatrickusing ::tm _LIBCPP_USING_IF_EXISTS;
69*4bdff4beSrobert#if _LIBCPP_STD_VER > 14
7076d0caaeSpatrickusing ::timespec _LIBCPP_USING_IF_EXISTS;
7146035553Spatrick#endif
7276d0caaeSpatrickusing ::clock _LIBCPP_USING_IF_EXISTS;
7376d0caaeSpatrickusing ::difftime _LIBCPP_USING_IF_EXISTS;
7476d0caaeSpatrickusing ::mktime _LIBCPP_USING_IF_EXISTS;
7576d0caaeSpatrickusing ::time _LIBCPP_USING_IF_EXISTS;
7676d0caaeSpatrickusing ::asctime _LIBCPP_USING_IF_EXISTS;
7776d0caaeSpatrickusing ::ctime _LIBCPP_USING_IF_EXISTS;
7876d0caaeSpatrickusing ::gmtime _LIBCPP_USING_IF_EXISTS;
7976d0caaeSpatrickusing ::localtime _LIBCPP_USING_IF_EXISTS;
8076d0caaeSpatrickusing ::strftime _LIBCPP_USING_IF_EXISTS;
81*4bdff4beSrobert#if _LIBCPP_STD_VER > 14
8276d0caaeSpatrickusing ::timespec_get _LIBCPP_USING_IF_EXISTS;
8346035553Spatrick#endif
8446035553Spatrick
8546035553Spatrick_LIBCPP_END_NAMESPACE_STD
8646035553Spatrick
8746035553Spatrick#endif // _LIBCPP_CTIME
88