/* IBM_PROLOG_BEGIN_TAG                                                   */
/* This is an automatically generated prolog.                             */
/*                                                                        */
/* bos72X src/bos/usr/include/wchar.h 1.13.7.7                            */
/*                                                                        */
/* Licensed Materials - Property of IBM                                   */
/*                                                                        */
/* COPYRIGHT International Business Machines Corp. 1985,2021              */
/* All Rights Reserved                                                    */
/*                                                                        */
/* US Government Users Restricted Rights - Use, duplication or            */
/* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.      */
/*                                                                        */
/* IBM_PROLOG_END_TAG                                                     */
/* @(#)33  1.13.7.7  src/bos/usr/include/wchar.h, libcnls, bos72X, x2021_25A9 6/4/21 03:16:02 */
/*
 * COMPONENT_NAME: (LIBCNLS) Standard C Library National Language Support
 *
 * FUNCTIONS:
 *
 * ORIGINS: 27
 *
 * (C) COPYRIGHT International Business Machines Corp. 1985, 1994
 * All Rights Reserved
 * Licensed Materials - Property of IBM
 *
 * US Government Users Restricted Rights - Use, duplication or
 * disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
 */

#ifndef _H_WCHAR
#define _H_WCHAR

#ifndef _H_STANDARDS
#include <standards.h>
#endif

#include <comp_macros.h>

#include <strict_stdtypes.h>

#ifndef _H_TYPES
#include <sys/types.h>
#endif

#include <end_strict_stdtypes.h>

#ifdef __cplusplus
extern "C" {
#endif

#if defined(_ISOC99_SOURCE) || defined(_XOPEN_SOURCE)

#ifndef _H_STDIO
#include <stdio.h>
#endif

#ifndef _H_TIME
#include <time.h>
#endif

#ifndef WEOF
#define WEOF    (-1)
#endif          /* WEOF */

#ifndef NULL
#define NULL    (0)
#endif

#if _XOPEN_SOURCE >= 500 || defined(_ISOC99_SOURCE)
#ifndef __MBSTATE_T
#define __MBSTATE_T
	typedef char *   mbstate_t;     /* conversion state holder ISO C MSE */
#endif /*__MBSTATE_T*/

#ifndef _WCHAR_MAX
#define _WCHAR_MAX
#ifdef __64BIT__
#define WCHAR_MAX       (4294967295U)
#else
#define WCHAR_MAX       (65535)
#endif
#define WCHAR_MIN       (0)
#endif
#endif /* _XOPEN_SOURCE >= 500 || defined(_ISOC99_SOURCE) */

#endif /* defined(_ISOC99_SOURCE) || defined(_XOPEN_SOURCE) */

#ifndef _LOCALE_T
#define _LOCALE_T
typedef void * locale_t;
#endif

#ifdef _ISOC99_SOURCE

#ifndef _H_STDIO
#include <stdio.h> /* needed for FILE */
#endif

#ifndef _WINT_T
#define _WINT_T
typedef int	wint_t;
#endif

#ifdef _NO_PROTO
extern int	vfwscanf();
extern int	_NOTHROW(vswscanf, ());
extern int	vwscanf();
extern float _NOTHROW(wcstof, ());
#else
extern int	vfwscanf(FILE * __restrict__, const wchar_t * __restrict__, va_list);
extern int	_NOTHROW(vswscanf, (const wchar_t * __restrict__, const wchar_t * __restrict__, va_list));
extern int	vwscanf(const wchar_t * __restrict__, va_list);
extern float _NOTHROW(wcstof, (const wchar_t * __restrict__, wchar_t ** __restrict__));
#endif

/*
 * 64-bit integers, known as long long and unsigned long long
 */
#if defined(_LONG_LONG) 
#ifdef _NO_PROTO
 
extern long long int _NOTHROW(wcstoll, ( ));
extern unsigned long long int _NOTHROW(wcstoull, ( ));
 
#else /* ifdef _NO_PROTO */
 
extern long long int _NOTHROW(wcstoll, (
     const wchar_t * __restrict__,              /* String to convert */
     wchar_t ** __restrict__,           /* Pointer to update */
     int ));                     /* Base to use */
extern unsigned long long int _NOTHROW(wcstoull, (
     const wchar_t * __restrict__,              /* String to convert */
     wchar_t ** __restrict__,           /* Pointer to update */
     int ));                     /* Base to use */
 
#endif /* ifdef _NO_PROTO */
#endif /* if defined(_LONG_LONG) */

#endif /* _ISOC99_SOURCE */


#if defined(_XOPEN_SOURCE) || defined(_ISOC99_SOURCE)

#ifdef	_NO_PROTO

extern wint_t fgetwc();
extern wchar_t *fgetws();
extern wint_t fputwc();
extern int fputws();
extern wint_t getwc();
extern wint_t getwchar();
#if (_XOPEN_SOURCE >= 700) /*SUSv4 routine */
extern FILE *_NOTHROW(open_wmemstream, ());
#endif
#if (!(defined(__H_CTYPE) && defined(_ILS_MACROS)))
extern int _NOTHROW(iswalnum, ());
extern int _NOTHROW(iswalpha, ());
extern int _NOTHROW(iswcntrl, ());
extern int _NOTHROW(iswdigit, ());
extern int _NOTHROW(iswgraph, ());
extern int _NOTHROW(iswlower, ());
extern int _NOTHROW(iswprint, ());
extern int _NOTHROW(iswpunct, ());
extern int _NOTHROW(iswspace, ());
extern int _NOTHROW(iswupper, ());
extern int _NOTHROW(iswxdigit, ());
extern int _NOTHROW(iswctype, ());
extern int _NOTHROW(towlower, ());
extern int _NOTHROW(towupper, ());
#if (_XOPEN_SOURCE >= 700)
extern int _NOTHROW(iswalnum_l, ());
extern int _NOTHROW(iswalpha_l, ());
extern int _NOTHROW(iswcntrl_l, ());
extern int _NOTHROW(iswdigit_l, ());
extern int _NOTHROW(iswgraph_l, ());
extern int _NOTHROW(iswlower_l, ());
extern int _NOTHROW(iswprint_l, ());
extern int _NOTHROW(iswpunct_l, ());
extern int _NOTHROW(iswspace_l, ());
extern int _NOTHROW(iswupper_l, ());
extern int _NOTHROW(iswxdigit_l, ());
extern int _NOTHROW(iswctype_l, ());
extern int _NOTHROW(towlower_l, ());
extern int _NOTHROW(towupper_l, ());
#endif
#endif /* (!(defined(__H_CTYPE) && defined(_ILS_MACROS))) */

extern wint_t putwc();
extern wint_t putwchar();
extern wint_t ungetwc();
extern wctype_t _NOTHROW(wctype, ());
extern wchar_t *_NOTHROW(wcscat, ());
extern wchar_t *_NOTHROW(wcschr, ());
extern int _NOTHROW(wcscmp, ());
extern int _NOTHROW(wcscoll, ());
#if (_XOPEN_SOURCE >= 700)
extern int _NOTHROW(wcscoll_l, ());
#endif
extern wchar_t *_NOTHROW(wcscpy, ());
extern size_t _NOTHROW(wcscspn, ());
extern size_t _NOTHROW(wcsftime, ());
extern size_t _NOTHROW(wcslen, ());
extern wchar_t *_NOTHROW(wcsncat, ());
extern int _NOTHROW(wcsncmp, ());
extern wchar_t *_NOTHROW(wcsncpy, ());
extern wchar_t *_NOTHROW(wcspbrk, ());
extern wchar_t *_NOTHROW(wcsrchr, ());
extern size_t _NOTHROW(wcsspn, ());
extern double _NOTHROW(wcstod, ());
extern wchar_t *_NOTHROW(wcstok, ());
#if defined(_THREAD_SAFE) && defined(_ALL_SOURCE)
extern wchar_t *wcstok_r();
#endif /* _THREAD_SAFE */
extern long _NOTHROW(wcstol, ());
extern unsigned long _NOTHROW(wcstoul, ());
#ifdef _XOPEN_SOURCE
extern wchar_t *_NOTHROW(wcswcs, ());
extern int _NOTHROW(wcswidth, ());
extern int _NOTHROW(wcwidth, ());
#endif /* _XOPEN_SOURCE */
extern size_t _NOTHROW(wcsxfrm, ());
#if (_XOPEN_SOURCE >= 700)
extern size_t _NOTHROW(wcsxfrm_l, ());
#endif
#else

extern wint_t fgetwc(FILE *);
extern wchar_t *fgetws(wchar_t * __restrict__, int, FILE * __restrict__);
extern int fputws(const wchar_t * __restrict__, FILE * __restrict__);
extern wint_t getwc(FILE *);
extern wint_t getwchar(void);
#if (_XOPEN_SOURCE >= 700) /*SUSv4 routine */
extern FILE *_NOTHROW(open_wmemstream, (wchar_t **, size_t *));
#endif 
#if (!(defined(__H_CTYPE) && defined(_ILS_MACROS)))
extern int _NOTHROW(iswalnum, (wint_t));
extern int _NOTHROW(iswalpha, (wint_t));
extern int _NOTHROW(iswcntrl, (wint_t));
extern int _NOTHROW(iswdigit, (wint_t));
extern int _NOTHROW(iswgraph, (wint_t));
extern int _NOTHROW(iswlower, (wint_t));
extern int _NOTHROW(iswprint, (wint_t));
extern int _NOTHROW(iswpunct, (wint_t));
extern int _NOTHROW(iswspace, (wint_t));
extern int _NOTHROW(iswupper, (wint_t));
extern int _NOTHROW(iswxdigit, (wint_t));
extern int _NOTHROW(iswctype, (wint_t, wctype_t));
extern int _NOTHROW(towlower, (wint_t));
extern int _NOTHROW(towupper, (wint_t));
#if (_XOPEN_SOURCE >= 700)
extern int _NOTHROW(iswalnum_l, (wint_t, locale_t));
extern int _NOTHROW(iswalpha_l, (wint_t, locale_t));
extern int _NOTHROW(iswcntrl_l, (wint_t, locale_t));
extern int _NOTHROW(iswdigit_l, (wint_t, locale_t));
extern int _NOTHROW(iswgraph_l, (wint_t, locale_t));
extern int _NOTHROW(iswlower_l, (wint_t, locale_t));
extern int _NOTHROW(iswprint_l, (wint_t, locale_t));
extern int _NOTHROW(iswpunct_l, (wint_t, locale_t));
extern int _NOTHROW(iswspace_l, (wint_t, locale_t));
extern int _NOTHROW(iswupper_l, (wint_t, locale_t));
extern int _NOTHROW(iswxdigit_l, (wint_t, locale_t));
extern int _NOTHROW(iswctype_l, (wint_t, wctype_t, locale_t));
extern int _NOTHROW(towlower_l, (wint_t, locale_t));
extern int _NOTHROW(towupper_l, (wint_t, locale_t));
#endif
#endif /* (!(defined(__H_CTYPE) && defined(_ILS_MACROS))) */

#if (_XOPEN_SOURCE >= 500) || defined(_ISOC99_SOURCE)
extern wint_t fputwc(wchar_t, FILE *);
extern wint_t putwc(wchar_t, FILE *);
extern wint_t putwchar(wchar_t);
#else
extern wint_t fputwc(wint_t, FILE *);
extern wint_t putwc(wint_t, FILE *);
extern wint_t putwchar(wint_t);
#endif /* _XOPEN_SOURCE >= 500 || defined(_ISOC99_SOURCE) */
#ifdef __cplusplus98__interface__
extern const wchar_t *_NOTHROW(wcschr, (const wchar_t *,  wchar_t));
extern wchar_t *_NOTHROW(wcschr, (      wchar_t *,  wchar_t));
#else
extern wchar_t *_NOTHROW(wcschr, (const wchar_t *,  wchar_t));
#endif
extern wint_t ungetwc(wint_t, FILE *);
extern wctype_t _NOTHROW(wctype, (const char*));
extern wchar_t *_NOTHROW(wcscat, (wchar_t * __restrict__, const wchar_t *__restrict__));
extern int _NOTHROW(wcscmp, (const wchar_t *, const wchar_t *));
extern int _NOTHROW(wcscoll, (const wchar_t *, const wchar_t *));
#if (_XOPEN_SOURCE >= 700)
extern int _NOTHROW(wcscoll_l, (const wchar_t *, const wchar_t *, locale_t));
#endif
extern wchar_t *_NOTHROW(wcscpy, (wchar_t * __restrict__, const wchar_t * __restrict__));
extern size_t _NOTHROW(wcscspn, (const wchar_t *, const wchar_t *));
#if ((_XOPEN_SOURCE >= 500) || defined(_ISOC99_SOURCE)) && !defined(_UNIX95)
static size_t _NOTHROW(wcsftime, (wchar_t *__wcsftime_wcs, size_t __wcsftime_maxsize,
	 const wchar_t *__wcsftime_format,
	 const struct tm *__wcsftime_timptr))
{
    extern size_t __iso_wcsftime(wchar_t *, size_t, const wchar_t *,
				 const struct tm *);
    return __iso_wcsftime(__wcsftime_wcs, __wcsftime_maxsize, __wcsftime_format,
			  __wcsftime_timptr);
}
#else /* _XOPEN_SOURCE */
extern size_t _NOTHROW(wcsftime, (wchar_t * __restrict__, size_t, const char * __restrict__, const struct tm * __restrict__));
#endif /* _XOPEN_SOURCE */
#ifdef __cplusplus98__interface__
extern const wchar_t *_NOTHROW(wcspbrk, (const wchar_t *, const wchar_t *));
extern wchar_t *_NOTHROW(wcspbrk, (     wchar_t *,      wchar_t *));
extern const wchar_t *_NOTHROW(wcsrchr, (const wchar_t *, wchar_t));
extern wchar_t *_NOTHROW(wcsrchr, (      wchar_t *, wchar_t));
#else
extern wchar_t *_NOTHROW(wcspbrk, (const wchar_t *, const wchar_t *));
extern wchar_t *_NOTHROW(wcsrchr, (const wchar_t *, wchar_t));
#endif
extern size_t _NOTHROW(wcslen, (const wchar_t *));
extern wchar_t *_NOTHROW(wcsncat, (wchar_t * __restrict__, const wchar_t * __restrict__, size_t));
extern int _NOTHROW(wcsncmp, (const wchar_t *, const wchar_t *, size_t));
extern wchar_t *_NOTHROW(wcsncpy, (wchar_t * __restrict__, const wchar_t * __restrict__, size_t));
extern size_t _NOTHROW(wcsspn, (const wchar_t *, const wchar_t *));
extern double _NOTHROW(wcstod, (const wchar_t * __restrict__, wchar_t ** __restrict__));
#if ((_XOPEN_SOURCE >= 500) || defined(_ISOC99_SOURCE)) && !defined(_UNIX95)
static wchar_t *_NOTHROW(wcstok, (wchar_t *__wcstok_ws1, const wchar_t *__wcstok_ws2,
		       wchar_t **__wcstok_ptr))
{
    extern wchar_t *__iso_wcstok(wchar_t *, const wchar_t *, wchar_t **);
    return __iso_wcstok(__wcstok_ws1, __wcstok_ws2, __wcstok_ptr);
}
#else /* _XOPEN_SOURCE */
extern wchar_t *_NOTHROW(wcstok, (wchar_t * __restrict__, const wchar_t * __restrict__));
#endif /* _XOPEN_SOURCE */
#if defined(_THREAD_SAFE) && defined(_ALL_SOURCE)
extern wchar_t *wcstok_r(wchar_t *, const wchar_t *, wchar_t **);
#endif /* _THREAD_SAFE */
extern long _NOTHROW(wcstol, (const wchar_t * __restrict__, wchar_t ** __restrict__, int));
extern unsigned long _NOTHROW(wcstoul, (const wchar_t * __restrict__, wchar_t ** __restrict__, int));
#ifdef _XOPEN_SOURCE
extern wchar_t *_NOTHROW(wcswcs, (const wchar_t *, const wchar_t *));
extern int _NOTHROW(wcswidth, (const wchar_t *, size_t));
extern int _NOTHROW(wcwidth, (wchar_t));
#endif /* _XOPEN_SOURCE */
extern size_t _NOTHROW(wcsxfrm, (wchar_t * __restrict__, const wchar_t * __restrict__, size_t));

#if _XOPEN_SOURCE >= 700
extern size_t _NOTHROW(wcsxfrm_l, (wchar_t * __restrict__, const wchar_t * __restrict__, size_t, locale_t));
#endif

#if _XOPEN_SOURCE >= 500 || defined(_ISOC99_SOURCE)
extern wint_t _NOTHROW(btowc, (int));
extern int fwprintf(FILE * __restrict__, const wchar_t * __restrict__, ...);
extern int fwscanf(FILE * __restrict__, const wchar_t * __restrict__, ...);
extern int _NOTHROW(fwide, (FILE *, int));
extern int _NOTHROW(mbsinit, (const mbstate_t *));
extern size_t _NOTHROW(mbrlen, (const char * __restrict__, size_t, mbstate_t *__restrict__));
extern size_t _NOTHROW(mbrtowc, (wchar_t * __restrict__, const char * __restrict__, size_t, mbstate_t * __restrict__));
extern size_t _NOTHROW(mbsrtowcs, (wchar_t * __restrict__, const char ** __restrict__, size_t, mbstate_t * __restrict__));
extern int swprintf(wchar_t * __restrict__, size_t, const wchar_t * __restrict__, ...);
extern int swscanf(const wchar_t * __restrict__, const wchar_t * __restrict__, ...);
#ifdef _VA_LIST
extern int vfwprintf(FILE * __restrict__, const wchar_t * __restrict__, va_list);
extern int vwprintf(const wchar_t * __restrict__, va_list);
extern int _NOTHROW(vswprintf, (wchar_t * __restrict__, size_t, const wchar_t * __restrict__, va_list));
#else
#define _HIDDEN_VA_LIST
#include <va_list.h>
extern int vfwprintf(FILE * __restrict__, const wchar_t * __restrict__, __va_list);
extern int vwprintf(const wchar_t * __restrict__, __va_list);
extern int _NOTHROW(vswprintf, (wchar_t * __restrict__, size_t, const wchar_t * __restrict__, __va_list));
#endif /* _VA_LIST */
#ifdef __cplusplus98__interface__
extern const wchar_t * wcsstr(const wchar_t *, const wchar_t *);
extern wchar_t *wcsstr(      wchar_t *,      wchar_t *);
extern const wchar_t * wmemchr(const wchar_t *, wchar_t, size_t);
extern wchar_t *wmemchr(      wchar_t *, wchar_t, size_t);
#else
extern wchar_t *wcsstr(const wchar_t *, const wchar_t *);
extern wchar_t *wmemchr(const wchar_t *, wchar_t, size_t);
#endif 
extern size_t _NOTHROW(wcrtomb, (char * __restrict__, wchar_t, mbstate_t *  __restrict__));
extern size_t _NOTHROW(wcsrtombs, (char * __restrict__, const wchar_t ** __restrict__, size_t, mbstate_t * __restrict__));
extern int _NOTHROW(wctob, (wint_t));
extern wctype_t _NOTHROW(wctype, (const char *));
extern int _NOTHROW(wmemcmp, (const wchar_t *, const wchar_t *, size_t)); 
extern wchar_t *_NOTHROW(wmemcpy, (wchar_t * __restrict__, const wchar_t * __restrict__, size_t)); 
extern wchar_t *_NOTHROW(wmemmove, (wchar_t *, const wchar_t *, size_t)); 
extern wchar_t *_NOTHROW(wmemset, (wchar_t *, wchar_t, size_t)); 
extern int wprintf(const wchar_t * __restrict__, ...);
extern int wscanf(const wchar_t * __restrict__, ...);
#endif

#endif	/* _NO_PROTO	*/

#endif	/* _XOPEN_SOURCE  || defined (ISOC99_SOURCE) */



#if (_XOPEN_SOURCE >= 700)
#ifdef  _NO_PROTO
extern int _NOTHROW(wcscasecmp, ());
extern int _NOTHROW(wcscasecmp_l, ());
extern wchar_t *_NOTHROW(wcsdup, ());
extern int _NOTHROW(wcsncasecmp, ());
extern int _NOTHROW(wcsncasecmp_l, ());
extern size_t _NOTHROW(wcsnlen, ());
extern size_t _NOTHROW(mbsnrtowcs, ());
extern wchar_t *_NOTHROW(wcpcpy, ());
extern wchar_t *_NOTHROW(wcpncpy, ());
#else 
extern int _NOTHROW(wcscasecmp, (const wchar_t *, const wchar_t *));
extern int _NOTHROW(wcscasecmp_l, (const wchar_t *, const wchar_t *, locale_t));
extern wchar_t *_NOTHROW(wcsdup, (const wchar_t *));
extern int _NOTHROW(wcsncasecmp, (const wchar_t *, const wchar_t *, size_t));
extern int _NOTHROW(wcsncasecmp_l, (const wchar_t *, const wchar_t *, size_t, locale_t));
extern size_t _NOTHROW(wcsnlen, (const wchar_t *, size_t));
extern size_t _NOTHROW(mbsnrtowcs, (wchar_t *, const char **, size_t, size_t, mbstate_t *));
extern wchar_t *_NOTHROW(wcpcpy, (wchar_t *, const wchar_t *));
extern wchar_t *_NOTHROW(wcpncpy, (wchar_t *, const wchar_t *, size_t));
#endif  /* _NO_PROTO    */
#endif /* _XOPEN_SOURCE */



#ifdef _ISOC99_SOURCE
#ifndef _WCSTOLD
#define _WCSTOLD
#if defined(__LONGDOUBLE128) || defined(__LONGDOUBLE80)
#ifdef _NO_PROTO
extern long double _NOTHROW(wcstold, ());
#else
extern long double _NOTHROW(wcstold, (const wchar_t * __restrict__, wchar_t ** __restrict__));
#endif /* NO_PROTO */
#else
static long double _NOTHROW(wcstold, (const wchar_t * __restrict__ __a, wchar_t ** __restrict__ __b)) {
	return ((long double)wcstod (__a, __b));
}
#endif /* defined(__LONGDOUBLE128) || defined(__LONGDOUBLE80) */
#endif /* _WCSTOLD */
#endif /* _ISOC99_SOURCE */

/* Defect  1081697 : UNIXv7 support for wcsnrtombs() */
#if defined(_ALL_SOURCE) || (_XOPEN_SOURCE >= 700)
#ifdef _NO_PROTO
	extern size_t _NOTHROW(wcsnrtombs, ()); 
#else /* NO PROTO */
	extern size_t _NOTHROW(wcsnrtombs, (char *, const wchar_t **, size_t, size_t, mbstate_t *));
#endif /*NO PROTO */
#endif /* _XOPEN_SOURCE */   


#ifdef _ALL_SOURCE

#define getwchar()	getwc(stdin)

#ifdef	_NO_PROTO
extern wchar_t *getws();
extern int putws();
extern int wsprintf();
extern int vwsprintf();
#else
extern wchar_t *getws(wchar_t *);
extern int putws(const wchar_t *);
extern int wsprintf(wchar_t *, const char *, ...);
#ifdef _VA_LIST
extern int vwsprintf(wchar_t *, const char *, va_list);
#else
#define _HIDDEN_VA_LIST
#include <va_list.h>
extern int vwsprintf(wchar_t *, const char *, __va_list);
#endif /* _VA_LIST */

#endif /* _NO_PROTO */

extern wchar_t *strtows(wchar_t *, char *);
extern char    *wstrtos(char *, wchar_t *);

#ifndef __ia64
#define wstrcat NCstrcat
#define wstrlen NCstrlen
#define wstrdup NCstrdup
#define wstrncat NCstrncat
#define wstrcmp NCstrcmp
#define wstrncmp NCstrncmp
#define wstrcpy NCstrcpy
#define wstrncpy NCstrncpy
#endif

#endif /* _ALL_SOURCE */

#ifdef __STDC_WANT_DEC_FP__     /* DFP scope requested */

#ifdef _NO_PROTO
	extern _Decimal32 wcstod32();
	extern _Decimal64 wcstod64();
	extern _Decimal128 wcstod128();
#else
	extern _Decimal32 wcstod32(const wchar_t *, wchar_t **);
	extern _Decimal64 wcstod64(const wchar_t *, wchar_t **);
	extern _Decimal128 wcstod128(const wchar_t *, wchar_t **);
#endif /* _NO_PROTO */

#endif /* __STDC_WANT_DEC_FP__ */

#ifdef __cplusplus
}
#endif

#endif /* _H_WCHAR */

