ICU 76.1: icu::Region Class Reference

ICU 76.1 76.1

Public Member Functions | Static Public Member Functions
icu::Region Class Reference

`Region` is the class representing a Unicode Region Code, also known as a Unicode Region Subtag, which is defined based upon the BCP 47 standard. More...

`#include <region.h>`

Inheritance diagram for icu::Region:

## Public Member Functions
virtual | ~Region ()
| Destructor.
bool | operator== (const Region &that) const
| Returns true if the two regions are equal.
bool | operator!= (const Region &that) const
| Returns true if the two regions are NOT equal; that is, if operator ==() returns false.
const Region * | getContainingRegion () const
| Returns a pointer to the region that contains this region.
const Region * | getContainingRegion (URegionType type) const
| Return a pointer to the region that geographically contains this region and matches the given type, moving multiple steps up the containment chain if necessary.
StringEnumeration * | getContainedRegions (UErrorCode &status) const
| Return an enumeration over the IDs of all the regions that are immediate children of this region in the region hierarchy.
StringEnumeration * | getContainedRegions (URegionType type, UErrorCode &status) const
| Returns an enumeration over the IDs of all the regions that are children of this region anywhere in the region hierarchy and match the given type.
UBool | contains (const Region &other) const
| Returns true if this region contains the supplied other region anywhere in the region hierarchy.
StringEnumeration * | getPreferredValues (UErrorCode &status) const
| For deprecated regions, return an enumeration over the IDs of the regions that are the preferred replacement regions for this region.
const char * | getRegionCode () const
| Return this region's canonical region code.
int32_t | getNumericCode () const
| Return this region's numeric code.
URegionType | getType () const
| Returns the region type of this region.
Public Member Functions inherited from icu::UObject
virtual | ~UObject ()
| Destructor.
virtual UClassID | getDynamicClassID () const
| ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class.

## Static Public Member Functions
static const Region * | getInstance (const char *region_code, UErrorCode &status)
| Returns a pointer to a Region using the given region code.
static const Region * | getInstance (int32_t code, UErrorCode &status)
| Returns a pointer to a Region using the given numeric region code.
static StringEnumeration * | getAvailable (URegionType type, UErrorCode &status)
| Returns an enumeration over the IDs of all known regions that match the given type.
static void | cleanupRegionData ()
| Cleans up statically allocated memory.

## Detailed Description

`Region` is the class representing a Unicode Region Code, also known as a Unicode Region Subtag, which is defined based upon the BCP 47 standard.

We often think of "regions" as "countries" when defining the characteristics of a locale. Region codes There are different types of region codes that are important to distinguish.

Macroregion - A code for a "macro geographical (continental) region, geographical sub-region, or selected economic and other grouping" as defined in UN M.49 (http://unstats.un.org/unsd/methods/m49/m49regin.htm). These are typically 3-digit codes, but contain some 2-letter codes, such as the LDML code QO added for Outlying Oceania. Not all UNM.49 codes are defined in LDML, but most of them are. Macroregions are represented in ICU by one of three region types: WORLD ( region code 001 ), CONTINENTS ( regions contained directly by WORLD ), and SUBCONTINENTS ( things contained directly by a continent ).

TERRITORY - A Region that is not a Macroregion. These are typically codes for countries, but also include areas that are not separate countries, such as the code "AQ" for Antarctica or the code "HK" for Hong Kong (SAR China). Overseas dependencies of countries may or may not have separate codes. The codes are typically 2-letter codes aligned with the ISO 3166 standard, but BCP47 allows for the use of 3-digit codes in the future.

UNKNOWN - The code ZZ is defined by Unicode LDML for use to indicate that the Region is unknown, or that the value supplied as a region was invalid.

DEPRECATED - Region codes that have been defined in the past but are no longer in modern usage, usually due to a country splitting into multiple territories or changing its name.

GROUPING - A widely understood grouping of territories that has a well defined membership such that a region code has been assigned for it. Some of these are UNM.49 codes that do't fall into the world/continent/sub-continent hierarchy, while others are just well known groupings that have their own region code. Region "EU" (European Union) is one such region code that is a grouping. Groupings will never be returned by the getContainingRegion() API, since a different type of region ( WORLD, CONTINENT, or SUBCONTINENT ) will always be the containing region instead.

The Region class is not intended for public subclassing.

Author
  John Emmons

Stable
  ICU 51

Definition at line 72 of file region.h.

## Constructor & Destructor Documentation

## ◆ ~Region()

virtual icu::Region::~Region | ( |  | ) |
| virtual

Destructor.

Stable
  ICU 51

## Member Function Documentation

## ◆ cleanupRegionData()

static void icu::Region::cleanupRegionData | ( |  | ) |
| static

Cleans up statically allocated memory.

Internal
  Do not use. This API is for internal use only.

## ◆ contains()

UBool icu::Region::contains | ( | const Region & | other | ) | const

Returns true if this region contains the supplied other region anywhere in the region hierarchy.

Stable
  ICU 51

## ◆ getAvailable()

static StringEnumeration * icu::Region::getAvailable | ( | URegionType | type,
|  | UErrorCode & | status )
| static

Returns an enumeration over the IDs of all known regions that match the given type.

Stable
  ICU 55

## ◆ getContainedRegions() [1/2]

StringEnumeration * icu::Region::getContainedRegions | ( | UErrorCode & | status | ) | const

Return an enumeration over the IDs of all the regions that are immediate children of this region in the region hierarchy.

These returned regions could be either macro regions, territories, or a mixture of the two, depending on the containment data as defined in CLDR. This API may return nullptr if this region doesn't have any sub-regions. For example, calling this method with region "150" (Europe) returns an enumeration containing the various sub regions of Europe - "039" (Southern Europe) - "151" (Eastern Europe) - "154" (Northern Europe) and "155" (Western Europe).

Stable
  ICU 55

## ◆ getContainedRegions() [2/2]

StringEnumeration * icu::Region::getContainedRegions | ( | URegionType | type,
|  | UErrorCode & | status ) const

Returns an enumeration over the IDs of all the regions that are children of this region anywhere in the region hierarchy and match the given type.

This API may return an empty enumeration if this region doesn't have any sub-regions that match the given type. For example, calling this method with region "150" (Europe) and type "URGN_TERRITORY" returns a set containing all the territories in Europe ( "FR" (France) - "IT" (Italy) - "DE" (Germany) etc. )

Stable
  ICU 55

## ◆ getContainingRegion() [1/2]

const Region * icu::Region::getContainingRegion | ( |  | ) | const

Returns a pointer to the region that contains this region.

Returns nullptr if this region is code "001" (World) or "ZZ" (Unknown region). For example, calling this method with region "IT" (Italy) returns the region "039" (Southern Europe).

Stable
  ICU 51

## ◆ getContainingRegion() [2/2]

const Region * icu::Region::getContainingRegion | ( | URegionType | type | ) | const

Return a pointer to the region that geographically contains this region and matches the given type, moving multiple steps up the containment chain if necessary.

Returns nullptr if no containing region can be found that matches the given type. Note: The URegionTypes = "URGN_GROUPING", "URGN_DEPRECATED", or "URGN_UNKNOWN" are not appropriate for use in this API. nullptr will be returned in this case. For example, calling this method with region "IT" (Italy) for type "URGN_CONTINENT" returns the region "150" ( Europe ).

Stable
  ICU 51

## ◆ getInstance() [1/2]

static const Region * icu::Region::getInstance | ( | const char * | region_code,
|  | UErrorCode & | status )
| static

Returns a pointer to a Region using the given region code.

The region code can be either 2-letter ISO code, 3-letter ISO code, UNM.49 numeric code, or other valid Unicode Region Code as defined by the LDML specification. The identifier will be canonicalized internally using the supplemental metadata as defined in the CLDR. If the region code is nullptr or not recognized, the appropriate error code will be set ( U_ILLEGAL_ARGUMENT_ERROR )

Stable
  ICU 51

## ◆ getInstance() [2/2]

static const Region * icu::Region::getInstance | ( | int32_t | code,
|  | UErrorCode & | status )
| static

Returns a pointer to a Region using the given numeric region code.

If the numeric region code is not recognized, the appropriate error code will be set ( U_ILLEGAL_ARGUMENT_ERROR ).

Stable
  ICU 51

## ◆ getNumericCode()

int32_t icu::Region::getNumericCode | ( |  | ) | const

Return this region's numeric code.

Returns a negative value if the given region does not have a numeric code assigned to it.

Stable
  ICU 51

## ◆ getPreferredValues()

StringEnumeration * icu::Region::getPreferredValues | ( | UErrorCode & | status | ) | const

For deprecated regions, return an enumeration over the IDs of the regions that are the preferred replacement regions for this region.

Returns null for a non-deprecated region. For example, calling this method with region "SU" (Soviet Union) would return a list of the regions containing "RU" (Russia), "AM" (Armenia), "AZ" (Azerbaijan), etc...

Stable
  ICU 55

## ◆ getRegionCode()

const char * icu::Region::getRegionCode | ( |  | ) | const

Return this region's canonical region code.

Stable
  ICU 51

## ◆ getType()

URegionType icu::Region::getType | ( |  | ) | const

Returns the region type of this region.

Stable
  ICU 51

## ◆ operator!=()

bool icu::Region::operator!= | ( | const Region & | that | ) | const

Returns true if the two regions are NOT equal; that is, if operator ==() returns false.

Stable
  ICU 51

## ◆ operator==()

bool icu::Region::operator== | ( | const Region & | that | ) | const

Returns true if the two regions are equal.

Stable
  ICU 51

The documentation for this class was generated from the following file:

- i18n/unicode/region.h