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