Hi, I was asked that yesterday already, but I think it didn't go to the list. I didn't have that documentation in my mind, but I will definitely give it a look now! Maybe I'll ask sledru regarding plans for moving the docs to the tree.
BTW: The plan now is to remove the NS_LITERAL_STRING and NS_LITERAL_CSTRING macros tomorrow, and I will take care to adapt any new uses that land until then. Best wishes Simon On Thu, Jul 2, 2020 at 9:14 AM Frederik Braun <fbr...@mozilla.com> wrote: > Thank you Simon, that looks way more ergonomic! > A bummer, I'll have to modify my in-flight patches though :-) > > Do you intend to update existing documentation at > < > https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Guide/Internal_strings > > > (or move it to firefox source docs)? > > > > Am 01.07.20 um 16:53 schrieb Simon Giesecke: > > Hi, > > > > until Bug 1648010, there were some macros widely used for the handling of > > string literals, i.e. NS_LITERAL_STRING, NS_LITERAL_CSTRING, > > NS_NAMED_LITERAL_STRING, NS_NAMED_LITERAL_CSTRING. These macros have > resp. > > will have been removed once all patches for that bug landed. > > > > The non-NAMED variants are now replaced by user-defined literals using > the > > _ns suffix: > > > > - NS_LITERAL_CSTRING("foo") becomes "foo"_ns > > - NS_LITERAL_STRING("bar") becomes u"bar"_ns > > > > This makes the string literals somewhat more concise and more consistent > > with normal literals. > > > > Note that the "base" literal needs to use the correct underlying > character > > type (char vs. char16_t), which is why the same user-defined literal is > > used for both cases. > > > > For cases where a macro is used to construct a nsString-like literal, > > either > > - the definition of the macro can be changed to make use of the > > user-defined literal already, > > - the macro can be changed to a constexpr constant > > - in cases where neither of these is possible or desirable, the (new) > macro > > NS_LITERAL_STRING_FROM_CSTRING can be used, which behaves just like > > NS_LITERAL_STRING did, but has intentionally a somewhat more verbose name > > to avoid its widespread use where it is not required > > > > The NAMED variants have produced a non-standard syntax for declaring > > variables that are subsequently referenced by user code. These are now > > replaced by regular variable/constant declarations such as: > > > > constexpr auto kNamedCLiteral = "foo"_ns; > > constexpr auto kNamedLiteral = u"bar"_ns; > > > > This is slightly longer than the use of the NAMED macros, but uses a > > standard syntax. > > > > Best wishes > > Simon > > _______________________________________________ > > dev-platform mailing list > > dev-platform@lists.mozilla.org > > https://lists.mozilla.org/listinfo/dev-platform > > > _______________________________________________ > dev-platform mailing list > dev-platform@lists.mozilla.org > https://lists.mozilla.org/listinfo/dev-platform > _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform