xref: /aosp_15_r20/external/llvm-libc/test/src/time/TmHelper.h (revision 71db0c75aadcf003ffe3238005f61d7618a3fead)
1*71db0c75SAndroid Build Coastguard Worker //===---- TmHelper.h ------------------------------------------*- C++ -*-===//
2*71db0c75SAndroid Build Coastguard Worker //
3*71db0c75SAndroid Build Coastguard Worker // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*71db0c75SAndroid Build Coastguard Worker // See https://llvm.org/LICENSE.txt for license information.
5*71db0c75SAndroid Build Coastguard Worker // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*71db0c75SAndroid Build Coastguard Worker //
7*71db0c75SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
8*71db0c75SAndroid Build Coastguard Worker 
9*71db0c75SAndroid Build Coastguard Worker #ifndef LLVM_LIBC_TEST_SRC_TIME_TMHELPER_H
10*71db0c75SAndroid Build Coastguard Worker #define LLVM_LIBC_TEST_SRC_TIME_TMHELPER_H
11*71db0c75SAndroid Build Coastguard Worker 
12*71db0c75SAndroid Build Coastguard Worker #include <time.h>
13*71db0c75SAndroid Build Coastguard Worker 
14*71db0c75SAndroid Build Coastguard Worker #include "src/__support/macros/config.h"
15*71db0c75SAndroid Build Coastguard Worker #include "src/time/time_utils.h"
16*71db0c75SAndroid Build Coastguard Worker 
17*71db0c75SAndroid Build Coastguard Worker using LIBC_NAMESPACE::time_utils::TimeConstants;
18*71db0c75SAndroid Build Coastguard Worker 
19*71db0c75SAndroid Build Coastguard Worker namespace LIBC_NAMESPACE_DECL {
20*71db0c75SAndroid Build Coastguard Worker namespace tmhelper {
21*71db0c75SAndroid Build Coastguard Worker namespace testing {
22*71db0c75SAndroid Build Coastguard Worker 
23*71db0c75SAndroid Build Coastguard Worker // A helper function to initialize tm data structure.
initialize_tm_data(struct tm * tm_data,int year,int month,int mday,int hour,int min,int sec,int wday,int yday)24*71db0c75SAndroid Build Coastguard Worker static inline void initialize_tm_data(struct tm *tm_data, int year, int month,
25*71db0c75SAndroid Build Coastguard Worker                                       int mday, int hour, int min, int sec,
26*71db0c75SAndroid Build Coastguard Worker                                       int wday, int yday) {
27*71db0c75SAndroid Build Coastguard Worker   struct tm temp = {.tm_sec = sec,
28*71db0c75SAndroid Build Coastguard Worker                     .tm_min = min,
29*71db0c75SAndroid Build Coastguard Worker                     .tm_hour = hour,
30*71db0c75SAndroid Build Coastguard Worker                     .tm_mday = mday,
31*71db0c75SAndroid Build Coastguard Worker                     .tm_mon = month - 1, // tm_mon starts with 0 for Jan
32*71db0c75SAndroid Build Coastguard Worker                     // years since 1900
33*71db0c75SAndroid Build Coastguard Worker                     .tm_year = year - TimeConstants::TIME_YEAR_BASE,
34*71db0c75SAndroid Build Coastguard Worker                     .tm_wday = wday,
35*71db0c75SAndroid Build Coastguard Worker                     .tm_yday = yday,
36*71db0c75SAndroid Build Coastguard Worker                     .tm_isdst = 0};
37*71db0c75SAndroid Build Coastguard Worker   *tm_data = temp;
38*71db0c75SAndroid Build Coastguard Worker }
39*71db0c75SAndroid Build Coastguard Worker 
40*71db0c75SAndroid Build Coastguard Worker } // namespace testing
41*71db0c75SAndroid Build Coastguard Worker } // namespace tmhelper
42*71db0c75SAndroid Build Coastguard Worker } // namespace LIBC_NAMESPACE_DECL
43*71db0c75SAndroid Build Coastguard Worker 
44*71db0c75SAndroid Build Coastguard Worker #endif // LLVM_LIBC_TEST_SRC_TIME_TMHELPER_H
45