1ee226c05af9e0187098f43fb71465a581487af9bDan Austin// -*- C++ -*- 2ee226c05af9e0187098f43fb71465a581487af9bDan Austin//===------------------- support/ibm/locale_mgmt_aix.h --------------------===// 3ee226c05af9e0187098f43fb71465a581487af9bDan Austin// 4ee226c05af9e0187098f43fb71465a581487af9bDan Austin// The LLVM Compiler Infrastructure 5ee226c05af9e0187098f43fb71465a581487af9bDan Austin// 6ee226c05af9e0187098f43fb71465a581487af9bDan Austin// This file is dual licensed under the MIT and the University of Illinois Open 7ee226c05af9e0187098f43fb71465a581487af9bDan Austin// Source Licenses. See LICENSE.TXT for details. 8ee226c05af9e0187098f43fb71465a581487af9bDan Austin// 9ee226c05af9e0187098f43fb71465a581487af9bDan Austin//===----------------------------------------------------------------------===// 10ee226c05af9e0187098f43fb71465a581487af9bDan Austin 11ee226c05af9e0187098f43fb71465a581487af9bDan Austin#ifndef _LIBCPP_SUPPORT_IBM_LOCALE_MGMT_AIX_H 12ee226c05af9e0187098f43fb71465a581487af9bDan Austin#define _LIBCPP_SUPPORT_IBM_LOCALE_MGMT_AIX_H 13ee226c05af9e0187098f43fb71465a581487af9bDan Austin 14ee226c05af9e0187098f43fb71465a581487af9bDan Austin#if defined(_AIX) 15ee226c05af9e0187098f43fb71465a581487af9bDan Austin#include "cstdlib" 16ee226c05af9e0187098f43fb71465a581487af9bDan Austin 17ee226c05af9e0187098f43fb71465a581487af9bDan Austin#ifdef __cplusplus 18ee226c05af9e0187098f43fb71465a581487af9bDan Austinextern "C" { 19ee226c05af9e0187098f43fb71465a581487af9bDan Austin#endif 20ee226c05af9e0187098f43fb71465a581487af9bDan Austin 21ee226c05af9e0187098f43fb71465a581487af9bDan Austin#if !defined(_AIX71) 22ee226c05af9e0187098f43fb71465a581487af9bDan Austin// AIX 7.1 and higher has these definitions. Definitions and stubs 23ee226c05af9e0187098f43fb71465a581487af9bDan Austin// are provied here as a temporary workaround on AIX 6.1. 24ee226c05af9e0187098f43fb71465a581487af9bDan Austin 25ee226c05af9e0187098f43fb71465a581487af9bDan Austin#define LC_COLLATE_MASK 1 26ee226c05af9e0187098f43fb71465a581487af9bDan Austin#define LC_CTYPE_MASK 2 27ee226c05af9e0187098f43fb71465a581487af9bDan Austin#define LC_MESSAGES_MASK 4 28ee226c05af9e0187098f43fb71465a581487af9bDan Austin#define LC_MONETARY_MASK 8 29ee226c05af9e0187098f43fb71465a581487af9bDan Austin#define LC_NUMERIC_MASK 16 30ee226c05af9e0187098f43fb71465a581487af9bDan Austin#define LC_TIME_MASK 32 31ee226c05af9e0187098f43fb71465a581487af9bDan Austin#define LC_ALL_MASK (LC_COLLATE_MASK | LC_CTYPE_MASK | \ 32ee226c05af9e0187098f43fb71465a581487af9bDan Austin LC_MESSAGES_MASK | LC_MONETARY_MASK |\ 33ee226c05af9e0187098f43fb71465a581487af9bDan Austin LC_NUMERIC_MASK | LC_TIME_MASK) 34ee226c05af9e0187098f43fb71465a581487af9bDan Austin 35ee226c05af9e0187098f43fb71465a581487af9bDan Austintypedef void* locale_t; 36ee226c05af9e0187098f43fb71465a581487af9bDan Austin 37ee226c05af9e0187098f43fb71465a581487af9bDan Austin// The following are stubs. They are not supported on AIX 6.1. 38ee226c05af9e0187098f43fb71465a581487af9bDan Austinstatic inline 39ee226c05af9e0187098f43fb71465a581487af9bDan Austinlocale_t newlocale(int category_mask, const char *locale, locale_t base) 40ee226c05af9e0187098f43fb71465a581487af9bDan Austin{ 41ee226c05af9e0187098f43fb71465a581487af9bDan Austin _LC_locale_t *newloc, *loc; 42ee226c05af9e0187098f43fb71465a581487af9bDan Austin if ((loc = (_LC_locale_t *)__xopen_locale(locale)) == NULL) 43ee226c05af9e0187098f43fb71465a581487af9bDan Austin { 44ee226c05af9e0187098f43fb71465a581487af9bDan Austin errno = EINVAL; 45ee226c05af9e0187098f43fb71465a581487af9bDan Austin return (locale_t)0; 46ee226c05af9e0187098f43fb71465a581487af9bDan Austin } 47ee226c05af9e0187098f43fb71465a581487af9bDan Austin if ((newloc = (_LC_locale_t *)calloc(1, sizeof(_LC_locale_t))) == NULL) 48ee226c05af9e0187098f43fb71465a581487af9bDan Austin { 49ee226c05af9e0187098f43fb71465a581487af9bDan Austin errno = ENOMEM; 50ee226c05af9e0187098f43fb71465a581487af9bDan Austin return (locale_t)0; 51ee226c05af9e0187098f43fb71465a581487af9bDan Austin } 52ee226c05af9e0187098f43fb71465a581487af9bDan Austin if (!base) 53ee226c05af9e0187098f43fb71465a581487af9bDan Austin base = (_LC_locale_t *)__xopen_locale("C"); 54ee226c05af9e0187098f43fb71465a581487af9bDan Austin memcpy(newloc, base, sizeof (_LC_locale_t)); 55ee226c05af9e0187098f43fb71465a581487af9bDan Austin if (category_mask & LC_COLLATE_MASK) 56ee226c05af9e0187098f43fb71465a581487af9bDan Austin newloc->lc_collate = loc->lc_collate; 57ee226c05af9e0187098f43fb71465a581487af9bDan Austin if (category_mask & LC_CTYPE_MASK) 58ee226c05af9e0187098f43fb71465a581487af9bDan Austin newloc->lc_ctype = loc->lc_ctype; 59ee226c05af9e0187098f43fb71465a581487af9bDan Austin //if (category_mask & LC_MESSAGES_MASK) 60ee226c05af9e0187098f43fb71465a581487af9bDan Austin // newloc->lc_messages = loc->lc_messages; 61ee226c05af9e0187098f43fb71465a581487af9bDan Austin if (category_mask & LC_MONETARY_MASK) 62ee226c05af9e0187098f43fb71465a581487af9bDan Austin newloc->lc_monetary = loc->lc_monetary; 63ee226c05af9e0187098f43fb71465a581487af9bDan Austin if (category_mask & LC_TIME_MASK) 64ee226c05af9e0187098f43fb71465a581487af9bDan Austin newloc->lc_time = loc->lc_time; 65ee226c05af9e0187098f43fb71465a581487af9bDan Austin if (category_mask & LC_NUMERIC_MASK) 66ee226c05af9e0187098f43fb71465a581487af9bDan Austin newloc->lc_numeric = loc->lc_numeric; 67ee226c05af9e0187098f43fb71465a581487af9bDan Austin return (locale_t)newloc; 68ee226c05af9e0187098f43fb71465a581487af9bDan Austin} 69ee226c05af9e0187098f43fb71465a581487af9bDan Austinstatic inline 70ee226c05af9e0187098f43fb71465a581487af9bDan Austinvoid freelocale(locale_t locobj) 71ee226c05af9e0187098f43fb71465a581487af9bDan Austin{ 72ee226c05af9e0187098f43fb71465a581487af9bDan Austin free(locobj); 73ee226c05af9e0187098f43fb71465a581487af9bDan Austin} 74ee226c05af9e0187098f43fb71465a581487af9bDan Austinstatic inline 75ee226c05af9e0187098f43fb71465a581487af9bDan Austinlocale_t uselocale(locale_t newloc) 76ee226c05af9e0187098f43fb71465a581487af9bDan Austin{ 77ee226c05af9e0187098f43fb71465a581487af9bDan Austin return (locale_t)0; 78ee226c05af9e0187098f43fb71465a581487af9bDan Austin} 79ee226c05af9e0187098f43fb71465a581487af9bDan Austin#endif // !defined(_AIX71) 80ee226c05af9e0187098f43fb71465a581487af9bDan Austin 81ee226c05af9e0187098f43fb71465a581487af9bDan Austin#ifdef __cplusplus 82ee226c05af9e0187098f43fb71465a581487af9bDan Austin} 83ee226c05af9e0187098f43fb71465a581487af9bDan Austin#endif 84ee226c05af9e0187098f43fb71465a581487af9bDan Austin#endif // defined(_AIX) 85ee226c05af9e0187098f43fb71465a581487af9bDan Austin#endif // _LIBCPP_SUPPORT_IBM_LOCALE_MGMT_AIX_H 86