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