OMG, this is amazing work! Thanks a lot for working on this! On Tue, 6 Nov 2018 at 19:37, Kyle Machulis <kmachu...@mozilla.com> wrote:
> Since just about forever (no, really: > https://bugzilla.mozilla.org/show_bug.cgi?id=8781), there's not really > been > an enum type in XPIDL. This means that we have a lot of interfaces with > lots of similarly named consts, that are usually passed around in C++ as > uint32_t's, though sometimes we redefine them as enums in C++ too and then > mix everything together. This can get extremely confusing, especially in > situations involving multiple enums from multiple interfaces. > > Having run into this problem while doing docshell work, I talked to Nika > about adding enums to XPIDL. With copious amounts of help from her since > this is my first foray into the XPIDL parser, I've now managed to land a > new type, called CEnums. > > CEnums are exactly what they sound like, c-style enums in XPIDL. For C/C++, > they'll turn into enums on the Interface class type. In Javascript, they'll > continue to be constants on the interface, and should not require any > changes to code referring to the enum values. Enum member value assignment > follows the C/C++ specs, where any unspecified value is incremented from > the value of the previous enum member. > > There are examples of how CEnums look and work in our tests: > > > https://searchfox.org/mozilla-central/rev/b096dcf0ea226af628fe03f7e7acb56a25853533/js/xpconnect/tests/idl/xpctest_cenums.idl > > https://searchfox.org/mozilla-central/rev/b096dcf0ea226af628fe03f7e7acb56a25853533/js/xpconnect/tests/components/js/xpctest_cenums.js > > https://searchfox.org/mozilla-central/rev/b096dcf0ea226af628fe03f7e7acb56a25853533/js/xpconnect/tests/components/native/xpctest_cenums.cpp > > Note that the type names differ between C++ and XPIDL. In C++, the enum > name is the type, within in the interface class. When referring to the enum > type in XPIDL, the format is [interface]_[enum], e.g. > nsIXPCTestCEnums_testFlagsExplicit when passed as an interface method > argument in xpctest_cenums.idl. > > I'll have the XPIDL MDN pages updated with this information soon. > > There is a metabug at https://bugzilla.mozilla.org/show_bug.cgi?id=1503630 > for converting const lists to CEnums. > _______________________________________________ > 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