As of bug 1474369 (https://bugzilla.mozilla.org/show_bug.cgi?id=1474369),
xpidl files now support `Array<T>` in type position. These types are
reflected into C++ as '[const] nsTArray<T>&' and into JS as native JS Array
objects.
Array<T> has a few changes compared to [array, size_is(...)]:
1. Exposed to C++ as `nsTArray` rather than a raw pointer
2. Supports complex data types:
a) AString and DOMString as nsString
b) ACString and AUTF8String as nsCString
c) jsval as JS::Value (caller-rooted)
d) nested Array<T> as nsTArray<T>
3. Stores 'interface' and 'webidl' types in RefPtr<T>
Do note, that unlike [array], Array<T> does not currently support raw
pointer types (e.g. 'string', 'wstring', and 'nsIDPtr'). Adding support for
passing Array<nsID> is on the roadmap, but I'm not working on it at the
moment.
Please use Array<T> instead of [array] for future xpidl interfaces, and
look into converting existing interfaces to the new type. I'd like to
eliminate [size_is(..)] strings and [array] in the near future to reduce
XPConnect complexity and improve ergonomics.
- nika
_______________________________________________
dev-platform mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-platform