The implementation is backed by a smaller `IWinePropertySetImpl` interface for core operations (insertion, lookup, removal, iteration), which currently uses an `rb_tree` to store `HSTRING`-`IInspectable *` value pairs.
If needed, the `IWinePropertySetImpl` implementation can be later swapped out with a hash table for performance reasons, as `PropertySet` does not have an enumeration order guarantee, at least according to the MSDN docs.
-- v12: wintypes: Implement IMapView methods get_Size, HasKey, Lookup, Split for PropertySet. wintypes: Invoke MapChanged event handlers from PropertSet on entry removal and Clear(). wintypes: Invoke MapChanged event handlers from PropertySet on insertion. wintypes: Implement get_Current() for the IIterator implementation obtained from PropertySet. wintypes: Implement IIterator methods MoveNext() and get_HasCurrent() for PropertySet. wintypes: Implement IMap method GetView() for PropertySet. wintypes: Implement IMap methods HasKey, get_Count and Remove for PropertySet. wintypes: Implement IMap method Clear() for PropertySet. wintypes: Implement IMap methods Insert() and Lookup() for PropertySet. wintypes: Implement adding/removing IMapChangedEventHandlers for IObservableMap<HSTRING, IInspectable *>. wintypes: Add stubs for IKeyValuePair<HSTRING, IInspectable *>. wintypes: Add stubs for IIterator<IKeyValuePair<HSTRING, IInspectable *>>. wintypes: Add stubs for IMapView<HSTRING, IInspectable *>. wintypes: Add IObservableMap<HSTRING, IInspectable *> and IIterable<IKeyValuePair<HSTRING, IInspectable *>> stubs to PropertySet implementation.
This merge request has too many patches to be relayed via email. Please visit the URL below to see the contents of the merge request. https://gitlab.winehq.org/wine/wine/-/merge_requests/6766