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
29extern "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 */
42typedef 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 */
72SAL_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 */
86SAL_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 */
96SAL_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 */
104SAL_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 */
111SAL_DLLPUBLIC rtl_uString * SAL_CALL rtl_locale_getCountry( rtl_Locale * This );
112
113/**
114 Getter for programmatic name of field.
115 @see getDisplayVariant
116 */
117SAL_DLLPUBLIC rtl_uString * SAL_CALL rtl_locale_getVariant( rtl_Locale * This );
118
119/**
120 Returns the hash code of the locale This.
121 */
122SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_locale_hashCode( rtl_Locale * This );
123
124/**
125 Returns true if the locals are equal, otherwis false.
126 */
127SAL_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