123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- // © 2016 and later: Unicode, Inc. and others.
- // License & terms of use: http://www.unicode.org/copyright.html
- /*
- **********************************************************************
- * Copyright (c) 2004-2014, International Business Machines
- * Corporation and others. All Rights Reserved.
- **********************************************************************
- * Author: Alan Liu
- * Created: January 16 2004
- * Since: ICU 2.8
- **********************************************************************
- */
- #ifndef LOCBASED_H
- #define LOCBASED_H
- #include "unicode/locid.h"
- #include "unicode/uobject.h"
- /**
- * Macro to declare a locale LocaleBased wrapper object for the given
- * object, which must have two members named `validLocale' and
- * `actualLocale' of size ULOC_FULLNAME_CAPACITY
- */
- #define U_LOCALE_BASED(varname, objname) \
- LocaleBased varname((objname).validLocale, (objname).actualLocale)
- U_NAMESPACE_BEGIN
- /**
- * A utility class that unifies the implementation of getLocale() by
- * various ICU services. This class is likely to be removed in the
- * ICU 3.0 time frame in favor of an integrated approach with the
- * services framework.
- * @since ICU 2.8
- */
- class U_COMMON_API LocaleBased : public UMemory {
- public:
- /**
- * Construct a LocaleBased wrapper around the two pointers. These
- * will be aliased for the lifetime of this object.
- */
- inline LocaleBased(char* validAlias, char* actualAlias);
- /**
- * Construct a LocaleBased wrapper around the two const pointers.
- * These will be aliased for the lifetime of this object.
- */
- inline LocaleBased(const char* validAlias, const char* actualAlias);
- /**
- * Return locale meta-data for the service object wrapped by this
- * object. Either the valid or the actual locale may be
- * retrieved.
- * @param type either ULOC_VALID_LOCALE or ULOC_ACTUAL_LOCALE
- * @param status input-output error code
- * @return the indicated locale
- */
- Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const;
- /**
- * Return the locale ID for the service object wrapped by this
- * object. Either the valid or the actual locale may be
- * retrieved.
- * @param type either ULOC_VALID_LOCALE or ULOC_ACTUAL_LOCALE
- * @param status input-output error code
- * @return the indicated locale ID
- */
- const char* getLocaleID(ULocDataLocaleType type, UErrorCode& status) const;
- /**
- * Set the locale meta-data for the service object wrapped by this
- * object. If either parameter is zero, it is ignored.
- * @param valid the ID of the valid locale
- * @param actual the ID of the actual locale
- */
- void setLocaleIDs(const char* valid, const char* actual);
- /**
- * Set the locale meta-data for the service object wrapped by this
- * object.
- * @param valid the ID of the valid locale
- * @param actual the ID of the actual locale
- */
- void setLocaleIDs(const Locale& valid, const Locale& actual);
- private:
- char* valid;
-
- char* actual;
- };
- inline LocaleBased::LocaleBased(char* validAlias, char* actualAlias) :
- valid(validAlias), actual(actualAlias) {
- }
- inline LocaleBased::LocaleBased(const char* validAlias,
- const char* actualAlias) :
- // ugh: cast away const
- valid((char*)validAlias), actual((char*)actualAlias) {
- }
- U_NAMESPACE_END
- #endif
|