Skip to content

Commit 1074d33

Browse files
committed
Add printf for all facets
1 parent 627d6c9 commit 1074d33

File tree

1 file changed

+31
-28
lines changed

1 file changed

+31
-28
lines changed

libcxx/src/locale.cpp

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -237,53 +237,56 @@ locale::__imp::__imp(const string& name, size_t refs) : facet(refs), facets_(N),
237237
if (facets_[i])
238238
facets_[i]->__add_shared();
239239

240-
{
241-
std::fprintf(stderr, "Creating collate_byname<char>\n");
242-
auto* byname = new collate_byname<char>(name_);
243-
244-
std::fprintf(stderr, "Installing collate_byname<char>\n");
245-
install(byname);
246-
}
240+
#define _DOIT(...) \
241+
do { \
242+
std::fprintf(stderr, "Creating " #__VA_ARGS__ "\n"); \
243+
auto* the_facet = new __VA_ARGS__(name_); \
244+
\
245+
std::fprintf(stderr, "Installing " #__VA_ARGS__ "\n"); \
246+
install(the_facet); \
247+
} while (false)
248+
249+
_DOIT(collate_byname<char>);
247250
#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
248-
install(new collate_byname<wchar_t>(name_));
251+
_DOIT(collate_byname<wchar_t>);
249252
#endif
250-
install(new ctype_byname<char>(name_));
253+
_DOIT(ctype_byname<char>);
251254
#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
252-
install(new ctype_byname<wchar_t>(name_));
255+
_DOIT(ctype_byname<wchar_t>);
253256
#endif
254-
install(new codecvt_byname<char, char, mbstate_t>(name_));
257+
_DOIT(codecvt_byname<char, char, mbstate_t>);
255258
#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
256-
install(new codecvt_byname<wchar_t, char, mbstate_t>(name_));
259+
_DOIT(codecvt_byname<wchar_t, char, mbstate_t>);
257260
#endif
258261
_LIBCPP_SUPPRESS_DEPRECATED_PUSH
259-
install(new codecvt_byname<char16_t, char, mbstate_t>(name_));
260-
install(new codecvt_byname<char32_t, char, mbstate_t>(name_));
262+
_DOIT(codecvt_byname<char16_t, char, mbstate_t>);
263+
_DOIT(codecvt_byname<char32_t, char, mbstate_t>);
261264
_LIBCPP_SUPPRESS_DEPRECATED_POP
262265
#if _LIBCPP_HAS_CHAR8_T
263-
install(new codecvt_byname<char16_t, char8_t, mbstate_t>(name_));
264-
install(new codecvt_byname<char32_t, char8_t, mbstate_t>(name_));
266+
_DOIT(codecvt_byname<char16_t, char8_t, mbstate_t>);
267+
_DOIT(codecvt_byname<char32_t, char8_t, mbstate_t>);
265268
#endif
266-
install(new numpunct_byname<char>(name_));
269+
_DOIT(numpunct_byname<char>);
267270
#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
268-
install(new numpunct_byname<wchar_t>(name_));
271+
_DOIT(numpunct_byname<wchar_t>);
269272
#endif
270-
install(new moneypunct_byname<char, false>(name_));
271-
install(new moneypunct_byname<char, true>(name_));
273+
_DOIT(moneypunct_byname<char, false>);
274+
_DOIT(moneypunct_byname<char, true>);
272275
#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
273-
install(new moneypunct_byname<wchar_t, false>(name_));
274-
install(new moneypunct_byname<wchar_t, true>(name_));
276+
_DOIT(moneypunct_byname<wchar_t, false>);
277+
_DOIT(moneypunct_byname<wchar_t, true>);
275278
#endif
276-
install(new time_get_byname<char>(name_));
279+
_DOIT(time_get_byname<char>);
277280
#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
278-
install(new time_get_byname<wchar_t>(name_));
281+
_DOIT(time_get_byname<wchar_t>);
279282
#endif
280-
install(new time_put_byname<char>(name_));
283+
_DOIT(time_put_byname<char>);
281284
#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
282-
install(new time_put_byname<wchar_t>(name_));
285+
_DOIT(time_put_byname<wchar_t>);
283286
#endif
284-
install(new messages_byname<char>(name_));
287+
_DOIT(messages_byname<char>);
285288
#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
286-
install(new messages_byname<wchar_t>(name_));
289+
_DOIT(messages_byname<wchar_t>);
287290
#endif
288291
#if _LIBCPP_HAS_EXCEPTIONS
289292
} catch (...) {

0 commit comments

Comments
 (0)