]>
Commit | Line | Data |
---|---|---|
1 | // © 2016 and later: Unicode, Inc. and others. | |
2 | // License & terms of use: http://www.unicode.org/copyright.html | |
3 | /* | |
4 | ********************************************************************** | |
5 | * Copyright (c) 2004-2014, International Business Machines | |
6 | * Corporation and others. All Rights Reserved. | |
7 | ********************************************************************** | |
8 | * Author: Alan Liu | |
9 | * Created: January 16 2004 | |
10 | * Since: ICU 2.8 | |
11 | ********************************************************************** | |
12 | */ | |
13 | #include "locbased.h" | |
14 | #include "cstring.h" | |
15 | ||
16 | U_NAMESPACE_BEGIN | |
17 | ||
18 | Locale LocaleBased::getLocale(ULocDataLocaleType type, UErrorCode& status) const { | |
19 | const char* id = getLocaleID(type, status); | |
20 | return Locale((id != 0) ? id : ""); | |
21 | } | |
22 | ||
23 | const char* LocaleBased::getLocaleID(ULocDataLocaleType type, UErrorCode& status) const { | |
24 | if (U_FAILURE(status)) { | |
25 | return NULL; | |
26 | } | |
27 | ||
28 | switch(type) { | |
29 | case ULOC_VALID_LOCALE: | |
30 | return valid; | |
31 | case ULOC_ACTUAL_LOCALE: | |
32 | return actual; | |
33 | default: | |
34 | status = U_ILLEGAL_ARGUMENT_ERROR; | |
35 | return NULL; | |
36 | } | |
37 | } | |
38 | ||
39 | void LocaleBased::setLocaleIDs(const char* validID, const char* actualID) { | |
40 | if (validID != 0) { | |
41 | uprv_strncpy(valid, validID, ULOC_FULLNAME_CAPACITY); | |
42 | valid[ULOC_FULLNAME_CAPACITY-1] = 0; // always terminate | |
43 | } | |
44 | if (actualID != 0) { | |
45 | uprv_strncpy(actual, actualID, ULOC_FULLNAME_CAPACITY); | |
46 | actual[ULOC_FULLNAME_CAPACITY-1] = 0; // always terminate | |
47 | } | |
48 | } | |
49 | ||
50 | void LocaleBased::setLocaleIDs(const Locale& validID, const Locale& actualID) { | |
51 | uprv_strcpy(valid, validID.getName()); | |
52 | uprv_strcpy(actual, actualID.getName()); | |
53 | } | |
54 | ||
55 | U_NAMESPACE_END |