Skip to content

Commit

Permalink
ICU-22954 make all LocalXyzPointer header-only
Browse files Browse the repository at this point in the history
  • Loading branch information
markusicu committed Dec 20, 2024
1 parent 8655718 commit 7040909
Show file tree
Hide file tree
Showing 51 changed files with 173 additions and 239 deletions.
4 changes: 2 additions & 2 deletions icu4c/source/common/characterproperties.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
#include "umutex.h"
#include "uprops.h"

using icu::LocalPointer;
using U_ICU_NAMESPACE_OR_INTERNAL::LocalPointer;
#if !UCONFIG_NO_NORMALIZATION
using icu::Normalizer2Factory;
using icu::Normalizer2Impl;
Expand Down Expand Up @@ -340,7 +340,7 @@ UnicodeSet *makeSet(UProperty property, UErrorCode &errorCode) {
UCPMap *makeMap(UProperty property, UErrorCode &errorCode) {
if (U_FAILURE(errorCode)) { return nullptr; }
uint32_t nullValue = property == UCHAR_SCRIPT ? USCRIPT_UNKNOWN : 0;
icu::LocalUMutableCPTriePointer mutableTrie(
U_ICU_NAMESPACE_OR_INTERNAL::LocalUMutableCPTriePointer mutableTrie(
umutablecptrie_open(nullValue, nullValue, &errorCode));
const UnicodeSet *inclusions =
icu::CharacterProperties::getInclusionsForProperty(property, errorCode);
Expand Down
3 changes: 2 additions & 1 deletion icu4c/source/common/locavailable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,8 @@ UBool U_CALLCONV uloc_cleanup() {
void U_CALLCONV loadInstalledLocales(UErrorCode& status) {
ucln_common_registerCleanup(UCLN_COMMON_ULOC, uloc_cleanup);

icu::LocalUResourceBundlePointer rb(ures_openDirect(nullptr, "res_index", &status));
U_ICU_NAMESPACE_OR_INTERNAL::LocalUResourceBundlePointer rb(
ures_openDirect(nullptr, "res_index", &status));
AvailableLocalesSink sink;
ures_getAllItemsWithFallback(rb.getAlias(), "", sink, status);
}
Expand Down
17 changes: 10 additions & 7 deletions icu4c/source/common/locdispnames.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@
#include "ureslocs.h"
#include "ustr_imp.h"

using U_ICU_NAMESPACE_OR_INTERNAL::LocalUEnumerationPointer;
using U_ICU_NAMESPACE_OR_INTERNAL::LocalUResourceBundlePointer;

// C++ API ----------------------------------------------------------------- ***

U_NAMESPACE_BEGIN
Expand Down Expand Up @@ -313,7 +316,7 @@ _getStringOrCopyKey(const char *path, const char *locale,

if(itemKey==nullptr) {
/* top-level item: normal resource bundle access */
icu::LocalUResourceBundlePointer rb(ures_open(path, locale, &errorCode));
LocalUResourceBundlePointer rb(ures_open(path, locale, &errorCode));

if(U_SUCCESS(errorCode)) {
s=ures_getStringByKey(rb.getAlias(), tableKey, &length, &errorCode);
Expand Down Expand Up @@ -539,9 +542,9 @@ uloc_getDisplayName(const char *locale,
{
UErrorCode status = U_ZERO_ERROR;

icu::LocalUResourceBundlePointer locbundle(
LocalUResourceBundlePointer locbundle(
ures_open(U_ICUDATA_LANG, displayLocale, &status));
icu::LocalUResourceBundlePointer dspbundle(
LocalUResourceBundlePointer dspbundle(
ures_getByKeyWithFallback(locbundle.getAlias(), _kLocaleDisplayPattern, nullptr, &status));

separator=ures_getStringByKeyWithFallback(dspbundle.getAlias(), _kSeparator, &sepLen, &status);
Expand Down Expand Up @@ -613,7 +616,7 @@ uloc_getDisplayName(const char *locale,
int32_t langPos=0; /* position in output of language substitution */
int32_t restLen=0; /* length of 'everything else' substitution */
int32_t restPos=0; /* position in output of 'everything else' substitution */
icu::LocalUEnumerationPointer kenum; /* keyword enumeration */
LocalUEnumerationPointer kenum; /* keyword enumeration */

/* prefix of pattern, extremely likely to be empty */
if(sub0Pos) {
Expand Down Expand Up @@ -855,11 +858,11 @@ uloc_getDisplayKeywordValue( const char* locale,
int32_t dispNameLen = 0;
const char16_t *dispName = nullptr;

icu::LocalUResourceBundlePointer bundle(
LocalUResourceBundlePointer bundle(
ures_open(U_ICUDATA_CURR, displayLocale, status));
icu::LocalUResourceBundlePointer currencies(
LocalUResourceBundlePointer currencies(
ures_getByKey(bundle.getAlias(), _kCurrencies, nullptr, status));
icu::LocalUResourceBundlePointer currency(
LocalUResourceBundlePointer currency(
ures_getByKeyWithFallback(currencies.getAlias(), keywordValue.data(), nullptr, status));

dispName = ures_getStringByIndex(currency.getAlias(), UCURRENCY_DISPLAY_NAME_INDEX, &dispNameLen, status);
Expand Down
3 changes: 2 additions & 1 deletion icu4c/source/common/locresdata.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,8 @@ uloc_getTableStringWithFallback(const char *path, const char *locale,
* this falls back through the locale's chain to root
*/
errorCode=U_ZERO_ERROR;
icu::LocalUResourceBundlePointer rb(ures_open(path, locale, &errorCode));
U_ICU_NAMESPACE_OR_INTERNAL::LocalUResourceBundlePointer rb(
ures_open(path, locale, &errorCode));

if(U_FAILURE(errorCode)) {
/* total failure, not even root could be opened */
Expand Down
3 changes: 2 additions & 1 deletion icu4c/source/common/locutil.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,8 @@ LocaleUtility::getAvailableLocaleNames(const UnicodeString& bundleID)
CharString cbundleID;
cbundleID.appendInvariantChars(bundleID, status);
const char* path = cbundleID.isEmpty() ? nullptr : cbundleID.data();
icu::LocalUEnumerationPointer uenum(ures_openAvailableLocales(path, &status));
U_ICU_NAMESPACE_OR_INTERNAL::LocalUEnumerationPointer uenum(
ures_openAvailableLocales(path, &status));
for (;;) {
const char16_t* id = uenum_unext(uenum.getAlias(), nullptr, &status);
if (id == nullptr) {
Expand Down
25 changes: 12 additions & 13 deletions icu4c/source/common/uloc_tag.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@
#include "ulocimp.h"
#include "uassert.h"

using U_ICU_NAMESPACE_OR_INTERNAL::LocalPointer;
using U_ICU_NAMESPACE_OR_INTERNAL::LocalUEnumerationPointer;

namespace {

/* struct holding a single variant */
Expand Down Expand Up @@ -354,10 +357,6 @@ const char*
ultag_getLegacy(const ULanguageTag* langtag);
#endif

} // namespace

U_NAMESPACE_BEGIN

/**
* \class LocalULanguageTagPointer
* "Smart pointer" class, closes a ULanguageTag via ultag_close().
Expand All @@ -369,7 +368,7 @@ U_NAMESPACE_BEGIN
*/
U_DEFINE_LOCAL_OPEN_POINTER(LocalULanguageTagPointer, ULanguageTag, ultag_close);

U_NAMESPACE_END
} // namespace

/*
* -------------------------------------------------
Expand Down Expand Up @@ -869,7 +868,7 @@ namespace {
*/

bool
_addVariantToList(VariantListEntry **first, icu::LocalPointer<VariantListEntry> var) {
_addVariantToList(VariantListEntry **first, LocalPointer<VariantListEntry> var) {
if (*first == nullptr) {
var->next = nullptr;
*first = var.orphan();
Expand Down Expand Up @@ -1212,7 +1211,7 @@ _appendVariantsToLanguageTag(std::string_view localeID, icu::ByteSink& sink, boo
if (_isVariantSubtag(pVar, -1)) {
if (uprv_strcmp(pVar, POSIX_VALUE) || buf.length() != static_cast<int32_t>(uprv_strlen(POSIX_VALUE))) {
/* emit the variant to the list */
icu::LocalPointer<VariantListEntry> var(new VariantListEntry, status);
LocalPointer<VariantListEntry> var(new VariantListEntry, status);
if (U_FAILURE(status)) {
break;
}
Expand Down Expand Up @@ -1284,7 +1283,7 @@ _appendKeywordsToLanguageTag(const char* localeID, icu::ByteSink& sink, bool str
icu::MemoryPool<ExtensionListEntry> extPool;
icu::MemoryPool<icu::CharString> strPool;

icu::LocalUEnumerationPointer keywordEnum(uloc_openKeywords(localeID, &status));
LocalUEnumerationPointer keywordEnum(uloc_openKeywords(localeID, &status));
if (U_FAILURE(status) && !hadPosix) {
return;
}
Expand Down Expand Up @@ -1984,7 +1983,7 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode& sta
char *pSubtag, *pNext, *pLastGoodPosition;
int32_t subtagLen;
int32_t extlangIdx;
icu::LocalPointer<ExtensionListEntry> pExtension;
LocalPointer<ExtensionListEntry> pExtension;
char *pExtValueSubtag, *pExtValueSubtagEnd;
int32_t i;
bool privateuseVar = false;
Expand All @@ -2011,7 +2010,7 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode& sta
*(tagBuf + tagLen) = 0;

/* create a ULanguageTag */
icu::LocalULanguageTagPointer t(
LocalULanguageTagPointer t(
static_cast<ULanguageTag*>(uprv_malloc(sizeof(ULanguageTag))));
if (t.isNull()) {
uprv_free(tagBuf);
Expand Down Expand Up @@ -2197,7 +2196,7 @@ ultag_parse(const char* tag, int32_t tagLen, int32_t* parsedLen, UErrorCode& sta
if (next & VART) {
if (_isVariantSubtag(pSubtag, subtagLen) ||
(privateuseVar && _isPrivateuseVariantSubtag(pSubtag, subtagLen))) {
icu::LocalPointer<VariantListEntry> var(new VariantListEntry, status);
LocalPointer<VariantListEntry> var(new VariantListEntry, status);
if (U_FAILURE(status)) {
return nullptr;
}
Expand Down Expand Up @@ -2609,7 +2608,7 @@ ulocimp_toLanguageTag(const char* localeID,
int kwdCnt = 0;
bool done = false;

icu::LocalUEnumerationPointer kwdEnum(uloc_openKeywords(canonical.data(), &tmpStatus));
LocalUEnumerationPointer kwdEnum(uloc_openKeywords(canonical.data(), &tmpStatus));
if (U_SUCCESS(tmpStatus)) {
kwdCnt = uenum_count(kwdEnum.getAlias(), &tmpStatus);
if (kwdCnt == 1) {
Expand Down Expand Up @@ -2691,7 +2690,7 @@ ulocimp_forLanguageTag(const char* langtag,
int32_t i, n;
bool noRegion = true;

icu::LocalULanguageTagPointer lt(ultag_parse(langtag, tagLen, parsedLength, status));
LocalULanguageTagPointer lt(ultag_parse(langtag, tagLen, parsedLength, status));
if (U_FAILURE(status)) {
return;
}
Expand Down
3 changes: 2 additions & 1 deletion icu4c/source/common/unicode/localpointer.h
Original file line number Diff line number Diff line change
Expand Up @@ -548,7 +548,8 @@ class LocalArray : public LocalPointerBase<T> {
* @stable ICU 4.4
*/
#define U_DEFINE_LOCAL_OPEN_POINTER(LocalPointerClassName, Type, closeFunction) \
using LocalPointerClassName = internal::LocalOpenPointer<Type, closeFunction>
using LocalPointerClassName = \
U_ICU_NAMESPACE_OR_INTERNAL::internal::LocalOpenPointer<Type, closeFunction>

#ifndef U_IN_DOXYGEN
namespace internal {
Expand Down
8 changes: 3 additions & 5 deletions icu4c/source/common/unicode/ubidi.h
Original file line number Diff line number Diff line change
Expand Up @@ -563,9 +563,8 @@ ubidi_openSized(int32_t maxLength, int32_t maxRunCount, UErrorCode *pErrorCode);
U_CAPI void U_EXPORT2
ubidi_close(UBiDi *pBiDi);

#if U_SHOW_CPLUSPLUS_API

U_NAMESPACE_BEGIN
#if U_SHOW_CPLUSPLUS_API || U_SHOW_CPLUSPLUS_HEADER_API
namespace U_ICU_NAMESPACE_OR_INTERNAL {

/**
* \class LocalUBiDiPointer
Expand All @@ -578,8 +577,7 @@ U_NAMESPACE_BEGIN
*/
U_DEFINE_LOCAL_OPEN_POINTER(LocalUBiDiPointer, UBiDi, ubidi_close);

U_NAMESPACE_END

}
#endif

/**
Expand Down
8 changes: 3 additions & 5 deletions icu4c/source/common/unicode/ubiditransform.h
Original file line number Diff line number Diff line change
Expand Up @@ -304,9 +304,8 @@ ubiditransform_open(UErrorCode *pErrorCode);
U_CAPI void U_EXPORT2
ubiditransform_close(UBiDiTransform *pBidiTransform);

#if U_SHOW_CPLUSPLUS_API

U_NAMESPACE_BEGIN
#if U_SHOW_CPLUSPLUS_API || U_SHOW_CPLUSPLUS_HEADER_API
namespace U_ICU_NAMESPACE_OR_INTERNAL {

/**
* \class LocalUBiDiTransformPointer
Expand All @@ -319,8 +318,7 @@ U_NAMESPACE_BEGIN
*/
U_DEFINE_LOCAL_OPEN_POINTER(LocalUBiDiTransformPointer, UBiDiTransform, ubiditransform_close);

U_NAMESPACE_END

}
#endif

#endif
8 changes: 3 additions & 5 deletions icu4c/source/common/unicode/ubrk.h
Original file line number Diff line number Diff line change
Expand Up @@ -356,9 +356,8 @@ ubrk_clone(const UBreakIterator *bi,
U_CAPI void U_EXPORT2
ubrk_close(UBreakIterator *bi);

#if U_SHOW_CPLUSPLUS_API

U_NAMESPACE_BEGIN
#if U_SHOW_CPLUSPLUS_API || U_SHOW_CPLUSPLUS_HEADER_API
namespace U_ICU_NAMESPACE_OR_INTERNAL {

/**
* \class LocalUBreakIteratorPointer
Expand All @@ -371,8 +370,7 @@ U_NAMESPACE_BEGIN
*/
U_DEFINE_LOCAL_OPEN_POINTER(LocalUBreakIteratorPointer, UBreakIterator, ubrk_close);

U_NAMESPACE_END

}
#endif

/**
Expand Down
8 changes: 3 additions & 5 deletions icu4c/source/common/unicode/ucasemap.h
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,8 @@ ucasemap_open(const char *locale, uint32_t options, UErrorCode *pErrorCode);
U_CAPI void U_EXPORT2
ucasemap_close(UCaseMap *csm);

#if U_SHOW_CPLUSPLUS_API

U_NAMESPACE_BEGIN
#if U_SHOW_CPLUSPLUS_API || U_SHOW_CPLUSPLUS_HEADER_API
namespace U_ICU_NAMESPACE_OR_INTERNAL {

/**
* \class LocalUCaseMapPointer
Expand All @@ -98,8 +97,7 @@ U_NAMESPACE_BEGIN
*/
U_DEFINE_LOCAL_OPEN_POINTER(LocalUCaseMapPointer, UCaseMap, ucasemap_close);

U_NAMESPACE_END

}
#endif

/**
Expand Down
8 changes: 3 additions & 5 deletions icu4c/source/common/unicode/ucnv.h
Original file line number Diff line number Diff line change
Expand Up @@ -581,9 +581,8 @@ ucnv_safeClone(const UConverter *cnv,
U_CAPI void U_EXPORT2
ucnv_close(UConverter * converter);

#if U_SHOW_CPLUSPLUS_API

U_NAMESPACE_BEGIN
#if U_SHOW_CPLUSPLUS_API || U_SHOW_CPLUSPLUS_HEADER_API
namespace U_ICU_NAMESPACE_OR_INTERNAL {

/**
* \class LocalUConverterPointer
Expand All @@ -596,8 +595,7 @@ U_NAMESPACE_BEGIN
*/
U_DEFINE_LOCAL_OPEN_POINTER(LocalUConverterPointer, UConverter, ucnv_close);

U_NAMESPACE_END

}
#endif

/**
Expand Down
8 changes: 3 additions & 5 deletions icu4c/source/common/unicode/ucnvsel.h
Original file line number Diff line number Diff line change
Expand Up @@ -97,9 +97,8 @@ ucnvsel_open(const char* const* converterList, int32_t converterListSize,
U_CAPI void U_EXPORT2
ucnvsel_close(UConverterSelector *sel);

#if U_SHOW_CPLUSPLUS_API

U_NAMESPACE_BEGIN
#if U_SHOW_CPLUSPLUS_API || U_SHOW_CPLUSPLUS_HEADER_API
namespace U_ICU_NAMESPACE_OR_INTERNAL {

/**
* \class LocalUConverterSelectorPointer
Expand All @@ -112,8 +111,7 @@ U_NAMESPACE_BEGIN
*/
U_DEFINE_LOCAL_OPEN_POINTER(LocalUConverterSelectorPointer, UConverterSelector, ucnvsel_close);

U_NAMESPACE_END

}
#endif

/**
Expand Down
10 changes: 4 additions & 6 deletions icu4c/source/common/unicode/ucptrie.h
Original file line number Diff line number Diff line change
Expand Up @@ -623,9 +623,8 @@ U_CDECL_END

#endif // U_IN_DOXYGEN

#if U_SHOW_CPLUSPLUS_API

U_NAMESPACE_BEGIN
#if U_SHOW_CPLUSPLUS_API || U_SHOW_CPLUSPLUS_HEADER_API
namespace U_ICU_NAMESPACE_OR_INTERNAL {

/**
* \class LocalUCPTriePointer
Expand All @@ -638,8 +637,7 @@ U_NAMESPACE_BEGIN
*/
U_DEFINE_LOCAL_OPEN_POINTER(LocalUCPTriePointer, UCPTrie, ucptrie_close);

U_NAMESPACE_END

#endif // U_SHOW_CPLUSPLUS_API
}
#endif

#endif
10 changes: 4 additions & 6 deletions icu4c/source/common/unicode/udata.h
Original file line number Diff line number Diff line change
Expand Up @@ -418,9 +418,8 @@ udata_setFileAccess(UDataFileAccess access, UErrorCode *status);

U_CDECL_END

#if U_SHOW_CPLUSPLUS_API

U_NAMESPACE_BEGIN
#if U_SHOW_CPLUSPLUS_API || U_SHOW_CPLUSPLUS_HEADER_API
namespace U_ICU_NAMESPACE_OR_INTERNAL {

/**
* \class LocalUDataMemoryPointer
Expand All @@ -433,8 +432,7 @@ U_NAMESPACE_BEGIN
*/
U_DEFINE_LOCAL_OPEN_POINTER(LocalUDataMemoryPointer, UDataMemory, udata_close);

U_NAMESPACE_END

#endif // U_SHOW_CPLUSPLUS_API
}
#endif

#endif
Loading

0 comments on commit 7040909

Please sign in to comment.