xlocale.h revision 227753
1227753Stheraven/*- 2227753Stheraven * Copyright (c) 2011 The FreeBSD Foundation 3227753Stheraven * All rights reserved. 4227753Stheraven * 5227753Stheraven * This software was developed by David Chisnall under sponsorship from 6227753Stheraven * the FreeBSD Foundation. 7227753Stheraven * 8227753Stheraven * Redistribution and use in source and binary forms, with or without 9227753Stheraven * modification, are permitted provided that the following conditions 10227753Stheraven * are met: 11227753Stheraven * 1. Redistributions of source code must retain the above copyright notice, 12227753Stheraven * this list of conditions and the following disclaimer. 13227753Stheraven * 2. Redistributions in binary form must reproduce the above copyright notice, 14227753Stheraven * this list of conditions and the following disclaimer in the documentation 15227753Stheraven * and/or other materials provided with the distribution. 16227753Stheraven * 17227753Stheraven * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 18227753Stheraven * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19227753Stheraven * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20227753Stheraven * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 21227753Stheraven * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22227753Stheraven * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23227753Stheraven * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24227753Stheraven * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25227753Stheraven * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26227753Stheraven * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27227753Stheraven * SUCH DAMAGE. 28227753Stheraven * 29227753Stheraven * $FreeBSD: head/include/xlocale.h 227753 2011-11-20 14:45:42Z theraven $ 30227753Stheraven */ 31227753Stheraven 32227753Stheraven#ifndef _XLOCALE_H_ 33227753Stheraven#define _XLOCALE_H_ 34227753Stheraven 35227753Stheraven#include <locale.h> 36227753Stheraven 37227753Stheraven__BEGIN_DECLS 38227753Stheraven 39227753Stheraven/* 40227753Stheraven * Extended locale versions of the locale-aware functions from string.h. 41227753Stheraven * 42227753Stheraven * Include <string.h> before <xlocale.h> to expose these. 43227753Stheraven */ 44227753Stheraven#ifdef _STRING_H_ 45227753Stheravenint strcoll_l(const char *, const char *, locale_t); 46227753Stheravensize_t strxfrm_l(char *, const char *, size_t, locale_t); 47227753Stheravenint strcasecmp_l(const char *, const char *, locale_t); 48227753Stheravenchar *strcasestr_l(const char *, const char *, locale_t); 49227753Stheravenint strncasecmp_l(const char *, const char *, size_t, locale_t); 50227753Stheraven#endif 51227753Stheraven/* 52227753Stheraven * Extended locale versions of the locale-aware functions from inttypes.h. 53227753Stheraven * 54227753Stheraven * Include <inttypes.h> before <xlocale.h> to expose these. 55227753Stheraven */ 56227753Stheraven#ifdef _INTTYPES_H_ 57227753Stheravenintmax_t 58227753Stheravenstrtoimax_l(const char * __restrict, char ** __restrict, int, locale_t); 59227753Stheravenuintmax_t 60227753Stheravenstrtoumax_l(const char * __restrict, char ** __restrict, int, locale_t); 61227753Stheravenintmax_t 62227753Stheravenwcstoimax_l(const wchar_t * __restrict, wchar_t ** __restrict, int , locale_t); 63227753Stheravenuintmax_t 64227753Stheravenwcstoumax_l(const wchar_t * __restrict, wchar_t ** __restrict, int, locale_t); 65227753Stheraven#endif 66227753Stheraven/* 67227753Stheraven * Extended locale versions of the locale-aware functions from monetary.h. 68227753Stheraven * 69227753Stheraven * Include <monetary.h> before <xlocale.h> to expose these. 70227753Stheraven */ 71227753Stheraven#ifdef _MONETARY_H_ 72227753Stheravenssize_t strfmon_l(char *, size_t, locale_t, const char *, ...) 73227753Stheraven# if __GNUC__ > 2 || __GNUC__ == 2 && __GNUC_MINOR__ >= 7 74227753Stheraven __attribute__((__format__ (__strfmon__, 4, 5))) 75227753Stheraven# endif 76227753Stheraven ; 77227753Stheraven#endif 78227753Stheraven 79227753Stheraven/* 80227753Stheraven * Extended locale versions of the locale-aware functions from stdlib.h. 81227753Stheraven * 82227753Stheraven * Include <stdlib.h> before <xlocale.h> to expose these. 83227753Stheraven */ 84227753Stheraven#ifdef _STDLIB_H_ 85227753Stheravendouble atof_l(const char *, locale_t); 86227753Stheravenint atoi_l(const char *, locale_t); 87227753Stheravenlong atol_l(const char *, locale_t); 88227753Stheravenlong long atoll_l(const char *, locale_t); 89227753Stheravenint mblen_l(const char *, size_t, locale_t); 90227753Stheravensize_t 91227753Stheravenmbstowcs_l(wchar_t * __restrict, const char * __restrict, size_t, locale_t); 92227753Stheravenint 93227753Stheravenmbtowc_l(wchar_t * __restrict, const char * __restrict, size_t, locale_t); 94227753Stheravendouble strtod_l(const char *, char **, locale_t); 95227753Stheravenfloat strtof_l(const char *, char **, locale_t); 96227753Stheravenlong strtol_l(const char *, char **, int, locale_t); 97227753Stheravenlong double strtold_l(const char *, char **, locale_t); 98227753Stheravenlong long strtoll_l(const char *, char **, int, locale_t); 99227753Stheravenunsigned long strtoul_l(const char *, char **, int, locale_t); 100227753Stheravenunsigned long long strtoull_l(const char *, char **, int, locale_t); 101227753Stheravensize_t 102227753Stheravenwcstombs_l(char * __restrict, const wchar_t * __restrict, size_t, locale_t); 103227753Stheravenint wctomb_l(char *, wchar_t, locale_t); 104227753Stheraven 105227753Stheravenint ___mb_cur_max_l(locale_t); 106227753Stheraven#define MB_CUR_MAX_L(x) (___mb_cur_max_l(x)) 107227753Stheraven 108227753Stheraven#endif 109227753Stheraven/* 110227753Stheraven * Extended locale versions of the locale-aware functions from time.h. 111227753Stheraven * 112227753Stheraven * Include <time.h> before <xlocale.h> to expose these. 113227753Stheraven */ 114227753Stheraven#ifdef _TIME_H_ 115227753Stheravensize_t 116227753Stheravenstrftime_l(char * __restrict, size_t, const char * __restrict, const 117227753Stheraven struct tm * __restrict, locale_t) 118227753Stheraven# if __GNUC__ > 2 || __GNUC__ == 2 && __GNUC_MINOR__ >= 7 119227753Stheraven __attribute__((__format__ (__strftime__, 3, 0))) 120227753Stheraven# endif 121227753Stheraven ; 122227753Stheravenchar * 123227753Stheravenstrptime_l(const char * __restrict, const char * __restrict, 124227753Stheraven struct tm * __restrict, locale_t); 125227753Stheraven#endif 126227753Stheraven#ifdef _LANGINFO_H_ 127227753Stheravenchar *nl_langinfo_l(nl_item, locale_t); 128227753Stheraven#endif 129227753Stheraven#ifdef _CTYPE_H_ 130227753Stheraven#include <_xlocale_ctype.h> 131227753Stheraven#endif 132227753Stheraven#ifdef _WCTYPE_H_ 133227753Stheraven#define XLOCALE_WCTYPES 1 134227753Stheraven#include <_xlocale_ctype.h> 135227753Stheraven#endif 136227753Stheraven 137227753Stheraven#ifdef _STDIO_H_ 138227753Stheravenint fprintf_l(FILE * __restrict, locale_t, const char * __restrict, ...) 139227753Stheraven __printflike(3, 4); 140227753Stheravenint fscanf_l(FILE * __restrict, locale_t, const char * __restrict, ...) 141227753Stheraven __scanflike(3, 4); 142227753Stheravenint printf_l(locale_t, const char * __restrict, ...) __printflike(2, 3); 143227753Stheravenint scanf_l(locale_t, const char * __restrict, ...) __scanflike(2, 3); 144227753Stheravenint sprintf_l(char * __restrict, locale_t, const char * __restrict, ...) 145227753Stheraven __printflike(3, 4); 146227753Stheravenint sscanf_l(const char * __restrict, locale_t, const char * __restrict, ...) 147227753Stheraven __scanflike(3, 4); 148227753Stheravenint vfprintf_l(FILE * __restrict, locale_t, const char * __restrict, __va_list) 149227753Stheraven __printflike(3, 0); 150227753Stheravenint vprintf_l(locale_t, const char * __restrict, __va_list) __printflike(2, 0); 151227753Stheravenint vsprintf_l(char * __restrict, locale_t, const char * __restrict, __va_list) 152227753Stheraven __printflike(3, 0); 153227753Stheraven 154227753Stheravenint snprintf_l(char * __restrict, size_t, locale_t, const char * __restrict, 155227753Stheraven ...) __printflike(4, 5); 156227753Stheravenint vfscanf_l(FILE * __restrict, locale_t, const char * __restrict, __va_list) 157227753Stheraven __scanflike(3, 0); 158227753Stheravenint vscanf_l(locale_t, const char * __restrict, __va_list) __scanflike(2, 0); 159227753Stheravenint vsnprintf_l(char * __restrict, size_t, locale_t, const char * __restrict, 160227753Stheraven va_list) __printflike(4, 0); 161227753Stheravenint vsscanf_l(const char * __restrict, locale_t, const char * __restrict, 162227753Stheraven va_list) __scanflike(3, 0); 163227753Stheravenint dprintf_l(int, locale_t, const char * __restrict, ...) __printflike(3, 4); 164227753Stheravenint vdprintf_l(int, locale_t, const char * __restrict, __va_list) 165227753Stheraven __printflike(3, 0); 166227753Stheravenint asprintf_l(char **, locale_t, const char *, ...) __printflike(3, 4); 167227753Stheravenint vasprintf_l(char **, locale_t, const char *, __va_list) __printflike(3, 0); 168227753Stheraven#endif 169227753Stheraven#ifdef _WCHAR_H_ 170227753Stheravenwint_t btowc_l(int, locale_t); 171227753Stheravenwint_t fgetwc_l(FILE *, locale_t); 172227753Stheravenwchar_t * 173227753Stheravenfgetws_l(wchar_t * __restrict, int, FILE * __restrict, locale_t); 174227753Stheravenwint_t fputwc_l(wchar_t, FILE *, locale_t); 175227753Stheravenint 176227753Stheravenfputws_l(const wchar_t * __restrict, FILE * __restrict, locale_t); 177227753Stheravenint 178227753Stheravenfwprintf_l(FILE * __restrict, locale_t, const wchar_t * __restrict, 179227753Stheraven ...); 180227753Stheravenint 181227753Stheravenfwscanf_l(FILE * __restrict, locale_t, const wchar_t * __restrict, ...); 182227753Stheravenwint_t getwc_l(FILE *, locale_t); 183227753Stheravenwint_t getwchar_l(locale_t); 184227753Stheravensize_t 185227753Stheravenmbrlen_l(const char * __restrict, size_t, mbstate_t * __restrict, locale_t); 186227753Stheravensize_t 187227753Stheravenmbrtowc_l(wchar_t * __restrict, const char * __restrict, size_t, 188227753Stheraven mbstate_t * __restrict, locale_t); 189227753Stheravenint mbsinit_l(const mbstate_t *, locale_t); 190227753Stheravensize_t 191227753Stheravenmbsrtowcs_l(wchar_t * __restrict, const char ** __restrict, size_t, 192227753Stheraven mbstate_t * __restrict, locale_t); 193227753Stheravenwint_t putwc_l(wchar_t, FILE *, locale_t); 194227753Stheravenwint_t putwchar_l(wchar_t, locale_t); 195227753Stheravenint 196227753Stheravenswprintf_l(wchar_t * __restrict, size_t n, locale_t, 197227753Stheraven const wchar_t * __restrict, ...); 198227753Stheravenint 199227753Stheravenswscanf_l(const wchar_t * __restrict, locale_t, const wchar_t * __restrict, 200227753Stheraven ...); 201227753Stheravenwint_t ungetwc_l(wint_t, FILE *, locale_t); 202227753Stheravenint 203227753Stheravenvfwprintf_l(FILE * __restrict, locale_t, const wchar_t * __restrict, 204227753Stheraven __va_list); 205227753Stheravenint 206227753Stheravenvswprintf_l(wchar_t * __restrict, size_t n, locale_t, 207227753Stheraven const wchar_t * __restrict, __va_list); 208227753Stheravenint vwprintf_l(locale_t, const wchar_t * __restrict, __va_list); 209227753Stheravensize_t 210227753Stheravenwcrtomb_l(char * __restrict, wchar_t, mbstate_t * __restrict, locale_t); 211227753Stheravenint wcscoll_l(const wchar_t *, const wchar_t *, locale_t); 212227753Stheravensize_t 213227753Stheravenwcsftime_l(wchar_t * __restrict, size_t, const wchar_t * __restrict, 214227753Stheraven const struct tm * __restrict, locale_t); 215227753Stheravensize_t 216227753Stheravenwcsrtombs_l(char * __restrict, const wchar_t ** __restrict, size_t, 217227753Stheraven mbstate_t * __restrict, locale_t); 218227753Stheravendouble wcstod_l(const wchar_t * __restrict, wchar_t ** __restrict, locale_t); 219227753Stheravenlong 220227753Stheravenwcstol_l(const wchar_t * __restrict, wchar_t ** __restrict, int, locale_t); 221227753Stheravenunsigned long 222227753Stheravenwcstoul_l(const wchar_t * __restrict, wchar_t ** __restrict, int, locale_t); 223227753Stheravenint wcswidth_l(const wchar_t *, size_t, locale_t); 224227753Stheravensize_t 225227753Stheravenwcsxfrm_l(wchar_t * __restrict, const wchar_t * __restrict, size_t, locale_t); 226227753Stheravenint wctob_l(wint_t, locale_t); 227227753Stheravenint wcwidth_l(wchar_t, locale_t); 228227753Stheravenint wprintf_l(locale_t, const wchar_t * __restrict, ...); 229227753Stheravenint wscanf_l(locale_t, const wchar_t * __restrict, ...); 230227753Stheraven 231227753Stheravenint 232227753Stheravenvfwscanf_l(FILE * __restrict, locale_t, const wchar_t * __restrict, 233227753Stheraven __va_list); 234227753Stheravenint vswscanf_l(const wchar_t * __restrict, locale_t, 235227753Stheravenconst wchar_t *__restrict, __va_list); 236227753Stheravenint vwscanf_l(locale_t, const wchar_t * __restrict, __va_list); 237227753Stheravenfloat wcstof_l(const wchar_t * __restrict, wchar_t ** __restrict, locale_t); 238227753Stheravenlong double 239227753Stheravenwcstold_l(const wchar_t * __restrict, wchar_t ** __restrict, locale_t); 240227753Stheravenlong long 241227753Stheravenwcstoll_l(const wchar_t * __restrict, wchar_t ** __restrict, int, locale_t); 242227753Stheravenunsigned long long 243227753Stheravenwcstoull_l(const wchar_t * __restrict, wchar_t ** __restrict, int, locale_t); 244227753Stheravensize_t 245227753Stheravenmbsnrtowcs_l(wchar_t * __restrict, const char ** __restrict, size_t, size_t, 246227753Stheraven mbstate_t * __restrict, locale_t); 247227753Stheravenint wcscasecmp_l(const wchar_t *, const wchar_t *, locale_t); 248227753Stheravenint wcsncasecmp_l(const wchar_t *, const wchar_t *, size_t, locale_t); 249227753Stheravensize_t 250227753Stheravenwcsnrtombs_l(char * __restrict, const wchar_t ** __restrict, size_t, size_t, 251227753Stheraven mbstate_t * __restrict, locale_t); 252227753Stheraven 253227753Stheraven#endif 254227753Stheraven 255227753Stheravenstruct lconv *localeconv_l(locale_t); 256227753Stheraven__END_DECLS 257227753Stheraven 258227753Stheraven#endif 259