X-Git-Url: https://git.saurik.com/apple/libc.git/blobdiff_plain/5b2abdfbf4211b6592cdd02b9507555a0ecbb04b..fbd86d4cc20b02a10edcca92fb7ae0a143e63cc4:/include/runetype.h diff --git a/include/runetype.h b/include/runetype.h index 84ce83f..fd16b82 100644 --- a/include/runetype.h +++ b/include/runetype.h @@ -39,24 +39,39 @@ #ifndef _RUNETYPE_H_ #define _RUNETYPE_H_ -#include -#include +#include <_types.h> -#ifndef _BSD_RUNE_T_DEFINED_ -#define _BSD_RUNE_T_DEFINED_ -typedef _BSD_RUNE_T_ rune_t; +#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) + +#ifndef _SIZE_T +#define _SIZE_T +typedef __darwin_size_t size_t; #endif -#ifndef _BSD_SIZE_T_DEFINED_ -#define _BSD_SIZE_T_DEFINED_ -typedef _BSD_SIZE_T_ size_t; +#ifndef _CT_RUNE_T +#define _CT_RUNE_T +typedef __darwin_ct_rune_t ct_rune_t; #endif -#ifndef _BSD_WCHAR_T_DEFINED_ -#define _BSD_WCHAR_T_DEFINED_ -typedef _BSD_WCHAR_T_ wchar_t; +#ifndef _RUNE_T +#define _RUNE_T +typedef __darwin_rune_t rune_t; #endif +#ifndef __cplusplus +#ifndef _WCHAR_T +#define _WCHAR_T +typedef __darwin_wchar_t wchar_t; +#endif /* _WCHAR_T */ +#endif /* __cplusplus */ + +#ifndef _WINT_T +#define _WINT_T +typedef __darwin_wint_t wint_t; +#endif + +#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */ + #define _CACHED_RUNES (1 <<8 ) /* Must be a power of 2 */ #define _CRMASK (~(_CACHED_RUNES - 1)) @@ -64,47 +79,58 @@ typedef _BSD_WCHAR_T_ wchar_t; * The lower 8 bits of runetype[] contain the digit value of the rune. */ typedef struct { - rune_t min; /* First rune of the range */ - rune_t max; /* Last rune (inclusive) of the range */ - rune_t map; /* What first maps to in maps */ - unsigned long *types; /* Array of types in range */ + __darwin_rune_t __min; /* First rune of the range */ + __darwin_rune_t __max; /* Last rune (inclusive) of the range */ + __darwin_rune_t __map; /* What first maps to in maps */ + __uint32_t *__types; /* Array of types in range */ } _RuneEntry; typedef struct { - int nranges; /* Number of ranges stored */ - _RuneEntry *ranges; /* Pointer to the ranges */ + int __nranges; /* Number of ranges stored */ + _RuneEntry *__ranges; /* Pointer to the ranges */ } _RuneRange; typedef struct { - char magic[8]; /* Magic saying what version we are */ - char encoding[32]; /* ASCII name of this encoding */ + char __name[14]; /* CHARCLASS_NAME_MAX = 14 */ + __uint32_t __mask; /* charclass mask */ +} _RuneCharClass; - rune_t (*sgetrune) - __P((const char *, size_t, char const **)); - int (*sputrune) - __P((rune_t, char *, size_t, char **)); - rune_t invalid_rune; +typedef struct { + char __magic[8]; /* Magic saying what version we are */ + char __encoding[32]; /* ASCII name of this encoding */ + + __darwin_rune_t (*__sgetrune)(const char *, __darwin_size_t, char const **); + int (*__sputrune)(__darwin_rune_t, char *, __darwin_size_t, char **); + __darwin_rune_t __invalid_rune; - unsigned long runetype[_CACHED_RUNES]; - rune_t maplower[_CACHED_RUNES]; - rune_t mapupper[_CACHED_RUNES]; + __uint32_t __runetype[_CACHED_RUNES]; + __darwin_rune_t __maplower[_CACHED_RUNES]; + __darwin_rune_t __mapupper[_CACHED_RUNES]; /* * The following are to deal with Runes larger than _CACHED_RUNES - 1. * Their data is actually contiguous with this structure so as to make * it easier to read/write from/to disk. */ - _RuneRange runetype_ext; - _RuneRange maplower_ext; - _RuneRange mapupper_ext; + _RuneRange __runetype_ext; + _RuneRange __maplower_ext; + _RuneRange __mapupper_ext; + + void *__variable; /* Data which depends on the encoding */ + int __variable_len; /* how long that data is */ - void *variable; /* Data which depends on the encoding */ - int variable_len; /* how long that data is */ + /* + * extra fields to deal with arbitrary character classes + */ + int __ncharclasses; + _RuneCharClass *__charclasses; } _RuneLocale; -#define _RUNE_MAGIC_1 "RuneMagi" /* Indicates version 0 of RuneLocale */ +#define _RUNE_MAGIC_A "RuneMagA" /* Indicates version A of RuneLocale */ +__BEGIN_DECLS extern _RuneLocale _DefaultRuneLocale; extern _RuneLocale *_CurrentRuneLocale; +__END_DECLS #endif /* !_RUNETYPE_H_ */