1 /** 2 * \file 3 */ 4 5 #ifndef _MONO_METADATA_CULTURE_INFO_H_ 6 #define _MONO_METADATA_CULTURE_INFO_H_ 1 7 8 #include <glib.h> 9 #include <mono/metadata/object.h> 10 11 #define NUM_DAYS 7 12 #define NUM_MONTHS 13 13 #define GROUP_SIZE 2 14 #define NUM_CALENDARS 4 15 16 #define NUM_SHORT_DATE_PATTERNS 14 17 #define NUM_LONG_DATE_PATTERNS 10 18 #define NUM_SHORT_TIME_PATTERNS 12 19 #define NUM_LONG_TIME_PATTERNS 9 20 #define NUM_YEAR_MONTH_PATTERNS 8 21 22 #define idx2string(idx) (locale_strings + (idx)) 23 #define pattern2string(idx) (patterns + (idx)) 24 #define dtidx2string(idx) (datetime_strings + (idx)) 25 26 /* need to change this if the string data ends up to not fit in a 64KB array. */ 27 typedef guint16 stridx_t; 28 29 typedef struct { 30 const stridx_t month_day_pattern; 31 const stridx_t am_designator; 32 const stridx_t pm_designator; 33 34 const stridx_t day_names [NUM_DAYS]; 35 const stridx_t abbreviated_day_names [NUM_DAYS]; 36 const stridx_t shortest_day_names [NUM_DAYS]; 37 const stridx_t month_names [NUM_MONTHS]; 38 const stridx_t month_genitive_names [NUM_MONTHS]; 39 const stridx_t abbreviated_month_names [NUM_MONTHS]; 40 const stridx_t abbreviated_month_genitive_names [NUM_MONTHS]; 41 42 const gint8 calendar_week_rule; 43 const gint8 first_day_of_week; 44 45 const stridx_t date_separator; 46 const stridx_t time_separator; 47 48 const stridx_t short_date_patterns [NUM_SHORT_DATE_PATTERNS]; 49 const stridx_t long_date_patterns [NUM_LONG_DATE_PATTERNS]; 50 const stridx_t short_time_patterns [NUM_SHORT_TIME_PATTERNS]; 51 const stridx_t long_time_patterns [NUM_LONG_TIME_PATTERNS]; 52 const stridx_t year_month_patterns [NUM_YEAR_MONTH_PATTERNS]; 53 } DateTimeFormatEntry; 54 55 typedef struct { 56 const stridx_t currency_decimal_separator; 57 const stridx_t currency_group_separator; 58 const stridx_t number_decimal_separator; 59 const stridx_t number_group_separator; 60 61 const stridx_t currency_symbol; 62 const stridx_t percent_symbol; 63 const stridx_t nan_symbol; 64 const stridx_t per_mille_symbol; 65 const stridx_t negative_infinity_symbol; 66 const stridx_t positive_infinity_symbol; 67 68 const stridx_t negative_sign; 69 const stridx_t positive_sign; 70 71 const gint8 currency_negative_pattern; 72 const gint8 currency_positive_pattern; 73 const gint8 percent_negative_pattern; 74 const gint8 percent_positive_pattern; 75 const gint8 number_negative_pattern; 76 77 const gint8 currency_decimal_digits; 78 const gint8 number_decimal_digits; 79 80 const gint currency_group_sizes [GROUP_SIZE]; 81 const gint number_group_sizes [GROUP_SIZE]; 82 } NumberFormatEntry; 83 84 typedef struct { 85 const gint ansi; 86 const gint ebcdic; 87 const gint mac; 88 const gint oem; 89 const MonoBoolean is_right_to_left; 90 const char list_sep; 91 } TextInfoEntry; 92 93 typedef struct { 94 const gint16 lcid; 95 const gint16 parent_lcid; 96 const gint16 calendar_type; 97 const gint16 region_entry_index; 98 const stridx_t name; 99 const stridx_t englishname; 100 const stridx_t nativename; 101 const stridx_t win3lang; 102 const stridx_t iso3lang; 103 const stridx_t iso2lang; 104 const stridx_t territory; 105 const stridx_t native_calendar_names [NUM_CALENDARS]; 106 107 const gint16 datetime_format_index; 108 const gint16 number_format_index; 109 110 const TextInfoEntry text_info; 111 } CultureInfoEntry; 112 113 typedef struct { 114 const stridx_t name; 115 const gint16 culture_entry_index; 116 } CultureInfoNameEntry; 117 118 typedef struct { 119 const gint16 geo_id; 120 const stridx_t iso2name; 121 const stridx_t iso3name; 122 const stridx_t win3name; 123 const stridx_t english_name; 124 const stridx_t native_name; 125 const stridx_t currency_symbol; 126 const stridx_t iso_currency_symbol; 127 const stridx_t currency_english_name; 128 const stridx_t currency_native_name; 129 } RegionInfoEntry; 130 131 typedef struct { 132 const stridx_t name; 133 const gint16 region_entry_index; 134 } RegionInfoNameEntry; 135 136 #endif 137 138