1*b4dd7d09SAndy Fiddaman /* : : generated by cmd/ast/tools/lcgen : : */ 2*b4dd7d09SAndy Fiddaman #pragma prototyped 3*b4dd7d09SAndy Fiddaman 4*b4dd7d09SAndy Fiddaman #ifndef _LC_H 5*b4dd7d09SAndy Fiddaman #define _LC_H 1 6*b4dd7d09SAndy Fiddaman 7*b4dd7d09SAndy Fiddaman #include <ast.h> 8*b4dd7d09SAndy Fiddaman 9*b4dd7d09SAndy Fiddaman #define LC_abbreviated 0x00001 10*b4dd7d09SAndy Fiddaman #define LC_checked 0x00002 11*b4dd7d09SAndy Fiddaman #define LC_debug 0x00004 12*b4dd7d09SAndy Fiddaman #define LC_default 0x00008 13*b4dd7d09SAndy Fiddaman #define LC_defined 0x00010 14*b4dd7d09SAndy Fiddaman #define LC_local 0x00020 15*b4dd7d09SAndy Fiddaman #define LC_primary 0x00040 16*b4dd7d09SAndy Fiddaman #define LC_qualified 0x00080 17*b4dd7d09SAndy Fiddaman #define LC_undefined 0x00100 18*b4dd7d09SAndy Fiddaman #define LC_utf8 0x00200 19*b4dd7d09SAndy Fiddaman #define LC_verbose 0x00400 20*b4dd7d09SAndy Fiddaman #define LC_setlocale 0x10000 21*b4dd7d09SAndy Fiddaman #define LC_setenv 0x20000 22*b4dd7d09SAndy Fiddaman #define LC_user 0x40000 23*b4dd7d09SAndy Fiddaman 24*b4dd7d09SAndy Fiddaman #define LC_language_attribute_max 2 25*b4dd7d09SAndy Fiddaman #define LC_territory_language_max 4 26*b4dd7d09SAndy Fiddaman 27*b4dd7d09SAndy Fiddaman struct Lc_s; 28*b4dd7d09SAndy Fiddaman 29*b4dd7d09SAndy Fiddaman typedef struct Lc_info_s 30*b4dd7d09SAndy Fiddaman { 31*b4dd7d09SAndy Fiddaman const struct Lc_s* lc; 32*b4dd7d09SAndy Fiddaman unsigned long number; 33*b4dd7d09SAndy Fiddaman void* data; 34*b4dd7d09SAndy Fiddaman } Lc_info_t; 35*b4dd7d09SAndy Fiddaman 36*b4dd7d09SAndy Fiddaman typedef struct Lc_attribute_s 37*b4dd7d09SAndy Fiddaman { 38*b4dd7d09SAndy Fiddaman const char* name; 39*b4dd7d09SAndy Fiddaman unsigned long flags; 40*b4dd7d09SAndy Fiddaman unsigned long index; 41*b4dd7d09SAndy Fiddaman } Lc_attribute_t; 42*b4dd7d09SAndy Fiddaman 43*b4dd7d09SAndy Fiddaman typedef struct Lc_charset_s 44*b4dd7d09SAndy Fiddaman { 45*b4dd7d09SAndy Fiddaman const char* code; 46*b4dd7d09SAndy Fiddaman const char* alternates; 47*b4dd7d09SAndy Fiddaman const char* ms; 48*b4dd7d09SAndy Fiddaman unsigned long index; 49*b4dd7d09SAndy Fiddaman } Lc_charset_t; 50*b4dd7d09SAndy Fiddaman 51*b4dd7d09SAndy Fiddaman typedef struct Lc_language_s 52*b4dd7d09SAndy Fiddaman { 53*b4dd7d09SAndy Fiddaman const char* code; 54*b4dd7d09SAndy Fiddaman const char* name; 55*b4dd7d09SAndy Fiddaman const char* alternates; 56*b4dd7d09SAndy Fiddaman const Lc_charset_t* charset; 57*b4dd7d09SAndy Fiddaman unsigned long flags; 58*b4dd7d09SAndy Fiddaman unsigned long index; 59*b4dd7d09SAndy Fiddaman const Lc_attribute_t* attributes[LC_language_attribute_max]; 60*b4dd7d09SAndy Fiddaman } Lc_language_t; 61*b4dd7d09SAndy Fiddaman 62*b4dd7d09SAndy Fiddaman typedef struct Lc_territory_s 63*b4dd7d09SAndy Fiddaman { 64*b4dd7d09SAndy Fiddaman const char* code; 65*b4dd7d09SAndy Fiddaman const char* name; 66*b4dd7d09SAndy Fiddaman unsigned long flags; 67*b4dd7d09SAndy Fiddaman unsigned long index; 68*b4dd7d09SAndy Fiddaman const Lc_language_t* languages[LC_territory_language_max]; 69*b4dd7d09SAndy Fiddaman #ifdef _LC_TERRITORY_PRIVATE_ 70*b4dd7d09SAndy Fiddaman _LC_TERRITORY_PRIVATE_ 71*b4dd7d09SAndy Fiddaman #endif 72*b4dd7d09SAndy Fiddaman } Lc_territory_t; 73*b4dd7d09SAndy Fiddaman 74*b4dd7d09SAndy Fiddaman typedef struct Lc_map_s 75*b4dd7d09SAndy Fiddaman { 76*b4dd7d09SAndy Fiddaman const char* code; 77*b4dd7d09SAndy Fiddaman const Lc_language_t* language; 78*b4dd7d09SAndy Fiddaman const Lc_territory_t* territory; 79*b4dd7d09SAndy Fiddaman const Lc_charset_t* charset; 80*b4dd7d09SAndy Fiddaman const Lc_attribute_t* attribute; 81*b4dd7d09SAndy Fiddaman } Lc_map_t; 82*b4dd7d09SAndy Fiddaman 83*b4dd7d09SAndy Fiddaman typedef struct Lc_attribute_list_s 84*b4dd7d09SAndy Fiddaman { 85*b4dd7d09SAndy Fiddaman struct Lc_attribute_list_s* next; 86*b4dd7d09SAndy Fiddaman const Lc_attribute_t* attribute; 87*b4dd7d09SAndy Fiddaman } Lc_attribute_list_t; 88*b4dd7d09SAndy Fiddaman 89*b4dd7d09SAndy Fiddaman typedef struct Lc_s 90*b4dd7d09SAndy Fiddaman { 91*b4dd7d09SAndy Fiddaman const char* name; 92*b4dd7d09SAndy Fiddaman const char* code; 93*b4dd7d09SAndy Fiddaman const Lc_language_t* language; 94*b4dd7d09SAndy Fiddaman const Lc_territory_t* territory; 95*b4dd7d09SAndy Fiddaman const Lc_charset_t* charset; 96*b4dd7d09SAndy Fiddaman const Lc_attribute_list_t* attributes; 97*b4dd7d09SAndy Fiddaman unsigned long flags; 98*b4dd7d09SAndy Fiddaman unsigned long index; 99*b4dd7d09SAndy Fiddaman #ifdef _LC_PRIVATE_ 100*b4dd7d09SAndy Fiddaman _LC_PRIVATE_ 101*b4dd7d09SAndy Fiddaman #endif 102*b4dd7d09SAndy Fiddaman } Lc_t; 103*b4dd7d09SAndy Fiddaman 104*b4dd7d09SAndy Fiddaman struct Lc_category_s; 105*b4dd7d09SAndy Fiddaman 106*b4dd7d09SAndy Fiddaman typedef int (*Lc_category_set_f)(struct Lc_category_s*); 107*b4dd7d09SAndy Fiddaman 108*b4dd7d09SAndy Fiddaman typedef struct Lc_category_s 109*b4dd7d09SAndy Fiddaman { 110*b4dd7d09SAndy Fiddaman const char* name; 111*b4dd7d09SAndy Fiddaman int external; 112*b4dd7d09SAndy Fiddaman int internal; 113*b4dd7d09SAndy Fiddaman Lc_category_set_f setf; 114*b4dd7d09SAndy Fiddaman Lc_t* prev; 115*b4dd7d09SAndy Fiddaman unsigned int flags; 116*b4dd7d09SAndy Fiddaman } Lc_category_t; 117*b4dd7d09SAndy Fiddaman 118*b4dd7d09SAndy Fiddaman #if _BLD_ast && defined(__EXPORT__) 119*b4dd7d09SAndy Fiddaman #define extern __EXPORT__ 120*b4dd7d09SAndy Fiddaman #endif 121*b4dd7d09SAndy Fiddaman 122*b4dd7d09SAndy Fiddaman extern size_t lccanon(Lc_t*, unsigned long flags, char*, size_t); 123*b4dd7d09SAndy Fiddaman extern Lc_category_t* lccategories(void); 124*b4dd7d09SAndy Fiddaman extern int lcindex(int, int); 125*b4dd7d09SAndy Fiddaman extern Lc_info_t* lcinfo(int); 126*b4dd7d09SAndy Fiddaman extern Lc_t* lcmake(const char*); 127*b4dd7d09SAndy Fiddaman extern Lc_t* lcscan(Lc_t*); 128*b4dd7d09SAndy Fiddaman 129*b4dd7d09SAndy Fiddaman #undef extern 130*b4dd7d09SAndy Fiddaman 131*b4dd7d09SAndy Fiddaman #endif 132