+
+ while ( ures_hasNext(regionRegular.getAlias()) ) {
+ UnicodeString regionName = ures_getNextUnicodeString(regionRegular.getAlias(),NULL,&status);
+ int32_t rangeMarkerLocation = regionName.indexOf(RANGE_MARKER);
+ UChar buf[6];
+ regionName.extract(buf,6,status);
+ if ( rangeMarkerLocation > 0 ) {
+ UChar endRange = regionName.charAt(rangeMarkerLocation+1);
+ buf[rangeMarkerLocation] = 0;
+ while ( buf[rangeMarkerLocation-1] <= endRange ) {
+ LocalPointer<UnicodeString> newRegion(new UnicodeString(buf), status);
+ allRegions->addElement(newRegion.orphan(),status);
+ buf[rangeMarkerLocation-1]++;
+ }
+ } else {
+ LocalPointer<UnicodeString> newRegion(new UnicodeString(regionName), status);
+ allRegions->addElement(newRegion.orphan(),status);
+ }
+ }
+
+ while ( ures_hasNext(regionMacro.getAlias()) ) {
+ UnicodeString regionName = ures_getNextUnicodeString(regionMacro.getAlias(),NULL,&status);
+ int32_t rangeMarkerLocation = regionName.indexOf(RANGE_MARKER);
+ UChar buf[6];
+ regionName.extract(buf,6,status);
+ if ( rangeMarkerLocation > 0 ) {
+ UChar endRange = regionName.charAt(rangeMarkerLocation+1);
+ buf[rangeMarkerLocation] = 0;
+ while ( buf[rangeMarkerLocation-1] <= endRange ) {
+ LocalPointer<UnicodeString> newRegion(new UnicodeString(buf), status);
+ allRegions->addElement(newRegion.orphan(),status);
+ buf[rangeMarkerLocation-1]++;
+ }
+ } else {
+ LocalPointer<UnicodeString> newRegion(new UnicodeString(regionName), status);
+ allRegions->addElement(newRegion.orphan(),status);
+ }
+ }
+
+ while ( ures_hasNext(regionUnknown.getAlias()) ) {
+ LocalPointer<UnicodeString> regionName (new UnicodeString(ures_getNextUnicodeString(regionUnknown.getAlias(),NULL,&status),status));
+ allRegions->addElement(regionName.orphan(),status);
+ }
+