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.
-- v8: dlls/wintypes: Implement IMapView methods get_Size, HasKey, Lookup, Split for PropertySet. dlls/wintypes: Invoke MapChanged event handlers from PropertSet on entry removal and Clear(). dlls/wintypes: Invoke MapChanged event handlers from PropertySet on insertion. dlls/wintypes: Implement get_Current() for the IIterator implementation obtained from PropertySet. dlls/wintypes: Implement IIterator methods MoveNext() and get_HasCurrent() for PropertySet. dlls/wintypes: Implement IMap method GetView() for PropertySet. dlls/wintypes: Implement IMap methods HasKey, get_Count and Remove for PropertySet. dlls/wintypes: Implement IMap method Clear() for PropertySet. dlls/wintypes: Implement IMap methods Insert() and Lookup() for PropertySet. dlls/wintypes: Implement adding/removing IMapChangedEventHandlers for IObservableMap<HSTRING, IInspectable *>. dlls/wintypes: Add stubs for IKeyValuePair<HSTRING, IInspectable *>. dlls/wintypes: Add stubs for IIterator<IKeyValuePair<HSTRING, IInspectable *>>. dlls/wintypes: Add stubs for IMapView<HSTRING, IInspectable *>. dlls/wintypes: Add IIterable<IKeyValuePair<HSTRING, IInspectable *>> stubs to PropertySet implementation. dlls/wintypes: Add IObservableMap<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