1e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 2e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Copyright (c) 1999 3e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Silicon Graphics Computer Systems, Inc. 4e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 5e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Copyright (c) 1999 6e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Boris Fomitchev 7e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 8e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * This material is provided "as is", with absolutely no warranty expressed 9e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * or implied. Any use is at your own risk. 10e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 11e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Permission to use or copy this software for any purpose is hereby granted 12e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * without fee, provided the above notices are retained on all copies. 13e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Permission to modify the code and to distribute modified code is granted, 14e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * provided the above notices are retained, and a notice that the code was 15e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * modified is included with the above copyright notice. 16e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 17e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 18e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 19e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 20e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * It is impossible to write the C++ locale library in terms of locales 21e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * as defined in the C standard. Instead, we write the C++ locale and I/O 22e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * library in terms of a low level C-like interface. This file defines 23e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * that interface. 24e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 25e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * The low-level locale interface can't be written portably; there 26e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * must be a version of it for each platform that the C++ library 27e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * is ported to. On many systems this interface may be a thin wrapper 28e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * for existing functionality. 29e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 30e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 31e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifndef _STLP_C_LOCALE_IMPL_H 32e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define _STLP_C_LOCALE_IMPL_H 33e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 34e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include "stlport_prefix.h" 35e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 36e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <wchar.h> /* for mbstate_t */ 37e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <stl/c_locale.h> 38e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 39e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstruct _Locale_name_hint; 40e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 41e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (_GNU_SOURCE) && defined (__GLIBC__) && \ 42e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ((__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)) 43e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# define _STLP_USE_GLIBC2_LOCALIZATION 44e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# include <nl_types.h> 45e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttypedef nl_catd nl_catd_type; 46e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#else 47e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttypedef int nl_catd_type; 48e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 49e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 50e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 51e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * A number: the maximum length of a simple locale name. 52e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * (i.e. a name like like en_US, as opposed to a name like 53e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * en_US/de_AT/de_AT/es_MX/en_US/en_US) */ 54e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define _Locale_MAX_SIMPLE_NAME 256 55e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 56e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifdef __cplusplus 57e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottextern "C" { 58e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 59e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 60e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 61e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Typedefs: 62e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 63e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scotttypedef unsigned short int _Locale_mask_t; 64e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 65e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* Function called during STLport library load phase. Might contain any 66e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * code necessary to the platform localization layer. 67e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 68e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid _Locale_init(void); 69e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 70e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* Function called during STLport library unload. Might contain any 71e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * code necessary to the platform localization layer. 72e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 73e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid _Locale_final(void); 74e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 75e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* Create a category of the locale with the given name. 76e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 77e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * The char* argument is a simple (not a composite) locale name, which may 78e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * neither be an empty string nor a null pointer. 79e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 80e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * These functions return NULL to indicate failure. Failure reason should be reported 81e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * using the __err_code pointer. 82e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 83e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstruct _Locale_ctype* _Locale_ctype_create(const char *, struct _Locale_name_hint*, int * /* __err_code */); 84e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstruct _Locale_codecvt* _Locale_codecvt_create(const char *, struct _Locale_name_hint*, int * /* __err_code */); 85e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstruct _Locale_numeric* _Locale_numeric_create(const char *, struct _Locale_name_hint*, int * /* __err_code */); 86e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstruct _Locale_time* _Locale_time_create(const char *, struct _Locale_name_hint*, int * /* __err_code */); 87e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstruct _Locale_collate* _Locale_collate_create(const char *, struct _Locale_name_hint*, int * /* __err_code */); 88e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstruct _Locale_monetary* _Locale_monetary_create(const char *, struct _Locale_name_hint*, int * /* __err_code */); 89e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstruct _Locale_messages* _Locale_messages_create(const char *, struct _Locale_name_hint*, int * /* __err_code */); 90e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 91e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* Give error reason on failure of one of the _Locale_*_create functions. Available 92e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * reasons are: 93e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 0: No specific error reason has been reported. 94e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 1: No platform support for the given facet. 95e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 2: Unknown locale name 96e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 3: No platform API for localization support. 97e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 4: No more memory 98e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 99e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define _STLP_LOC_UNDEFINED 0 100e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define _STLP_LOC_UNSUPPORTED_FACET_CATEGORY 1 101e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define _STLP_LOC_UNKNOWN_NAME 2 102e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define _STLP_LOC_NO_PLATFORM_SUPPORT 3 103e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define _STLP_LOC_NO_MEMORY 4 104e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 105e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* Release a category of a locale 106e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 107e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * These functions are used to release a category acquired with the 108e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * according _Locale_*_create() functions. 109e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 110e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid _Locale_ctype_destroy(struct _Locale_ctype *); 111e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid _Locale_codecvt_destroy(struct _Locale_codecvt *); 112e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid _Locale_numeric_destroy(struct _Locale_numeric *); 113e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid _Locale_time_destroy(struct _Locale_time *); 114e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid _Locale_collate_destroy(struct _Locale_collate *); 115e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid _Locale_monetary_destroy(struct _Locale_monetary *); 116e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid _Locale_messages_destroy(struct _Locale_messages *); 117e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 118e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 119e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Returns the name of the user's default locale in each 120e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * category, as a null-terminated string. A NULL value 121e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * means the default "C" locale. 122e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 123e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_ctype_default(char * __buf); 124e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_numeric_default(char * __buf); 125e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_time_default(char * __buf); 126e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_collate_default(char * __buf); 127e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_monetary_default(char * __buf); 128e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_messages_default(char * __buf); 129e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 130e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* Retrieve the name of the given category 131e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 132e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * __buf points to a buffer that can hold at least _Locale_MAX_SIMPLE_NAME 133e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * characters. These functions store the name, as a null-terminated 134e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * string, in __buf. This function can't fail, at worst name is truncated. 135e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 136e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottchar const* _Locale_ctype_name(const struct _Locale_ctype *, char* __buf); 137e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottchar const* _Locale_codecvt_name(const struct _Locale_codecvt *, char* __buf); 138e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottchar const* _Locale_numeric_name(const struct _Locale_numeric *, char* __buf); 139e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottchar const* _Locale_time_name(const struct _Locale_time *, char* __buf); 140e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottchar const* _Locale_collate_name(const struct _Locale_collate *, char* __buf); 141e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottchar const* _Locale_monetary_name(const struct _Locale_monetary *, char* __buf); 142e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottchar const* _Locale_messages_name(const struct _Locale_messages *, char* __buf); 143e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 144e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 145e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * cname is a (possibly composite) locale name---i.e. a name that can 146e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * be passed to setlocale. __buf points to an array large enough to 147e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * store at least _Locale_MAX_SIMPLE_NAME characters, and each of these 148e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * functions extracts the name of a single category, stores it in buf 149e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * as a null-terminated string, and returns buf. 150e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 151e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottchar const* _Locale_extract_ctype_name(const char *cname, char *__buf, 152e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott struct _Locale_name_hint* __hint, int *__err_code); 153e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottchar const* _Locale_extract_numeric_name(const char *cname, char *__buf, 154e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott struct _Locale_name_hint* __hint, int *__err_code); 155e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottchar const* _Locale_extract_time_name(const char *cname, char *__buf, 156e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott struct _Locale_name_hint* __hint, int *__err_code); 157e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottchar const* _Locale_extract_collate_name(const char *cname, char *__buf, 158e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott struct _Locale_name_hint* __hint, int *__err_code); 159e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottchar const* _Locale_extract_monetary_name(const char *cname, char *__buf, 160e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott struct _Locale_name_hint* __hint, int *__err_code); 161e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottchar const* _Locale_extract_messages_name(const char *cname, char *__buf, 162e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott struct _Locale_name_hint* __hint, int *__err_code); 163e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 164e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* Functions to improve locale creation process. For some locale API (Win32) 165e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * you need to find a locale identification from the name which can be a 166e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * rather expensive operation especially if you do so for all facets of a 167e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * locale. Those functions can be used to extract from a API dependent facet 168e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * struct the information necessary to skip this lookup process for other 169e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * facets creation. If not supported those function should return NULL. 170e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 171e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstruct _Locale_name_hint* _Locale_get_ctype_hint(struct _Locale_ctype*); 172e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstruct _Locale_name_hint* _Locale_get_numeric_hint(struct _Locale_numeric*); 173e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstruct _Locale_name_hint* _Locale_get_time_hint(struct _Locale_time*); 174e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstruct _Locale_name_hint* _Locale_get_collate_hint(struct _Locale_collate*); 175e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstruct _Locale_name_hint* _Locale_get_monetary_hint(struct _Locale_monetary*); 176e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottstruct _Locale_name_hint* _Locale_get_messages_hint(struct _Locale_messages*); 177e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 178e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 179e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * FUNCTIONS THAT USE CTYPE 180e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 181e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 182e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 183e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Narrow character functions: 184e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 185e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 186e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 187e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Returns a pointer to the beginning of the ctype table. The table is 188e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * at least 257 bytes long; if p is the pointer returned by this 189e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * function, then p[c] is valid if c is EOF or if p is any value of 190e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * type unsigned char. 191e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 192e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst _Locale_mask_t * _Locale_ctype_table(struct _Locale_ctype *); 193e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 194e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 195e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * c is either EOF, or an unsigned char value. 196e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 197e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint _Locale_toupper(struct _Locale_ctype *, int /* c */); 198e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint _Locale_tolower(struct _Locale_ctype *, int /* c */); 199e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 200e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 201e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifndef _STLP_NO_WCHAR_T 202e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 203e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Wide character functions: 204e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 205e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_Locale_mask_t _WLocale_ctype(struct _Locale_ctype *, wint_t, _Locale_mask_t); 206e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottwint_t _WLocale_tolower(struct _Locale_ctype *, wint_t); 207e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottwint_t _WLocale_toupper(struct _Locale_ctype *, wint_t); 208e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 209e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 210e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Multibyte functions: 211e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 212e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 213e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 214e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Returns the number of bytes of the longest allowed multibyte 215e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * character in the current encoding. 216e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 217e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint _WLocale_mb_cur_max(struct _Locale_codecvt *); 218e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 219e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 220e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Returns the number of bytes of the shortest allowed multibyte 221e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * character in the current encoding. 222e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 223e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint _WLocale_mb_cur_min(struct _Locale_codecvt *); 224e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 225e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 226e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Returns 1 if the current multibyte encoding is stateless 227e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * and does not require the use of an mbstate_t value. 228e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 229e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint _WLocale_is_stateless(struct _Locale_codecvt *); 230e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 231e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 232e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Almost identical to mbrtowc, from 4.6.5.3.2 of NA1. The only 233e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * important difference is that mbrtowc treats null wide characters 234e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * as special, and we don't. Specifically: examines the characters 235e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * in [from, from + n), extracts a single wide character, and stores 236e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * it in *to. Modifies shift_state if appropriate. The return value, 237e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * which is always positive, is the number of characters extracted from 238e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * the input sequence. Return value is (size_t) -1 if there was an 239e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * encoding error in the input sequence, and (size_t) -2 if 240e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * [from, from + n) is correct but not complete. None of the pointer 241e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * arguments may be null pointers. 242e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 243e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottsize_t _WLocale_mbtowc(struct _Locale_codecvt *, 244e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott wchar_t * /* to */, 245e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const char * /* from */, size_t /* n */, 246e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott mbstate_t *); 247e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 248e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 249e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Again, very similar to wcrtomb. The differences are that (1) it 250e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * doesn't treat null characters as special; and (2) it stores at most 251e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * n characters. Converts c to a multibyte sequence, stores that 252e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * sequence in the array 'to', and returns the length of the sequence. 253e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Modifies shift_state if appropriate. The return value is (size_t) -1 254e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * if c is not a valid wide character, and (size_t) -2 if the length of 255e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * the multibyte character sequence is greater than n. 256e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 257e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottsize_t _WLocale_wctomb(struct _Locale_codecvt *, 258e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott char *, size_t, 259e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const wchar_t, 260e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott mbstate_t *); 261e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 262e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 263e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Inserts whatever characters are necessary to restore st to an 264e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * initial shift state. Sets *next to buf + m, where m is the number 265e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * of characters inserted. (0 <= m <= n.) Returns m to indicate 266e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * success, (size_t) -1 to indicate error, (size_t) -2 to indicate 267e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * partial success (more than n characters needed). For success or partial 268e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * success, sets *next to buf + m. 269e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 270e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottsize_t _WLocale_unshift(struct _Locale_codecvt *, 271e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott mbstate_t *, 272e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott char *, size_t, char **); 273e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 274e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 275e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 276e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * FUNCTIONS THAT USE COLLATE 277e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 278e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 279e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 280e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Compares the two sequences [s1, s1 + n1) and [s2, s2 + n2). Neither 281e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * sequence is assumed to be null-terminated, and null characters 282e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * aren't special. If the two sequences are the same up through 283e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * min(n1, n2), then the sequence that compares less is whichever one 284e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * is shorter. 285e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 286e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint _Locale_strcmp(struct _Locale_collate *, 287e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const char * /* s1 */, size_t /* n1 */, 288e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const char * /* s2 */, size_t /* n2 */); 289e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifndef _STLP_NO_WCHAR_T 290e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint _WLocale_strcmp(struct _Locale_collate *, 291e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const wchar_t * /* s1 */, size_t /* n1 */, 292e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const wchar_t * /* s2 */, size_t /* n2 */); 293e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 294e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 295e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 296e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Creates a transformed version of the string [s2, s2 + n2). The 297e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * string may contain embedded null characters; nulls aren't special. 298e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * The transformed string begins at s1, and contains at most n1 299e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * characters. The return value is the length of the transformed 300e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * string. If the return value is greater than n1 then this is an 301e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * error condition: it indicates that there wasn't enough space. In 302e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * that case, the contents of [s1, s1 + n1) is unspecified. 303e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott*/ 304e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottsize_t _Locale_strxfrm(struct _Locale_collate *, 305e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott char * /* s1 */, size_t /* n1 */, 306e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const char * /* s2 */, size_t /* n2 */); 307e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 308e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifndef _STLP_NO_WCHAR_T 309e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottsize_t _WLocale_strxfrm(struct _Locale_collate *, 310e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott wchar_t * /* s1 */, size_t /* n1 */, 311e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const wchar_t * /* s2 */, size_t /* n2 */); 312e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 313e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 314e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 315e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 316e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * FUNCTIONS THAT USE NUMERIC 317e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 318e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 319e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 320e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Equivalent to the first three fields in struct lconv. (C standard, 321e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * section 7.4.) 322e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 323e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottchar _Locale_decimal_point(struct _Locale_numeric *); 324e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottchar _Locale_thousands_sep(struct _Locale_numeric *); 325e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_grouping(struct _Locale_numeric *); 326e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 327e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifndef _STLP_NO_WCHAR_T 328e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottwchar_t _WLocale_decimal_point(struct _Locale_numeric *); 329e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottwchar_t _WLocale_thousands_sep(struct _Locale_numeric *); 330e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 331e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 332e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 333e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Return "true" and "false" in English locales, and something 334e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * appropriate in non-English locales. 335e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 336e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_true(struct _Locale_numeric *); 337e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_false(struct _Locale_numeric *); 338e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 339e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifndef _STLP_NO_WCHAR_T 340e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst wchar_t * _WLocale_true(struct _Locale_numeric *, wchar_t* /* buf */, size_t /* bufSize */); 341e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst wchar_t * _WLocale_false(struct _Locale_numeric *, wchar_t* /* buf */, size_t /* bufSize */); 342e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 343e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 344e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 345e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * FUNCTIONS THAT USE MONETARY 346e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 347e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 348e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 349e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Return the obvious fields of struct lconv. 350e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 351e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_int_curr_symbol(struct _Locale_monetary *); 352e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_currency_symbol(struct _Locale_monetary *); 353e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottchar _Locale_mon_decimal_point(struct _Locale_monetary *); 354e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottchar _Locale_mon_thousands_sep(struct _Locale_monetary *); 355e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_mon_grouping(struct _Locale_monetary *); 356e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_positive_sign(struct _Locale_monetary *); 357e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_negative_sign(struct _Locale_monetary *); 358e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottchar _Locale_int_frac_digits(struct _Locale_monetary *); 359e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottchar _Locale_frac_digits(struct _Locale_monetary *); 360e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint _Locale_p_cs_precedes(struct _Locale_monetary *); 361e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint _Locale_p_sep_by_space(struct _Locale_monetary *); 362e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint _Locale_p_sign_posn(struct _Locale_monetary *); 363e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint _Locale_n_cs_precedes(struct _Locale_monetary *); 364e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint _Locale_n_sep_by_space(struct _Locale_monetary *); 365e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottint _Locale_n_sign_posn(struct _Locale_monetary *); 366e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 367e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifndef _STLP_NO_WCHAR_T 368e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst wchar_t * _WLocale_int_curr_symbol(struct _Locale_monetary *, wchar_t* /* buf */, size_t /* bufSize */); 369e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst wchar_t * _WLocale_currency_symbol(struct _Locale_monetary *, wchar_t* /* buf */, size_t /* bufSize */); 370e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottwchar_t _WLocale_mon_decimal_point(struct _Locale_monetary *); 371e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottwchar_t _WLocale_mon_thousands_sep(struct _Locale_monetary *); 372e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst wchar_t * _WLocale_positive_sign(struct _Locale_monetary *, wchar_t* /* buf */, size_t /* bufSize */); 373e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst wchar_t * _WLocale_negative_sign(struct _Locale_monetary *, wchar_t* /* buf */, size_t /* bufSize */); 374e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 375e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 376e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 377e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * FUNCTIONS THAT USE TIME 378e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 379e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 380e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 381e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * month is in the range [0, 12). 382e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 383e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_full_monthname(struct _Locale_time *, int /* month */); 384e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_abbrev_monthname(struct _Locale_time *, int /* month */); 385e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 386e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifndef _STLP_NO_WCHAR_T 387e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst wchar_t * _WLocale_full_monthname(struct _Locale_time *, int /* month */, 388e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott wchar_t* /* buf */, size_t /* bufSize */); 389e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst wchar_t * _WLocale_abbrev_monthname(struct _Locale_time *, int /* month */, 390e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott wchar_t* /* buf */, size_t /* bufSize */); 391e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 392e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 393e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 394e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * day is in the range [0, 7). Sunday is 0. 395e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 396e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_full_dayofweek(struct _Locale_time *, int /* day */); 397e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_abbrev_dayofweek(struct _Locale_time *, int /* day */); 398e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 399e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifndef _STLP_NO_WCHAR_T 400e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst wchar_t * _WLocale_full_dayofweek(struct _Locale_time *, int /* day */, 401e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott wchar_t* /* buf */, size_t /* bufSize */); 402e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst wchar_t * _WLocale_abbrev_dayofweek(struct _Locale_time *, int /* day */, 403e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott wchar_t* /* buf */, size_t /* bufSize */); 404e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 405e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 406e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_d_t_fmt(struct _Locale_time *); 407e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_d_fmt(struct _Locale_time *); 408e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_t_fmt(struct _Locale_time *); 409e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_long_d_t_fmt(struct _Locale_time*); 410e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_long_d_fmt(struct _Locale_time*); 411e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 412e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_am_str(struct _Locale_time *); 413e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_pm_str(struct _Locale_time *); 414e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 415e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifndef _STLP_NO_WCHAR_T 416e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst wchar_t * _WLocale_am_str(struct _Locale_time *, 417e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott wchar_t* /* buf */, size_t /* bufSize */); 418e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst wchar_t * _WLocale_pm_str(struct _Locale_time *, 419e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott wchar_t* /* buf */, size_t /* bufSize */); 420e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 421e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 422e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 423e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * FUNCTIONS THAT USE MESSAGES 424e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 425e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 426e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 427e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Very similar to catopen, except that it uses the given message 428e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * category to determine which catalog to open. 429e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 430e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottnl_catd_type _Locale_catopen(struct _Locale_messages*, const char*); 431e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 432e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* Complementary to _Locale_catopen. 433e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * The catalog must be a value that was returned by a previous call 434e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * to _Locale_catopen. 435e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 436e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid _Locale_catclose(struct _Locale_messages*, nl_catd_type); 437e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 438e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 439e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Returns a string, identified by a set index and a message index, 440e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * from an opened message catalog. Returns the supplied default if 441e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * no such string exists. 442e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 443e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottconst char * _Locale_catgets(struct _Locale_messages *, nl_catd_type, 444e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int, int,const char *); 445e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 446e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifdef __cplusplus 447e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 448e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 449e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 450e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif /* _STLP_C_LOCALE_IMPL_H */ 451