#if !UCONFIG_NO_FORMATTING\r
\r
\r
-\r
-static UMutex gRegionDataLock = U_MUTEX_INITIALIZER;\r
-static UBool regionDataIsLoaded = false;\r
-static UVector* availableRegions[URGN_LIMIT];\r
-\r
-static UHashtable *regionAliases;\r
-static UHashtable *regionIDMap;\r
-static UHashtable *numericCodeMap;\r
-\r
U_CDECL_BEGIN\r
\r
static void U_CALLCONV\r
*/\r
static UBool U_CALLCONV region_cleanup(void)\r
{\r
- for (int32_t i = 0 ; i < URGN_LIMIT ; i++ ) {\r
- if ( availableRegions[i] ) {\r
- delete availableRegions[i];\r
- }\r
- }\r
-\r
- if (regionAliases) {\r
- uhash_close(regionAliases);\r
- }\r
-\r
- if (numericCodeMap) {\r
- uhash_close(numericCodeMap);\r
- }\r
-\r
- if (regionIDMap) {\r
- uhash_close(regionIDMap);\r
- }\r
+ icu::Region::cleanupRegionData();\r
\r
return TRUE;\r
}\r
\r
U_NAMESPACE_BEGIN\r
\r
+static UMutex gRegionDataLock = U_MUTEX_INITIALIZER;\r
+static UBool regionDataIsLoaded = false;\r
+static UVector* availableRegions[URGN_LIMIT];\r
+\r
+static UHashtable *regionAliases;\r
+static UHashtable *regionIDMap;\r
+static UHashtable *numericCodeMap;\r
+\r
static UnicodeString UNKNOWN_REGION_ID = UNICODE_STRING_SIMPLE("ZZ");\r
static UnicodeString OUTLYING_OCEANIA_REGION_ID = UNICODE_STRING_SIMPLE("QO");\r
static UnicodeString WORLD_ID = UNICODE_STRING_SIMPLE("001");\r
\r
}\r
\r
+void Region::cleanupRegionData() {\r
+\r
+ for (int32_t i = 0 ; i < URGN_LIMIT ; i++ ) {\r
+ if ( availableRegions[i] ) {\r
+ delete availableRegions[i];\r
+ }\r
+ }\r
+\r
+ if (regionAliases) {\r
+ uhash_close(regionAliases);\r
+ }\r
\r
+ if (numericCodeMap) {\r
+ uhash_close(numericCodeMap);\r
+ }\r
+\r
+ if (regionIDMap) {\r
+ uhash_close(regionIDMap);\r
+ }\r
+}\r
\r
/*\r
* Default constructor. Use factory methods only.\r
\r
#include "unicode/utypes.h"\r
\r
+#ifndef U_HIDE_DRAFT_API\r
+/**\r
+ * URegionType is an enumeration defining the different types of regions. Current possible\r
+ * values are URGN_WORLD, URGN_CONTINENT, URGN_SUBCONTINENT, URGN_TERRITORY, URGN_GROUPING,\r
+ * URGN_DEPRECATED, and URGN_UNKNOWN.\r
+ * \r
+ * @draft ICU 51 \r
+ */\r
+\r
typedef enum URegionType {\r
/**\r
* Type representing the unknown region.\r
} URegionType;\r
\r
\r
+\r
#if !UCONFIG_NO_FORMATTING\r
\r
#include "unicode/uobject.h"\r
\r
public:\r
\r
- /**\r
- * URegionType is an enumeration defining the different types of regions. Current possible\r
- * values are URGN_WORLD, URGN_CONTINENT, URGN_SUBCONTINENT, URGN_TERRITORY, URGN_GROUPING,\r
- * URGN_DEPRECATED, and URGN_UNKNOWN.\r
- * \r
- * @draft ICU 51 \r
- */\r
static const int32_t UNDEFINED_NUMERIC_CODE = -1;\r
\r
- /**\r
- * Default Constructor.\r
- *\r
- * @draft ICU 51\r
- */\r
- Region();\r
-\r
- /**\r
- * Default Destructor.\r
- *\r
- * @draft ICU 51\r
- */\r
- ~Region();\r
\r
\r
/**\r
/**\r
* ICU "poor man's RTTI", returns a UClassID for this class.\r
*\r
- * @stable ICU 4.2\r
+ * @draft ICU 51\r
*\r
*/\r
static UClassID U_EXPORT2 getStaticClassID(void);\r
/**\r
* ICU "poor man's RTTI", returns a UClassID for the actual class.\r
*\r
- * @stable ICU 4.2\r
+ * @draft ICU 51\r
*/\r
virtual UClassID getDynamicClassID() const;\r
\r
+#ifndef U_HIDE_INTERNAL_API\r
+ /**\r
+ * Default Destructor.\r
+ *\r
+ * @internal\r
+ */\r
+ ~Region();\r
+\r
+ /**\r
+ * Cleans up statically allocated memory.\r
+ * @internal \r
+ */\r
+\r
+ static void cleanupRegionData();\r
+#endif /* U_HIDE_INTERNAL_API */\r
+\r
private:\r
char id[4];\r
UnicodeString idStr;\r
UVector *containedRegions;\r
UVector *preferredValues;\r
\r
+#ifndef U_HIDE_INTERNAL_API\r
+ /**\r
+ * Default Constructor. Internal - use factory methods only.\r
+ *\r
+ * @internal\r
+ */\r
+ Region();\r
+\r
+\r
/*\r
* Initializes the region data from the ICU resource bundles. The region data\r
* contains the basic relationships such as which regions are known, what the numeric\r
\r
static void loadRegionData();\r
\r
+#endif /* U_HIDE_INTERNAL_API */\r
+\r
};\r
\r
U_NAMESPACE_END\r
\r
#endif /* #if !UCONFIG_NO_FORMATTING */\r
-\r
+#endif /* U_HIDE_DRAFT_API */\r
#endif // REGION_H\r
\r
//eof\r