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