mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
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:
parent
00cd5d4380
commit
a48980ac8c
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user