1*4887Schin /*********************************************************************** 2*4887Schin * * 3*4887Schin * This software is part of the ast package * 4*4887Schin * Copyright (c) 1985-2007 AT&T Knowledge Ventures * 5*4887Schin * and is licensed under the * 6*4887Schin * Common Public License, Version 1.0 * 7*4887Schin * by AT&T Knowledge Ventures * 8*4887Schin * * 9*4887Schin * A copy of the License is available at * 10*4887Schin * http://www.opensource.org/licenses/cpl1.0.txt * 11*4887Schin * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * 12*4887Schin * * 13*4887Schin * Information and Software Systems Research * 14*4887Schin * AT&T Research * 15*4887Schin * Florham Park NJ * 16*4887Schin * * 17*4887Schin * Glenn Fowler <gsf@research.att.com> * 18*4887Schin * David Korn <dgk@research.att.com> * 19*4887Schin * Phong Vo <kpv@research.att.com> * 20*4887Schin * * 21*4887Schin ***********************************************************************/ 22*4887Schin 23*4887Schin /* : : generated by proto : : */ 24*4887Schin /* : : generated by ./lcgen : : */ 25*4887Schin 26*4887Schin 27*4887Schin #ifndef _LC_H 28*4887Schin #if !defined(__PROTO__) 29*4887Schin #include <prototyped.h> 30*4887Schin #endif 31*4887Schin #if !defined(__LINKAGE__) 32*4887Schin #define __LINKAGE__ /* 2004-08-11 transition */ 33*4887Schin #endif 34*4887Schin 35*4887Schin #define _LC_H 1 36*4887Schin 37*4887Schin #include <ast.h> 38*4887Schin 39*4887Schin #define LC_abbreviated 0x00001 40*4887Schin #define LC_checked 0x00002 41*4887Schin #define LC_default 0x00004 42*4887Schin #define LC_defined 0x00008 43*4887Schin #define LC_debug 0x00010 44*4887Schin #define LC_local 0x00020 45*4887Schin #define LC_primary 0x00040 46*4887Schin #define LC_qualified 0x00080 47*4887Schin #define LC_undefined 0x00100 48*4887Schin #define LC_verbose 0x00200 49*4887Schin #define LC_user 0x10000 50*4887Schin #define LC_language_attribute_max 2 51*4887Schin #define LC_territory_language_max 4 52*4887Schin 53*4887Schin struct Lc_s; 54*4887Schin 55*4887Schin typedef struct Lc_info_s 56*4887Schin { 57*4887Schin const struct Lc_s* lc; 58*4887Schin unsigned long number; 59*4887Schin __V_* data; 60*4887Schin } Lc_info_t; 61*4887Schin 62*4887Schin typedef struct Lc_attribute_s 63*4887Schin { 64*4887Schin const char* name; 65*4887Schin unsigned long flags; 66*4887Schin unsigned long index; 67*4887Schin } Lc_attribute_t; 68*4887Schin 69*4887Schin typedef struct Lc_charset_s 70*4887Schin { 71*4887Schin const char* code; 72*4887Schin const char* alternates; 73*4887Schin const char* ms; 74*4887Schin unsigned long index; 75*4887Schin } Lc_charset_t; 76*4887Schin 77*4887Schin typedef struct Lc_language_s 78*4887Schin { 79*4887Schin const char* code; 80*4887Schin const char* name; 81*4887Schin const char* alternates; 82*4887Schin const Lc_charset_t* charset; 83*4887Schin unsigned long flags; 84*4887Schin unsigned long index; 85*4887Schin const Lc_attribute_t* attributes[LC_language_attribute_max]; 86*4887Schin } Lc_language_t; 87*4887Schin 88*4887Schin typedef struct Lc_territory_s 89*4887Schin { 90*4887Schin const char* code; 91*4887Schin const char* name; 92*4887Schin unsigned long flags; 93*4887Schin unsigned long index; 94*4887Schin const Lc_language_t* languages[LC_territory_language_max]; 95*4887Schin #ifdef _LC_TERRITORY_PRIVATE_ 96*4887Schin _LC_TERRITORY_PRIVATE_ 97*4887Schin #endif 98*4887Schin } Lc_territory_t; 99*4887Schin 100*4887Schin typedef struct Lc_map_s 101*4887Schin { 102*4887Schin const char* code; 103*4887Schin const Lc_language_t* language; 104*4887Schin const Lc_territory_t* territory; 105*4887Schin const Lc_charset_t* charset; 106*4887Schin const Lc_attribute_t* attribute; 107*4887Schin } Lc_map_t; 108*4887Schin 109*4887Schin typedef struct Lc_attribute_list_s 110*4887Schin { 111*4887Schin struct Lc_attribute_list_s* next; 112*4887Schin const Lc_attribute_t* attribute; 113*4887Schin } Lc_attribute_list_t; 114*4887Schin 115*4887Schin typedef struct Lc_s 116*4887Schin { 117*4887Schin const char* name; 118*4887Schin const char* code; 119*4887Schin const Lc_language_t* language; 120*4887Schin const Lc_territory_t* territory; 121*4887Schin const Lc_charset_t* charset; 122*4887Schin const Lc_attribute_list_t* attributes; 123*4887Schin unsigned long flags; 124*4887Schin unsigned long index; 125*4887Schin #ifdef _LC_PRIVATE_ 126*4887Schin _LC_PRIVATE_ 127*4887Schin #endif 128*4887Schin } Lc_t; 129*4887Schin 130*4887Schin struct Lc_category_s; 131*4887Schin 132*4887Schin typedef int (*Lc_category_set_f) __PROTO__((struct Lc_category_s*)); 133*4887Schin 134*4887Schin typedef struct Lc_category_s 135*4887Schin { 136*4887Schin const char* name; 137*4887Schin int external; 138*4887Schin int internal; 139*4887Schin Lc_category_set_f setf; 140*4887Schin Lc_t* prev; 141*4887Schin } Lc_category_t; 142*4887Schin 143*4887Schin #if _BLD_ast && defined(__EXPORT__) 144*4887Schin #undef __MANGLE__ 145*4887Schin #define __MANGLE__ __LINKAGE__ __EXPORT__ 146*4887Schin #endif 147*4887Schin 148*4887Schin extern __MANGLE__ size_t lccanon __PROTO__((Lc_t*, unsigned long flags, char*, size_t)); 149*4887Schin extern __MANGLE__ Lc_category_t* lccategories __PROTO__((void)); 150*4887Schin extern __MANGLE__ int lcindex __PROTO__((int, int)); 151*4887Schin extern __MANGLE__ Lc_info_t* lcinfo __PROTO__((int)); 152*4887Schin extern __MANGLE__ Lc_t* lcmake __PROTO__((const char*)); 153*4887Schin extern __MANGLE__ Lc_t* lcscan __PROTO__((Lc_t*)); 154*4887Schin 155*4887Schin #undef __MANGLE__ 156*4887Schin #define __MANGLE__ __LINKAGE__ 157*4887Schin 158*4887Schin #endif 159