1 | /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ |
2 | /* |
3 | * This file is part of the LibreOffice project. |
4 | * |
5 | * This Source Code Form is subject to the terms of the Mozilla Public |
6 | * License, v. 2.0. If a copy of the MPL was not distributed with this |
7 | * file, You can obtain one at http://mozilla.org/MPL/2.0/. |
8 | * |
9 | * This file incorporates work covered by the following license notice: |
10 | * |
11 | * Licensed to the Apache Software Foundation (ASF) under one or more |
12 | * contributor license agreements. See the NOTICE file distributed |
13 | * with this work for additional information regarding copyright |
14 | * ownership. The ASF licenses this file to you under the Apache |
15 | * License, Version 2.0 (the "License"); you may not use this file |
16 | * except in compliance with the License. You may obtain a copy of |
17 | * the License at http://www.apache.org/licenses/LICENSE-2.0 . |
18 | */ |
19 | |
20 | #ifndef INCLUDED_RTL_LOCALE_H |
21 | #define INCLUDED_RTL_LOCALE_H |
22 | |
23 | #include <sal/config.h> |
24 | |
25 | #include <rtl/ustring.h> |
26 | #include <sal/saldllapi.h> |
27 | |
28 | #ifdef __cplusplus |
29 | extern "C" { |
30 | #endif |
31 | |
32 | #ifdef SAL_W32 |
33 | # pragma pack(push, 8) |
34 | #endif |
35 | |
36 | /** |
37 | The implementation structur of a locale. Do not create this structure |
38 | direct. Only use the functions rtl_locale_register and |
39 | rtl_locale_setDefault. The strings Language, Country and Variant |
40 | are constants, so it is not necessary to acquire and release them. |
41 | */ |
42 | typedef struct _rtl_Locale |
43 | { |
44 | /** |
45 | Lowercase two-letter ISO 639-1 or three-letter ISO 639-3 code. |
46 | */ |
47 | rtl_uString * Language; |
48 | /** |
49 | uppercase two-letter ISO-3166 code. |
50 | */ |
51 | rtl_uString * Country; |
52 | /** |
53 | Lowercase vendor and browser specific code. |
54 | */ |
55 | rtl_uString * Variant; |
56 | /** |
57 | The merged hash value of the Language, Country and Variant strings. |
58 | */ |
59 | sal_Int32 HashCode; |
60 | } rtl_Locale; |
61 | |
62 | #if defined( SAL_W32) |
63 | #pragma pack(pop) |
64 | #endif |
65 | |
66 | /** |
67 | Register a locale from language, country and variant. |
68 | @param language lowercase two-letter ISO 639-1 or three-letter ISO 639-3 code. |
69 | @param country uppercase two-letter ISO-3166 code. May be null. |
70 | @param variant vendor and browser specific code. May be null. |
71 | */ |
72 | SAL_DLLPUBLIC rtl_Locale * SAL_CALL rtl_locale_register( |
73 | const sal_Unicode * language, const sal_Unicode * country, const sal_Unicode * variant ); |
74 | |
75 | /** |
76 | Common method of getting the current default Locale. |
77 | Used for the presentation: menus, dialogs, etc. |
78 | Generally set once when your applet or application is initialized, |
79 | then never reset. (If you do reset the default locale, you |
80 | probably want to reload your GUI, so that the change is reflected |
81 | in your interface.) |
82 | <p>More advanced programs will allow users to use different locales |
83 | for different fields, e.g. in a spreadsheet. |
84 | <BR>Note that the initial setting will match the host system. |
85 | */ |
86 | SAL_DLLPUBLIC rtl_Locale * SAL_CALL rtl_locale_getDefault(); |
87 | |
88 | /** |
89 | Sets the default. |
90 | Normally set once at the beginning of applet or application, |
91 | then never reset. <code>setDefault</code> does not reset the host locale. |
92 | @param language lowercase two-letter ISO 639-1 or three-letter ISO 639-3 code. |
93 | @param country uppercase two-letter ISO-3166 code. |
94 | @param variant vendor and browser specific code. See class description. |
95 | */ |
96 | SAL_DLLPUBLIC void SAL_CALL rtl_locale_setDefault( |
97 | const sal_Unicode * language, const sal_Unicode * country, const sal_Unicode * variant ); |
98 | |
99 | /** |
100 | Getter for programmatic name of field, |
101 | a lowercased two-letter ISO 639-1 or three-letter ISO 639-3 code. |
102 | @see getDisplayLanguage |
103 | */ |
104 | SAL_DLLPUBLIC rtl_uString * SAL_CALL rtl_locale_getLanguage( rtl_Locale * This ); |
105 | |
106 | /** |
107 | Getter for programmatic name of field, |
108 | an uppercased two-letter ISO-3166 code. |
109 | @see getDisplayCountry |
110 | */ |
111 | SAL_DLLPUBLIC rtl_uString * SAL_CALL rtl_locale_getCountry( rtl_Locale * This ); |
112 | |
113 | /** |
114 | Getter for programmatic name of field. |
115 | @see getDisplayVariant |
116 | */ |
117 | SAL_DLLPUBLIC rtl_uString * SAL_CALL rtl_locale_getVariant( rtl_Locale * This ); |
118 | |
119 | /** |
120 | Returns the hash code of the locale This. |
121 | */ |
122 | SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_locale_hashCode( rtl_Locale * This ); |
123 | |
124 | /** |
125 | Returns true if the locals are equal, otherwis false. |
126 | */ |
127 | SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_locale_equals( rtl_Locale * This, rtl_Locale * obj ); |
128 | |
129 | #ifdef __cplusplus |
130 | } |
131 | #endif |
132 | |
133 | #endif // INCLUDED_RTL_LOCALE_H |
134 | |
135 | |
136 | /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |
137 | |