Home | History | Annotate | Download | only in common
      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 
     16 Locale LocaleBased::getLocale(ULocDataLocaleType type, UErrorCode& status) const {
     17     const char* id = getLocaleID(type, status);
     18     return Locale((id != 0) ? id : "");
     19 }
     20 
     21 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 
     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 
     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