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 14U_NAMESPACE_BEGIN 15 16Locale LocaleBased::getLocale(ULocDataLocaleType type, UErrorCode& status) const { 17 const char* id = getLocaleID(type, status); 18 return Locale((id != 0) ? id : ""); 19} 20 21const 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 37void 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 48void LocaleBased::setLocaleIDs(const Locale& validID, const Locale& actualID) { 49 uprv_strcpy(valid, validID.getName()); 50 uprv_strcpy(actual, actualID.getName()); 51} 52 53U_NAMESPACE_END 54