12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- // -*- C++ -*-
- //===------------------- support/ibm/locale_mgmt_aix.h --------------------===//
- //
- // The LLVM Compiler Infrastructure
- //
- // This file is dual licensed under the MIT and the University of Illinois Open
- // Source Licenses. See LICENSE.TXT for details.
- //
- //===----------------------------------------------------------------------===//
- #ifndef _LIBCPP_SUPPORT_IBM_LOCALE_MGMT_AIX_H
- #define _LIBCPP_SUPPORT_IBM_LOCALE_MGMT_AIX_H
- #if defined(_AIX)
- #include "cstdlib"
- #ifdef __cplusplus
- extern "C" {
- #endif
- #if !defined(_AIX71)
- // AIX 7.1 and higher has these definitions. Definitions and stubs
- // are provied here as a temporary workaround on AIX 6.1.
- #define LC_COLLATE_MASK 1
- #define LC_CTYPE_MASK 2
- #define LC_MESSAGES_MASK 4
- #define LC_MONETARY_MASK 8
- #define LC_NUMERIC_MASK 16
- #define LC_TIME_MASK 32
- #define LC_ALL_MASK (LC_COLLATE_MASK | LC_CTYPE_MASK | \
- LC_MESSAGES_MASK | LC_MONETARY_MASK |\
- LC_NUMERIC_MASK | LC_TIME_MASK)
- typedef void* locale_t;
- // The following are stubs. They are not supported on AIX 6.1.
- static inline
- locale_t newlocale(int category_mask, const char *locale, locale_t base)
- {
- _LC_locale_t *newloc, *loc;
- if ((loc = (_LC_locale_t *)__xopen_locale(locale)) == NULL)
- {
- errno = EINVAL;
- return (locale_t)0;
- }
- if ((newloc = (_LC_locale_t *)calloc(1, sizeof(_LC_locale_t))) == NULL)
- {
- errno = ENOMEM;
- return (locale_t)0;
- }
- if (!base)
- base = (_LC_locale_t *)__xopen_locale("C");
- memcpy(newloc, base, sizeof (_LC_locale_t));
- if (category_mask & LC_COLLATE_MASK)
- newloc->lc_collate = loc->lc_collate;
- if (category_mask & LC_CTYPE_MASK)
- newloc->lc_ctype = loc->lc_ctype;
- //if (category_mask & LC_MESSAGES_MASK)
- // newloc->lc_messages = loc->lc_messages;
- if (category_mask & LC_MONETARY_MASK)
- newloc->lc_monetary = loc->lc_monetary;
- if (category_mask & LC_TIME_MASK)
- newloc->lc_time = loc->lc_time;
- if (category_mask & LC_NUMERIC_MASK)
- newloc->lc_numeric = loc->lc_numeric;
- return (locale_t)newloc;
- }
- static inline
- void freelocale(locale_t locobj)
- {
- free(locobj);
- }
- static inline
- locale_t uselocale(locale_t newloc)
- {
- return (locale_t)0;
- }
- #endif // !defined(_AIX71)
- #ifdef __cplusplus
- }
- #endif
- #endif // defined(_AIX)
- #endif // _LIBCPP_SUPPORT_IBM_LOCALE_MGMT_AIX_H
|