// -*- C++ -*- //===----------------------------------------------------------------------===// // // 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_SUPPORT_IBM_LOCALE_MGMT_ZOS_H #define _LIBCPP_SUPPORT_IBM_LOCALE_MGMT_ZOS_H #if defined(__MVS__) #include #include #ifdef __cplusplus extern "C" { #endif #define _LC_MAX LC_MESSAGES /* highest real category */ #define _NCAT (_LC_MAX + 1) /* maximum + 1 */ #define _CATMASK(n) (1 << (n)) #define LC_COLLATE_MASK _CATMASK(LC_COLLATE) #define LC_CTYPE_MASK _CATMASK(LC_CTYPE) #define LC_MONETARY_MASK _CATMASK(LC_MONETARY) #define LC_NUMERIC_MASK _CATMASK(LC_NUMERIC) #define LC_TIME_MASK _CATMASK(LC_TIME) #define LC_MESSAGES_MASK _CATMASK(LC_MESSAGES) #define LC_ALL_MASK (_CATMASK(_NCAT) - 1) typedef struct locale_struct { int category_mask; std::string lc_collate; std::string lc_ctype; std::string lc_monetary; std::string lc_numeric; std::string lc_time; std::string lc_messages; } * locale_t; // z/OS does not have newlocale, freelocale and uselocale. // The functions below are workarounds in single thread mode. locale_t newlocale(int category_mask, const char* locale, locale_t base); void freelocale(locale_t locobj); locale_t uselocale(locale_t newloc); #ifdef __cplusplus } #endif #endif // defined(__MVS__) #endif // _LIBCPP_SUPPORT_IBM_LOCALE_MGMT_ZOS_H