Bug 1619112 part 6. Remove duplicated string array appender bits. r=smaug

Differential Revision: https://phabricator.services.mozilla.com/D65544

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Boris Zbarsky 2020-03-06 21:08:17 +00:00
parent 00cd5d4380
commit a48980ac8c

View File

@ -101,17 +101,18 @@ inline bool ThrowErrorMessage(JSContext* aCx, Ts&&... aArgs) {
return false;
}
struct StringArrayAppender {
static void Append(nsTArray<nsString>& aArgs, uint16_t aCount) {
template <typename CharT>
struct TStringArrayAppender {
static void Append(nsTArray<nsTString<CharT>>& aArgs, uint16_t aCount) {
MOZ_RELEASE_ASSERT(aCount == 0,
"Must give at least as many string arguments as are "
"required by the ErrNum.");
}
// Allow passing nsAString instances for our args.
// Allow passing nsAString/nsACString instances for our args.
template <typename... Ts>
static void Append(nsTArray<nsString>& aArgs, uint16_t aCount,
const nsAString& aFirst, Ts&&... aOtherArgs) {
static void Append(nsTArray<nsTString<CharT>>& aArgs, uint16_t aCount,
const nsTSubstring<CharT>& aFirst, Ts&&... aOtherArgs) {
if (aCount == 0) {
MOZ_ASSERT(false,
"There should not be more string arguments provided than are "
@ -122,56 +123,23 @@ struct StringArrayAppender {
Append(aArgs, aCount - 1, std::forward<Ts>(aOtherArgs)...);
}
// Also allow passing u"" instances for our args.
// Also allow passing literal instances for our args.
template <int N, typename... Ts>
static void Append(nsTArray<nsString>& aArgs, uint16_t aCount,
const char16_t (&aFirst)[N], Ts&&... aOtherArgs) {
static void Append(nsTArray<nsTString<CharT>>& aArgs, uint16_t aCount,
const CharT (&aFirst)[N], Ts&&... aOtherArgs) {
if (aCount == 0) {
MOZ_ASSERT(false,
"There should not be more string arguments provided than are "
"required by the ErrNum.");
return;
}
aArgs.AppendElement(nsLiteralString(aFirst));
aArgs.AppendElement(nsTLiteralString<CharT>(aFirst));
Append(aArgs, aCount - 1, std::forward<Ts>(aOtherArgs)...);
}
};
struct CStringArrayAppender {
static void Append(nsTArray<nsCString>& aArgs, uint16_t aCount) {
MOZ_RELEASE_ASSERT(aCount == 0,
"Must give at least as many string arguments as are "
"required by the ErrNum.");
}
// Allow passing nsACString instances for our args.
template <typename... Ts>
static void Append(nsTArray<nsCString>& aArgs, uint16_t aCount,
const nsACString& aFirst, Ts&&... aOtherArgs) {
if (aCount == 0) {
MOZ_ASSERT(false,
"There should not be more string arguments provided than are "
"required by the ErrNum.");
return;
}
aArgs.AppendElement(aFirst);
Append(aArgs, aCount - 1, std::forward<Ts>(aOtherArgs)...);
}
// Allow passing "" instances for our args.
template <int N, typename... Ts>
static void Append(nsTArray<nsCString>& aArgs, uint16_t aCount,
const char (&aFirst)[N], Ts&&... aOtherArgs) {
if (aCount == 0) {
MOZ_ASSERT(false,
"There should not be more string arguments provided than are "
"required by the ErrNum.");
return;
}
aArgs.AppendElement(nsLiteralCString(aFirst));
Append(aArgs, aCount - 1, std::forward<Ts>(aOtherArgs)...);
}
};
using StringArrayAppender = TStringArrayAppender<char16_t>;
using CStringArrayAppender = TStringArrayAppender<char>;
} // namespace dom