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.
-- v13: 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 methods HasKey, get_Count, Remove, GetView for PropertySet.
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
Right, but I'm not sure how to organize this into two MRs. Would it be acceptable for the first MR to only contain the stubs for the `I{Observable}Map`, `IMapView`, `IIterable` and `IIterator` interfaces (i.e, the first 8 commits)?
Yes, that would work. It can have two or more MRs, as long as each MR is pretty self-contained and easy to review.
On Tue Nov 5 13:42:21 2024 +0000, Zhiyi Zhang wrote:
Right, but I'm not sure how to organize this into two MRs. Would it be
acceptable for the first MR to only contain the stubs for the `I{Observable}Map`, `IMapView`, `IIterable` and `IIterator` interfaces (i.e, the first 8 commits)? Yes, that would work. It can have two or more MRs, as long as each MR is pretty self-contained and easy to review.
For example, "wintypes: Add IObservableMap<HSTRING, IInspectable *> and IIterable<IKeyValuePair<HSTRING, IInspectable *>> stubs to PropertySet implementation." can be split into "Add IObservableMap<HSTRING, IInspectable *>" and "IIterable<IKeyValuePair<HSTRING, IInspectable *>>". When you are using `and` in the subject, it's an indication that it might be possible to split further.