| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  ******************************************************************************* | 2  ******************************************************************************* | 
| 3  * Copyright (C) 2013, International Business Machines Corporation and others. | 3  * Copyright (C) 2014, International Business Machines Corporation and others. | 
| 4  * All Rights Reserved. | 4  * All Rights Reserved. | 
| 5  ******************************************************************************* | 5  ******************************************************************************* | 
| 6  */ | 6  */ | 
| 7 | 7 | 
| 8 #ifndef REGION_H | 8 #ifndef REGION_H | 
| 9 #define REGION_H | 9 #define REGION_H | 
| 10 | 10 | 
| 11 /** | 11 /** | 
| 12  * \file | 12  * \file | 
| 13  * \brief C++ API: Region classes (territory containment) | 13  * \brief C++ API: Region classes (territory containment) | 
| 14  */ | 14  */ | 
| 15 | 15 | 
| 16 #include "unicode/utypes.h" | 16 #include "unicode/utypes.h" | 
| 17 #include "unicode/uregion.h" | 17 #include "unicode/uregion.h" | 
| 18 | 18 | 
| 19 #if !UCONFIG_NO_FORMATTING | 19 #if !UCONFIG_NO_FORMATTING | 
| 20 #ifndef U_HIDE_DRAFT_API |  | 
| 21 | 20 | 
| 22 #include "unicode/uobject.h" | 21 #include "unicode/uobject.h" | 
| 23 #include "unicode/uniset.h" | 22 #include "unicode/uniset.h" | 
| 24 #include "unicode/unistr.h" | 23 #include "unicode/unistr.h" | 
| 25 #include "unicode/strenum.h" | 24 #include "unicode/strenum.h" | 
| 26 | 25 | 
| 27 U_NAMESPACE_BEGIN | 26 U_NAMESPACE_BEGIN | 
| 28 | 27 | 
| 29 /** | 28 /** | 
| 30  * <code>Region</code> is the class representing a Unicode Region Code, also kno
     wn as a | 29  * <code>Region</code> is the class representing a Unicode Region Code, also kno
     wn as a | 
| (...skipping 25 matching lines...) Expand all  Loading... | 
| 56  *  GROUPING - A widely understood grouping of territories that has a well defin
     ed membership such | 55  *  GROUPING - A widely understood grouping of territories that has a well defin
     ed membership such | 
| 57  *  that a region code has been assigned for it.  Some of these are UNM.49 codes
      that do't fall into | 56  *  that a region code has been assigned for it.  Some of these are UNM.49 codes
      that do't fall into | 
| 58  *  the world/continent/sub-continent hierarchy, while others are just well know
     n groupings that have | 57  *  the world/continent/sub-continent hierarchy, while others are just well know
     n groupings that have | 
| 59  *  their own region code. Region "EU" (European Union) is one such region code 
     that is a grouping. | 58  *  their own region code. Region "EU" (European Union) is one such region code 
     that is a grouping. | 
| 60  *  Groupings will never be returned by the getContainingRegion() API, since a d
     ifferent type of region | 59  *  Groupings will never be returned by the getContainingRegion() API, since a d
     ifferent type of region | 
| 61  *  ( WORLD, CONTINENT, or SUBCONTINENT ) will always be the containing region i
     nstead. | 60  *  ( WORLD, CONTINENT, or SUBCONTINENT ) will always be the containing region i
     nstead. | 
| 62  * | 61  * | 
| 63  * The Region class is not intended for public subclassing. | 62  * The Region class is not intended for public subclassing. | 
| 64  * | 63  * | 
| 65  * @author       John Emmons | 64  * @author       John Emmons | 
| 66  * @draft ICU 51 | 65  * @stable ICU 51 | 
| 67  */ | 66  */ | 
| 68 | 67 | 
| 69 class U_I18N_API Region : public UObject { | 68 class U_I18N_API Region : public UObject { | 
| 70 public: | 69 public: | 
| 71     /** | 70     /** | 
| 72      * Destructor. | 71      * Destructor. | 
| 73      * @draft ICU 51 | 72      * @stable ICU 51 | 
| 74      */ | 73      */ | 
| 75     virtual ~Region(); | 74     virtual ~Region(); | 
| 76 | 75 | 
| 77     /** | 76     /** | 
| 78      * Returns true if the two regions are equal. | 77      * Returns true if the two regions are equal. | 
| 79      * @draft ICU 51 | 78      * @stable ICU 51 | 
| 80      */ | 79      */ | 
| 81     UBool operator==(const Region &that) const; | 80     UBool operator==(const Region &that) const; | 
| 82 | 81 | 
| 83     /** | 82     /** | 
| 84      * Returns true if the two regions are NOT equal; that is, if operator ==() 
     returns false. | 83      * Returns true if the two regions are NOT equal; that is, if operator ==() 
     returns false. | 
| 85      * @draft ICU 51 | 84      * @stable ICU 51 | 
| 86      */ | 85      */ | 
| 87     UBool operator!=(const Region &that) const; | 86     UBool operator!=(const Region &that) const; | 
| 88 | 87 | 
| 89     /** | 88     /** | 
| 90      * Returns a pointer to a Region using the given region code.  The region co
     de can be either 2-letter ISO code, | 89      * Returns a pointer to a Region using the given region code.  The region co
     de can be either 2-letter ISO code, | 
| 91      * 3-letter ISO code,  UNM.49 numeric code, or other valid Unicode Region Co
     de as defined by the LDML specification. | 90      * 3-letter ISO code,  UNM.49 numeric code, or other valid Unicode Region Co
     de as defined by the LDML specification. | 
| 92      * The identifier will be canonicalized internally using the supplemental me
     tadata as defined in the CLDR. | 91      * The identifier will be canonicalized internally using the supplemental me
     tadata as defined in the CLDR. | 
| 93      * If the region code is NULL or not recognized, the appropriate error code 
     will be set ( U_ILLEGAL_ARGUMENT_ERROR ) | 92      * If the region code is NULL or not recognized, the appropriate error code 
     will be set ( U_ILLEGAL_ARGUMENT_ERROR ) | 
| 94      * @draft ICU 51 | 93      * @stable ICU 51 | 
| 95      */ | 94      */ | 
| 96     static const Region* U_EXPORT2 getInstance(const char *region_code, UErrorCo
     de &status); | 95     static const Region* U_EXPORT2 getInstance(const char *region_code, UErrorCo
     de &status); | 
| 97 | 96 | 
| 98     /** | 97     /** | 
| 99      * Returns a pointer to a Region using the given numeric region code. If the
      numeric region code is not recognized, | 98      * Returns a pointer to a Region using the given numeric region code. If the
      numeric region code is not recognized, | 
| 100      * the appropriate error code will be set ( U_ILLEGAL_ARGUMENT_ERROR ). | 99      * the appropriate error code will be set ( U_ILLEGAL_ARGUMENT_ERROR ). | 
| 101      * @draft ICU 51 | 100      * @stable ICU 51 | 
| 102      */ | 101      */ | 
| 103     static const Region* U_EXPORT2 getInstance (int32_t code, UErrorCode &status
     ); | 102     static const Region* U_EXPORT2 getInstance (int32_t code, UErrorCode &status
     ); | 
| 104 | 103 | 
|  | 104 #ifndef U_HIDE_DRAFT_API | 
| 105     /** | 105     /** | 
| 106      * Returns an enumeration over the IDs of all known regions that match the g
     iven type. | 106      * Returns an enumeration over the IDs of all known regions that match the g
     iven type. | 
| 107      * @draft ICU 51 | 107      * @draft ICU 51 | 
| 108      */ | 108      */ | 
| 109     static StringEnumeration* U_EXPORT2 getAvailable(URegionType type); | 109     static StringEnumeration* U_EXPORT2 getAvailable(URegionType type); | 
|  | 110 #endif /* U_HIDE_DRAFT_API */ | 
| 110 | 111 | 
| 111     /** | 112     /** | 
| 112      * Returns a pointer to the region that contains this region.  Returns NULL 
     if this region is code "001" (World) | 113      * Returns a pointer to the region that contains this region.  Returns NULL 
     if this region is code "001" (World) | 
| 113      * or "ZZ" (Unknown region). For example, calling this method with region "I
     T" (Italy) returns the | 114      * or "ZZ" (Unknown region). For example, calling this method with region "I
     T" (Italy) returns the | 
| 114      * region "039" (Southern Europe). | 115      * region "039" (Southern Europe). | 
| 115      * @draft ICU 51 | 116      * @stable ICU 51 | 
| 116      */ | 117      */ | 
| 117     const Region* getContainingRegion() const; | 118     const Region* getContainingRegion() const; | 
| 118 | 119 | 
| 119     /** | 120     /** | 
| 120      * Return a pointer to the region that geographically contains this region a
     nd matches the given type, | 121      * Return a pointer to the region that geographically contains this region a
     nd matches the given type, | 
| 121      * moving multiple steps up the containment chain if necessary.  Returns NUL
     L if no containing region can be found | 122      * moving multiple steps up the containment chain if necessary.  Returns NUL
     L if no containing region can be found | 
| 122      * that matches the given type. Note: The URegionTypes = "URGN_GROUPING", "U
     RGN_DEPRECATED", or "URGN_UNKNOWN" | 123      * that matches the given type. Note: The URegionTypes = "URGN_GROUPING", "U
     RGN_DEPRECATED", or "URGN_UNKNOWN" | 
| 123      * are not appropriate for use in this API. NULL will be returned in this ca
     se. For example, calling this method | 124      * are not appropriate for use in this API. NULL will be returned in this ca
     se. For example, calling this method | 
| 124      * with region "IT" (Italy) for type "URGN_CONTINENT" returns the region "15
     0" ( Europe ). | 125      * with region "IT" (Italy) for type "URGN_CONTINENT" returns the region "15
     0" ( Europe ). | 
| 125      * @draft ICU 51 | 126      * @stable ICU 51 | 
| 126      */ | 127      */ | 
| 127     const Region* getContainingRegion(URegionType type) const; | 128     const Region* getContainingRegion(URegionType type) const; | 
| 128 | 129 | 
|  | 130 #ifndef U_HIDE_DRAFT_API | 
| 129     /** | 131     /** | 
| 130      * Return an enumeration over the IDs of all the regions that are immediate 
     children of this region in the | 132      * Return an enumeration over the IDs of all the regions that are immediate 
     children of this region in the | 
| 131      * region hierarchy. These returned regions could be either macro regions, t
     erritories, or a mixture of the two, | 133      * region hierarchy. These returned regions could be either macro regions, t
     erritories, or a mixture of the two, | 
| 132      * depending on the containment data as defined in CLDR.  This API may retur
     n NULL if this region doesn't have | 134      * depending on the containment data as defined in CLDR.  This API may retur
     n NULL if this region doesn't have | 
| 133      * any sub-regions. For example, calling this method with region "150" (Euro
     pe) returns an enumeration containing | 135      * any sub-regions. For example, calling this method with region "150" (Euro
     pe) returns an enumeration containing | 
| 134      * the various sub regions of Europe - "039" (Southern Europe) - "151" (East
     ern Europe) - "154" (Northern Europe) | 136      * the various sub regions of Europe - "039" (Southern Europe) - "151" (East
     ern Europe) - "154" (Northern Europe) | 
| 135      * and "155" (Western Europe). | 137      * and "155" (Western Europe). | 
| 136      * @draft ICU 51 | 138      * @draft ICU 51 | 
| 137      */ | 139      */ | 
| 138     StringEnumeration* getContainedRegions() const; | 140     StringEnumeration* getContainedRegions() const; | 
| 139 | 141 | 
| 140     /** | 142     /** | 
| 141      * Returns an enumeration over the IDs of all the regions that are children 
     of this region anywhere in the region | 143      * Returns an enumeration over the IDs of all the regions that are children 
     of this region anywhere in the region | 
| 142      * hierarchy and match the given type.  This API may return an empty enumera
     tion if this region doesn't have any | 144      * hierarchy and match the given type.  This API may return an empty enumera
     tion if this region doesn't have any | 
| 143      * sub-regions that match the given type. For example, calling this method w
     ith region "150" (Europe) and type | 145      * sub-regions that match the given type. For example, calling this method w
     ith region "150" (Europe) and type | 
| 144      * "URGN_TERRITORY" returns a set containing all the territories in Europe (
      "FR" (France) - "IT" (Italy) - "DE" (Germany) etc. ) | 146      * "URGN_TERRITORY" returns a set containing all the territories in Europe (
      "FR" (France) - "IT" (Italy) - "DE" (Germany) etc. ) | 
| 145      * @draft ICU 51 | 147      * @draft ICU 51 | 
| 146      */ | 148      */ | 
| 147     StringEnumeration* getContainedRegions( URegionType type ) const; | 149     StringEnumeration* getContainedRegions( URegionType type ) const; | 
|  | 150 #endif /* U_HIDE_DRAFT_API */ | 
| 148 | 151 | 
| 149     /** | 152     /** | 
| 150      * Returns true if this region contains the supplied other region anywhere i
     n the region hierarchy. | 153      * Returns true if this region contains the supplied other region anywhere i
     n the region hierarchy. | 
| 151      * @draft ICU 51 | 154      * @stable ICU 51 | 
| 152      */ | 155      */ | 
| 153     UBool contains(const Region &other) const; | 156     UBool contains(const Region &other) const; | 
| 154 | 157 | 
|  | 158 #ifndef U_HIDE_DRAFT_API | 
| 155     /** | 159     /** | 
| 156      * For deprecated regions, return an enumeration over the IDs of the regions
      that are the preferred replacement | 160      * For deprecated regions, return an enumeration over the IDs of the regions
      that are the preferred replacement | 
| 157      * regions for this region.  Returns null for a non-deprecated region.  For 
     example, calling this method with region | 161      * regions for this region.  Returns null for a non-deprecated region.  For 
     example, calling this method with region | 
| 158      * "SU" (Soviet Union) would return a list of the regions containing "RU" (R
     ussia), "AM" (Armenia), "AZ" (Azerbaijan), etc... | 162      * "SU" (Soviet Union) would return a list of the regions containing "RU" (R
     ussia), "AM" (Armenia), "AZ" (Azerbaijan), etc... | 
| 159      * @draft ICU 51 | 163      * @draft ICU 51 | 
| 160      */ | 164      */ | 
| 161     StringEnumeration* getPreferredValues() const; | 165     StringEnumeration* getPreferredValues() const; | 
| 162 | 166 #endif /* U_HIDE_DRAFT_API */ | 
| 163 | 167 | 
| 164     /** | 168     /** | 
| 165      * Return this region's canonical region code. | 169      * Return this region's canonical region code. | 
| 166      * @draft ICU 51 | 170      * @stable ICU 51 | 
| 167      */ | 171      */ | 
| 168     const char* getRegionCode() const; | 172     const char* getRegionCode() const; | 
| 169 | 173 | 
| 170     /** | 174     /** | 
| 171      * Return this region's numeric code. | 175      * Return this region's numeric code. | 
| 172      * Returns a negative value if the given region does not have a numeric code
      assigned to it. | 176      * Returns a negative value if the given region does not have a numeric code
      assigned to it. | 
| 173      * @draft ICU 51 | 177      * @stable ICU 51 | 
| 174      */ | 178      */ | 
| 175     int32_t getNumericCode() const; | 179     int32_t getNumericCode() const; | 
| 176 | 180 | 
| 177     /** | 181     /** | 
| 178      * Returns the region type of this region. | 182      * Returns the region type of this region. | 
| 179      * @draft ICU 51 | 183      * @stable ICU 51 | 
| 180      */ | 184      */ | 
| 181     URegionType getType() const; | 185     URegionType getType() const; | 
| 182 | 186 | 
| 183 #ifndef U_HIDE_INTERNAL_API | 187 #ifndef U_HIDE_INTERNAL_API | 
| 184     /** | 188     /** | 
| 185      * Cleans up statically allocated memory. | 189      * Cleans up statically allocated memory. | 
| 186      * @internal | 190      * @internal | 
| 187      */ | 191      */ | 
| 188     static void cleanupRegionData(); | 192     static void cleanupRegionData(); | 
| 189 #endif  /* U_HIDE_INTERNAL_API */ | 193 #endif  /* U_HIDE_INTERNAL_API */ | 
| (...skipping 15 matching lines...) Expand all  Loading... | 
| 205 | 209 | 
| 206     /* | 210     /* | 
| 207      * Initializes the region data from the ICU resource bundles.  The region da
     ta | 211      * Initializes the region data from the ICU resource bundles.  The region da
     ta | 
| 208      * contains the basic relationships such as which regions are known, what th
     e numeric | 212      * contains the basic relationships such as which regions are known, what th
     e numeric | 
| 209      * codes are, any known aliases, and the territory containment data. | 213      * codes are, any known aliases, and the territory containment data. | 
| 210      * | 214      * | 
| 211      * If the region data has already loaded, then this method simply returns wi
     thout doing | 215      * If the region data has already loaded, then this method simply returns wi
     thout doing | 
| 212      * anything meaningful. | 216      * anything meaningful. | 
| 213      */ | 217      */ | 
| 214 | 218 | 
| 215     static void loadRegionData(); | 219     static void loadRegionData(UErrorCode &status); | 
| 216 | 220 | 
| 217 }; | 221 }; | 
| 218 | 222 | 
| 219 U_NAMESPACE_END | 223 U_NAMESPACE_END | 
| 220 | 224 | 
| 221 #endif  /* U_HIDE_DRAFT_API */ |  | 
| 222 #endif /* #if !UCONFIG_NO_FORMATTING */ | 225 #endif /* #if !UCONFIG_NO_FORMATTING */ | 
| 223 #endif // REGION_H | 226 #endif // REGION_H | 
| 224 | 227 | 
| 225 //eof | 228 //eof | 
| OLD | NEW | 
|---|