Chameleon

Chameleon Svn Source Tree

Root/trunk/i386/include/runetype.h

1/*-
2 * Copyright (c) 1993
3 *The Regents of the University of California. All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * Paul Borman at Krystal Technologies.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 * 3. All advertising materials mentioning features or use of this software
17 * must display the following acknowledgement:
18 *This product includes software developed by the University of
19 *California, Berkeley and its contributors.
20 * 4. Neither the name of the University nor the names of its contributors
21 * may be used to endorse or promote products derived from this software
22 * without specific prior written permission.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE.
35 *
36 *@(#)runetype.h8.1 (Berkeley) 6/2/93
37 */
38
39#ifndef_RUNETYPE_H_
40#define_RUNETYPE_H_
41
42#include <_types.h>
43
44#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
45
46#ifndef_SIZE_T
47#define _SIZE_T
48typedef__darwin_size_tsize_t;
49#endif
50
51#ifndef_CT_RUNE_T
52#define _CT_RUNE_T
53typedef__darwin_ct_rune_tct_rune_t;
54#endif
55
56#ifndef_RUNE_T
57#define _RUNE_T
58typedef__darwin_rune_trune_t;
59#endif
60
61#ifndef__cplusplus
62#ifndef_WCHAR_T
63#define_WCHAR_T
64typedef__darwin_wchar_twchar_t;
65#endif/* _WCHAR_T */
66#endif/* __cplusplus */
67
68#ifndef_WINT_T
69#define _WINT_T
70typedef__darwin_wint_twint_t;
71#endif
72
73#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
74
75#define_CACHED_RUNES(1 <<8 )/* Must be a power of 2 */
76#define_CRMASK(~(_CACHED_RUNES - 1))
77
78/*
79 * The lower 8 bits of runetype[] contain the digit value of the rune.
80 */
81typedef struct {
82__darwin_rune_t__min;/* First rune of the range */
83__darwin_rune_t__max;/* Last rune (inclusive) of the range */
84__darwin_rune_t__map;/* What first maps to in maps */
85__uint32_t*__types;/* Array of types in range */
86} _RuneEntry;
87
88typedef struct {
89int__nranges;/* Number of ranges stored */
90_RuneEntry*__ranges;/* Pointer to the ranges */
91} _RuneRange;
92
93typedef struct {
94char__name[14];/* CHARCLASS_NAME_MAX = 14 */
95__uint32_t__mask;/* charclass mask */
96} _RuneCharClass;
97
98typedef struct {
99char__magic[8];/* Magic saying what version we are */
100char__encoding[32];/* ASCII name of this encoding */
101
102__darwin_rune_t(*__sgetrune)(const char *, __darwin_size_t, char const **);
103int(*__sputrune)(__darwin_rune_t, char *, __darwin_size_t, char **);
104__darwin_rune_t__invalid_rune;
105
106__uint32_t__runetype[_CACHED_RUNES];
107__darwin_rune_t__maplower[_CACHED_RUNES];
108__darwin_rune_t__mapupper[_CACHED_RUNES];
109
110/*
111 * The following are to deal with Runes larger than _CACHED_RUNES - 1.
112 * Their data is actually contiguous with this structure so as to make
113 * it easier to read/write from/to disk.
114 */
115_RuneRange__runetype_ext;
116_RuneRange__maplower_ext;
117_RuneRange__mapupper_ext;
118
119void*__variable;/* Data which depends on the encoding */
120int__variable_len;/* how long that data is */
121
122/*
123 * extra fields to deal with arbitrary character classes
124 */
125int__ncharclasses;
126_RuneCharClass*__charclasses;
127} _RuneLocale;
128
129#define_RUNE_MAGIC_A"RuneMagA"/* Indicates version A of RuneLocale */
130
131__BEGIN_DECLS
132extern _RuneLocale _DefaultRuneLocale;
133extern _RuneLocale *_CurrentRuneLocale;
134__END_DECLS
135
136#endif/* !_RUNETYPE_H_ */
137

Archive Download this file

Revision: 2476