From: Rémi Bernon rbernon@codeweavers.com
--- include/Makefile.in | 1 + include/ivectorchangedeventargs.idl | 49 +++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 include/ivectorchangedeventargs.idl
diff --git a/include/Makefile.in b/include/Makefile.in index 54cbf4d955c..40d9bf44fdd 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -378,6 +378,7 @@ SOURCES = \ iprtrmib.h \ iptypes.h \ isguids.h \ + ivectorchangedeventargs.idl \ knownfolders.h \ ks.h \ ksguid.h \ diff --git a/include/ivectorchangedeventargs.idl b/include/ivectorchangedeventargs.idl new file mode 100644 index 00000000000..45720b595f2 --- /dev/null +++ b/include/ivectorchangedeventargs.idl @@ -0,0 +1,49 @@ +/* + * Copyright 2022 Rémi Bernon for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifdef __WIDL__ +#pragma winrt ns_prefix +#endif + +import "inspectable.idl"; +import "windowscontracts.idl"; + +namespace Windows.Foundation.Collections { + [contract(Windows.Foundation.FoundationContract, 1.0)] + enum CollectionChange + { + Reset = 0, + ItemInserted = 1, + ItemRemoved = 2, + ItemChanged = 3, + }; + typedef enum CollectionChange CollectionChange; + + [ + contract(Windows.Foundation.FoundationContract, 1.0), + uuid(575933df-34fe-4480-af15-07691f3d5d9b), + pointer_default(unique), + version(0x06020000 /* NTDDI_WIN8 */), + object, + ] + interface IVectorChangedEventArgs : IInspectable + { + [propget] HRESULT CollectionChange([out, retval] CollectionChange *value); + [propget] HRESULT Index([out, retval] unsigned *value); + }; +}
From: Rémi Bernon rbernon@codeweavers.com
--- include/windows.foundation.collections.idl | 11 +++++++++++ 1 file changed, 11 insertions(+)
diff --git a/include/windows.foundation.collections.idl b/include/windows.foundation.collections.idl index 395adad27aa..567c411e129 100644 --- a/include/windows.foundation.collections.idl +++ b/include/windows.foundation.collections.idl @@ -24,6 +24,7 @@ import "inspectable.idl"; import "asyncinfo.idl"; import "windowscontracts.idl"; /* import "eventtoken.idl"; */ +import "ivectorchangedeventargs.idl";
namespace Windows { namespace Foundation { @@ -105,6 +106,16 @@ cpp_quote("#endif") HRESULT First([out, retval] Windows.Foundation.Collections.IIterator<T> **value); }
+ [ + contract(Windows.Foundation.FoundationContract, 1.0), + uuid(9939f4df-050a-4c0f-aa60-77075f9c4777) + ] + interface IMapChangedEventArgs<T> : IInspectable + { + [propget] HRESULT CollectionChanged([out, retval] Windows.Foundation.Collections.CollectionChange *value); + [propget] HRESULT Key([out, retval] T *key); + } + [ contract(Windows.Foundation.FoundationContract, 1.0), uuid(02b51929-c1c4-4a7e-8940-0312b5c18500)
From: Rémi Bernon rbernon@codeweavers.com
--- include/windows.foundation.collections.idl | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/include/windows.foundation.collections.idl b/include/windows.foundation.collections.idl index 567c411e129..31da63d5f5d 100644 --- a/include/windows.foundation.collections.idl +++ b/include/windows.foundation.collections.idl @@ -116,6 +116,15 @@ cpp_quote("#endif") [propget] HRESULT Key([out, retval] T *key); }
+ interface IObservableMap<K, V>; + + [ + contract(Windows.Foundation.FoundationContract, 1.0), + uuid(179517f3-94ee-41f8-bddc-768a895544f3) + ] + delegate HRESULT MapChangedEventHandler<K, V>([in] Windows.Foundation.Collections.IObservableMap<K, V> *sender, + [in] Windows.Foundation.Collections.IMapChangedEventArgs<K> *args); + [ contract(Windows.Foundation.FoundationContract, 1.0), uuid(02b51929-c1c4-4a7e-8940-0312b5c18500)
From: Rémi Bernon rbernon@codeweavers.com
--- include/windows.foundation.collections.idl | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
diff --git a/include/windows.foundation.collections.idl b/include/windows.foundation.collections.idl index 31da63d5f5d..8156a833a96 100644 --- a/include/windows.foundation.collections.idl +++ b/include/windows.foundation.collections.idl @@ -149,6 +149,22 @@ cpp_quote("#endif") [out] Windows.Foundation.Collections.IMapView<K, V> **second); }
+ [ + contract(Windows.Foundation.FoundationContract, 1.0), + uuid(3c2925fe-8519-45c1-aa79-197b6718c1c1) + ] + interface IMap<K, V> : IInspectable + requires Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<K, V> *> + { + HRESULT Lookup([in] K key, [out, retval] V *value); + [propget] HRESULT Size([out, retval] unsigned int *size); + HRESULT HasKey([in] K key, [out, retval] boolean *found); + HRESULT GetView([out, retval] Windows.Foundation.Collections.IMapView<K, V> **view); + HRESULT Insert([in] K key, [in] V value, [out, retval] boolean *replaced); + HRESULT Remove([in] K key); + HRESULT Clear(); + } + [ contract(Windows.Foundation.FoundationContract, 1.0), uuid(bbe1fa4c-b0e3-4583-baef-1f1b2e483e56)
From: Rémi Bernon rbernon@codeweavers.com
--- include/windows.foundation.collections.idl | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/include/windows.foundation.collections.idl b/include/windows.foundation.collections.idl index 8156a833a96..36fb9bf4161 100644 --- a/include/windows.foundation.collections.idl +++ b/include/windows.foundation.collections.idl @@ -23,7 +23,7 @@ import "inspectable.idl"; import "asyncinfo.idl"; import "windowscontracts.idl"; -/* import "eventtoken.idl"; */ +import "eventtoken.idl"; import "ivectorchangedeventargs.idl";
namespace Windows { @@ -165,6 +165,18 @@ cpp_quote("#endif") HRESULT Clear(); }
+ [ + contract(Windows.Foundation.FoundationContract, 1.0), + uuid(65df2bf5-bf39-41b5-aebc-5a9d865e472b) + ] + interface IObservableMap<K, V> : IInspectable + requires Windows.Foundation.Collections.IMap<K, V> + { + [eventadd] HRESULT MapChanged([in] Windows.Foundation.Collections.MapChangedEventHandler<K, V> *handler, + [out, retval] EventRegistrationToken *token); + [eventremove] HRESULT MapChanged([in] EventRegistrationToken token); + } + [ contract(Windows.Foundation.FoundationContract, 1.0), uuid(bbe1fa4c-b0e3-4583-baef-1f1b2e483e56)
From: Rémi Bernon rbernon@codeweavers.com
--- include/windows.foundation.idl | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+)
diff --git a/include/windows.foundation.idl b/include/windows.foundation.idl index cdc603f8e84..96bdd1167e6 100644 --- a/include/windows.foundation.idl +++ b/include/windows.foundation.idl @@ -27,6 +27,32 @@ import "eventtoken.idl"; /* import "ivectorchangedeventargs.idl"; */ import "windows.foundation.collections.idl";
+namespace Windows.Foundation.Collections { + interface IPropertySet; + + declare { + interface Windows.Foundation.Collections.IKeyValuePair<HSTRING, IInspectable *>; + interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, IInspectable *> *>; + interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Collections.IKeyValuePair<HSTRING, IInspectable *> *>; + interface Windows.Foundation.Collections.IMapChangedEventArgs<HSTRING>; + interface Windows.Foundation.Collections.MapChangedEventHandler<HSTRING, IInspectable *>; + interface Windows.Foundation.Collections.IMap<HSTRING, IInspectable *>; + interface Windows.Foundation.Collections.IMapView<HSTRING, IInspectable *>; + interface Windows.Foundation.Collections.IObservableMap<HSTRING, IInspectable *>; + } + + [ + contract(Windows.Foundation.FoundationContract, 1.0), + uuid(8a43ed9f-f4e6-4421-acf9-1dab2986820c) + ] + interface IPropertySet : IInspectable + requires Windows.Foundation.Collections.IObservableMap<HSTRING, IInspectable *>, + Windows.Foundation.Collections.IMap<HSTRING, IInspectable *>, + Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, IInspectable *> *> + { + } +} + namespace Windows.Foundation { typedef enum PropertyType PropertyType; typedef struct Point Point;
From: Rémi Bernon rbernon@codeweavers.com
--- include/windows.foundation.collections.idl | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+)
diff --git a/include/windows.foundation.collections.idl b/include/windows.foundation.collections.idl index 36fb9bf4161..4b72c63882c 100644 --- a/include/windows.foundation.collections.idl +++ b/include/windows.foundation.collections.idl @@ -177,6 +177,15 @@ cpp_quote("#endif") [eventremove] HRESULT MapChanged([in] EventRegistrationToken token); }
+ interface IObservableVector<T>; + + [ + contract(Windows.Foundation.FoundationContract, 1.0), + uuid(0c051752-9fbf-4c70-aa0c-0e4c82d9a761) + ] + delegate HRESULT VectorChangedEventHandler<T>([in] Windows.Foundation.Collections.IObservableVector<T> *sender, + [in] Windows.Foundation.Collections.IVectorChangedEventArgs *args); + [ contract(Windows.Foundation.FoundationContract, 1.0), uuid(bbe1fa4c-b0e3-4583-baef-1f1b2e483e56) @@ -210,6 +219,18 @@ cpp_quote("#endif") HRESULT GetMany([in] UINT32 start_index, [in] UINT32 items_size, [out] T *items, [out, retval] UINT32 *value); HRESULT ReplaceAll([in] UINT32 count, [in] T *items); } + + [ + contract(Windows.Foundation.FoundationContract, 1.0), + uuid(5917eb53-50b4-4a0d-b309-65862b3f1dbc) + ] + interface IObservableVector<T> : IInspectable + requires Windows.Foundation.Collections.IVector<T> + { + [eventadd] HRESULT VectorChanged([in] Windows.Foundation.Collections.VectorChangedEventHandler<T> *handler, + [out, retval] EventRegistrationToken *token); + [eventremove] HRESULT VectorChanged([in] EventRegistrationToken token); + } } #endif }
From: Rémi Bernon rbernon@codeweavers.com
--- include/windows.foundation.collections.idl | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+)
diff --git a/include/windows.foundation.collections.idl b/include/windows.foundation.collections.idl index 4b72c63882c..0f10f4dbc00 100644 --- a/include/windows.foundation.collections.idl +++ b/include/windows.foundation.collections.idl @@ -68,6 +68,34 @@ cpp_quote("#endif") HRESULT GetResults([out, retval] TResult *results); }
+ interface IAsyncActionWithProgress<TProgress>; + + [ + contract(Windows.Foundation.FoundationContract, 1.0), + uuid(6d844858-0cff-4590-ae89-95a5a5c8b4b8) + ] + delegate HRESULT AsyncActionProgressHandler<TProgress>([in] Windows.Foundation.IAsyncActionWithProgress<TProgress> *info, + [in] TProgress progress); + [ + contract(Windows.Foundation.FoundationContract, 1.0), + uuid(9c029f91-cc84-44fd-ac26-0a6c4e555281) + ] + delegate HRESULT AsyncActionWithProgressCompletedHandler<TProgress>([in] Windows.Foundation.IAsyncActionWithProgress<TProgress> *info, + [in] AsyncStatus status); + + [ + contract(Windows.Foundation.FoundationContract, 1.0), + uuid(1f6db258-e803-48a1-9546-eb7353398884) + ] + interface IAsyncActionWithProgress<TProgress> : IInspectable + { + [propput] HRESULT Progress([in] Windows.Foundation.AsyncActionProgressHandler<TProgress> *handler); + [propget] HRESULT Progress([out, retval] Windows.Foundation.AsyncActionProgressHandler<TProgress> **handler); + [propput] HRESULT Completed([in] Windows.Foundation.AsyncActionWithProgressCompletedHandler<TProgress> *handler); + [propget] HRESULT Completed([out, retval] Windows.Foundation.AsyncActionWithProgressCompletedHandler<TProgress> **handler); + HRESULT GetResults(); + } + [ contract(Windows.Foundation.FoundationContract, 1.0), uuid(9de1c534-6ae1-11e0-84e1-18a905bcc53f)
From: Rémi Bernon rbernon@codeweavers.com
--- include/windows.foundation.collections.idl | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+)
diff --git a/include/windows.foundation.collections.idl b/include/windows.foundation.collections.idl index 0f10f4dbc00..680d7803cc8 100644 --- a/include/windows.foundation.collections.idl +++ b/include/windows.foundation.collections.idl @@ -96,6 +96,34 @@ cpp_quote("#endif") HRESULT GetResults(); }
+ interface IAsyncOperationWithProgress<TResult, TProgress>; + + [ + contract(Windows.Foundation.FoundationContract, 1.0), + uuid(55690902-0aab-421a-8778-f8ce5026d758) + ] + delegate HRESULT AsyncOperationProgressHandler<TResult, TProgress>([in] Windows.Foundation.IAsyncOperationWithProgress<TResult, TProgress> *info, + [in] TProgress progress); + [ + contract(Windows.Foundation.FoundationContract, 1.0), + uuid(e85df41d-6aa7-46e3-a8e2-f009d840c627) + ] + delegate HRESULT AsyncOperationWithProgressCompletedHandler<TResult, TProgress>([in] Windows.Foundation.IAsyncOperationWithProgress<TResult, TProgress> *info, + [in] AsyncStatus status); + + [ + contract(Windows.Foundation.FoundationContract, 1.0), + uuid(b5d036d7-e297-498f-ba60-0289e76e23dd) + ] + interface IAsyncOperationWithProgress<TResult, TProgress> : IInspectable + { + [propput] HRESULT Progress([in] Windows.Foundation.AsyncOperationProgressHandler<TResult, TProgress> *handler); + [propget] HRESULT Progress([out, retval] Windows.Foundation.AsyncOperationProgressHandler<TResult, TProgress> **handler); + [propput] HRESULT Completed([in] Windows.Foundation.AsyncOperationWithProgressCompletedHandler<TResult, TProgress> *handler); + [propget] HRESULT Completed([out, retval] Windows.Foundation.AsyncOperationWithProgressCompletedHandler<TResult, TProgress> **handler); + HRESULT GetResults([out, retval] TResult *results); + } + [ contract(Windows.Foundation.FoundationContract, 1.0), uuid(9de1c534-6ae1-11e0-84e1-18a905bcc53f)