// WARNING: Please don't edit this file. It was generated by C++/WinRT v2.0.240405.15 #pragma once #ifndef WINRT_Windows_Foundation_Collections_0_H #define WINRT_Windows_Foundation_Collections_0_H WINRT_EXPORT namespace winrt::Windows::Foundation { struct EventRegistrationToken; } WINRT_EXPORT namespace winrt::Windows::Foundation::Collections { enum class CollectionChange : int32_t { Reset = 0, ItemInserted = 1, ItemRemoved = 2, ItemChanged = 3, }; template struct WINRT_IMPL_EMPTY_BASES IIterable; template struct WINRT_IMPL_EMPTY_BASES IIterator; template struct WINRT_IMPL_EMPTY_BASES IKeyValuePair; template struct WINRT_IMPL_EMPTY_BASES IMapChangedEventArgs; template struct WINRT_IMPL_EMPTY_BASES IMapView; template struct WINRT_IMPL_EMPTY_BASES IMap; template struct WINRT_IMPL_EMPTY_BASES IObservableMap; template struct WINRT_IMPL_EMPTY_BASES IObservableVector; struct IPropertySet; struct IVectorChangedEventArgs; template struct WINRT_IMPL_EMPTY_BASES IVectorView; template struct WINRT_IMPL_EMPTY_BASES IVector; struct PropertySet; struct StringMap; struct ValueSet; template struct WINRT_IMPL_EMPTY_BASES MapChangedEventHandler; template struct WINRT_IMPL_EMPTY_BASES VectorChangedEventHandler; } namespace winrt::impl { template struct category>{ using type = generic_category; }; template struct category>{ using type = generic_category; }; template struct category>{ using type = generic_category; }; template struct category>{ using type = generic_category; }; template struct category>{ using type = generic_category; }; template struct category>{ using type = generic_category; }; template struct category>{ using type = generic_category; }; template struct category>{ using type = generic_category; }; template <> struct category{ using type = interface_category; }; template <> struct category{ using type = interface_category; }; template struct category>{ using type = generic_category; }; template struct category>{ using type = generic_category; }; template <> struct category{ using type = class_category; }; template <> struct category{ using type = class_category; }; template <> struct category{ using type = class_category; }; template <> struct category{ using type = enum_category; }; template struct category>{ using type = generic_category; }; template struct category>{ using type = generic_category; }; template <> inline constexpr auto& name_v = L"Windows.Foundation.Collections.PropertySet"; template <> inline constexpr auto& name_v = L"Windows.Foundation.Collections.StringMap"; template <> inline constexpr auto& name_v = L"Windows.Foundation.Collections.ValueSet"; template <> inline constexpr auto& name_v = L"Windows.Foundation.Collections.CollectionChange"; template inline constexpr auto name_v> = zcombine(L"Windows.Foundation.Collections.IIterable`1<", name_v, L">"); template inline constexpr auto name_v> = zcombine(L"Windows.Foundation.Collections.IIterator`1<", name_v, L">"); template inline constexpr auto name_v> = zcombine(L"Windows.Foundation.Collections.IKeyValuePair`2<", name_v, L", ", name_v, L">"); template inline constexpr auto name_v> = zcombine(L"Windows.Foundation.Collections.IMapChangedEventArgs`1<", name_v, L">"); template inline constexpr auto name_v> = zcombine(L"Windows.Foundation.Collections.IMapView`2<", name_v, L", ", name_v, L">"); template inline constexpr auto name_v> = zcombine(L"Windows.Foundation.Collections.IMap`2<", name_v, L", ", name_v, L">"); template inline constexpr auto name_v> = zcombine(L"Windows.Foundation.Collections.IObservableMap`2<", name_v, L", ", name_v, L">"); template inline constexpr auto name_v> = zcombine(L"Windows.Foundation.Collections.IObservableVector`1<", name_v, L">"); template <> inline constexpr auto& name_v = L"Windows.Foundation.Collections.IPropertySet"; template <> inline constexpr auto& name_v = L"Windows.Foundation.Collections.IVectorChangedEventArgs"; template inline constexpr auto name_v> = zcombine(L"Windows.Foundation.Collections.IVectorView`1<", name_v, L">"); template inline constexpr auto name_v> = zcombine(L"Windows.Foundation.Collections.IVector`1<", name_v, L">"); template inline constexpr auto name_v> = zcombine(L"Windows.Foundation.Collections.MapChangedEventHandler`2<", name_v, L", ", name_v, L">"); template inline constexpr auto name_v> = zcombine(L"Windows.Foundation.Collections.VectorChangedEventHandler`1<", name_v, L">"); template inline constexpr guid guid_v>{ pinterface_guid>::value }; template inline constexpr guid generic_guid_v>{ 0xFAA585EA,0x6214,0x4217,{ 0xAF,0xDA,0x7F,0x46,0xDE,0x58,0x69,0xB3 } }; // FAA585EA-6214-4217-AFDA-7F46DE5869B3 template inline constexpr guid guid_v>{ pinterface_guid>::value }; template inline constexpr guid generic_guid_v>{ 0x6A79E863,0x4300,0x459A,{ 0x99,0x66,0xCB,0xB6,0x60,0x96,0x3E,0xE1 } }; // 6A79E863-4300-459A-9966-CBB660963EE1 template inline constexpr guid guid_v>{ pinterface_guid>::value }; template inline constexpr guid generic_guid_v>{ 0x02B51929,0xC1C4,0x4A7E,{ 0x89,0x40,0x03,0x12,0xB5,0xC1,0x85,0x00 } }; // 02B51929-C1C4-4A7E-8940-0312B5C18500 template inline constexpr guid guid_v>{ pinterface_guid>::value }; template inline constexpr guid generic_guid_v>{ 0x9939F4DF,0x050A,0x4C0F,{ 0xAA,0x60,0x77,0x07,0x5F,0x9C,0x47,0x77 } }; // 9939F4DF-050A-4C0F-AA60-77075F9C4777 template inline constexpr guid guid_v>{ pinterface_guid>::value }; template inline constexpr guid generic_guid_v>{ 0xE480CE40,0xA338,0x4ADA,{ 0xAD,0xCF,0x27,0x22,0x72,0xE4,0x8C,0xB9 } }; // E480CE40-A338-4ADA-ADCF-272272E48CB9 template inline constexpr guid guid_v>{ pinterface_guid>::value }; template inline constexpr guid generic_guid_v>{ 0x3C2925FE,0x8519,0x45C1,{ 0xAA,0x79,0x19,0x7B,0x67,0x18,0xC1,0xC1 } }; // 3C2925FE-8519-45C1-AA79-197B6718C1C1 template inline constexpr guid guid_v>{ pinterface_guid>::value }; template inline constexpr guid generic_guid_v>{ 0x65DF2BF5,0xBF39,0x41B5,{ 0xAE,0xBC,0x5A,0x9D,0x86,0x5E,0x47,0x2B } }; // 65DF2BF5-BF39-41B5-AEBC-5A9D865E472B template inline constexpr guid guid_v>{ pinterface_guid>::value }; template inline constexpr guid generic_guid_v>{ 0x5917EB53,0x50B4,0x4A0D,{ 0xB3,0x09,0x65,0x86,0x2B,0x3F,0x1D,0xBC } }; // 5917EB53-50B4-4A0D-B309-65862B3F1DBC template <> inline constexpr guid guid_v{ 0x8A43ED9F,0xF4E6,0x4421,{ 0xAC,0xF9,0x1D,0xAB,0x29,0x86,0x82,0x0C } }; // 8A43ED9F-F4E6-4421-ACF9-1DAB2986820C template <> inline constexpr guid guid_v{ 0x575933DF,0x34FE,0x4480,{ 0xAF,0x15,0x07,0x69,0x1F,0x3D,0x5D,0x9B } }; // 575933DF-34FE-4480-AF15-07691F3D5D9B template inline constexpr guid guid_v>{ pinterface_guid>::value }; template inline constexpr guid generic_guid_v>{ 0xBBE1FA4C,0xB0E3,0x4583,{ 0xBA,0xEF,0x1F,0x1B,0x2E,0x48,0x3E,0x56 } }; // BBE1FA4C-B0E3-4583-BAEF-1F1B2E483E56 template inline constexpr guid guid_v>{ pinterface_guid>::value }; template inline constexpr guid generic_guid_v>{ 0x913337E9,0x11A1,0x4345,{ 0xA3,0xA2,0x4E,0x7F,0x95,0x6E,0x22,0x2D } }; // 913337E9-11A1-4345-A3A2-4E7F956E222D template inline constexpr guid guid_v>{ pinterface_guid>::value }; template inline constexpr guid generic_guid_v>{ 0x179517F3,0x94EE,0x41F8,{ 0xBD,0xDC,0x76,0x8A,0x89,0x55,0x44,0xF3 } }; // 179517F3-94EE-41F8-BDDC-768A895544F3 template inline constexpr guid guid_v>{ pinterface_guid>::value }; template inline constexpr guid generic_guid_v>{ 0x0C051752,0x9FBF,0x4C70,{ 0xAA,0x0C,0x0E,0x4C,0x82,0xD9,0xA7,0x61 } }; // 0C051752-9FBF-4C70-AA0C-0E4C82D9A761 template <> struct default_interface{ using type = winrt::Windows::Foundation::Collections::IPropertySet; }; template <> struct default_interface{ using type = winrt::Windows::Foundation::Collections::IMap; }; template <> struct default_interface{ using type = winrt::Windows::Foundation::Collections::IPropertySet; }; template struct abi> { struct WINRT_IMPL_NOVTABLE type : inspectable_abi { virtual int32_t __stdcall First(void**) noexcept = 0; }; }; template struct abi> { struct WINRT_IMPL_NOVTABLE type : inspectable_abi { virtual int32_t __stdcall get_Current(arg_out) noexcept = 0; virtual int32_t __stdcall get_HasCurrent(bool*) noexcept = 0; virtual int32_t __stdcall MoveNext(bool*) noexcept = 0; virtual int32_t __stdcall GetMany(uint32_t, arg_out, uint32_t*) noexcept = 0; }; }; template struct abi> { struct WINRT_IMPL_NOVTABLE type : inspectable_abi { virtual int32_t __stdcall get_Key(arg_out) noexcept = 0; virtual int32_t __stdcall get_Value(arg_out) noexcept = 0; }; }; template struct abi> { struct WINRT_IMPL_NOVTABLE type : inspectable_abi { virtual int32_t __stdcall get_CollectionChange(int32_t*) noexcept = 0; virtual int32_t __stdcall get_Key(arg_out) noexcept = 0; }; }; template struct abi> { struct WINRT_IMPL_NOVTABLE type : inspectable_abi { virtual int32_t __stdcall Lookup(arg_in, arg_out) noexcept = 0; virtual int32_t __stdcall get_Size(uint32_t*) noexcept = 0; virtual int32_t __stdcall HasKey(arg_in, bool*) noexcept = 0; virtual int32_t __stdcall Split(void**, void**) noexcept = 0; }; }; template struct abi> { struct WINRT_IMPL_NOVTABLE type : inspectable_abi { virtual int32_t __stdcall Lookup(arg_in, arg_out) noexcept = 0; virtual int32_t __stdcall get_Size(uint32_t*) noexcept = 0; virtual int32_t __stdcall HasKey(arg_in, bool*) noexcept = 0; virtual int32_t __stdcall GetView(void**) noexcept = 0; virtual int32_t __stdcall Insert(arg_in, arg_in, bool*) noexcept = 0; virtual int32_t __stdcall Remove(arg_in) noexcept = 0; virtual int32_t __stdcall Clear() noexcept = 0; }; }; template struct abi> { struct WINRT_IMPL_NOVTABLE type : inspectable_abi { virtual int32_t __stdcall add_MapChanged(void*, winrt::event_token*) noexcept = 0; virtual int32_t __stdcall remove_MapChanged(winrt::event_token) noexcept = 0; }; }; template struct abi> { struct WINRT_IMPL_NOVTABLE type : inspectable_abi { virtual int32_t __stdcall add_VectorChanged(void*, winrt::event_token*) noexcept = 0; virtual int32_t __stdcall remove_VectorChanged(winrt::event_token) noexcept = 0; }; }; template <> struct abi { struct WINRT_IMPL_NOVTABLE type : inspectable_abi { }; }; template <> struct abi { struct WINRT_IMPL_NOVTABLE type : inspectable_abi { virtual int32_t __stdcall get_CollectionChange(int32_t*) noexcept = 0; virtual int32_t __stdcall get_Index(uint32_t*) noexcept = 0; }; }; template struct abi> { struct WINRT_IMPL_NOVTABLE type : inspectable_abi { virtual int32_t __stdcall GetAt(uint32_t, arg_out) noexcept = 0; virtual int32_t __stdcall get_Size(uint32_t*) noexcept = 0; virtual int32_t __stdcall IndexOf(arg_in, uint32_t*, bool*) noexcept = 0; virtual int32_t __stdcall GetMany(uint32_t, uint32_t, arg_out, uint32_t*) noexcept = 0; }; }; template struct abi> { struct WINRT_IMPL_NOVTABLE type : inspectable_abi { virtual int32_t __stdcall GetAt(uint32_t, arg_out) noexcept = 0; virtual int32_t __stdcall get_Size(uint32_t*) noexcept = 0; virtual int32_t __stdcall GetView(void**) noexcept = 0; virtual int32_t __stdcall IndexOf(arg_in, uint32_t*, bool*) noexcept = 0; virtual int32_t __stdcall SetAt(uint32_t, arg_in) noexcept = 0; virtual int32_t __stdcall InsertAt(uint32_t, arg_in) noexcept = 0; virtual int32_t __stdcall RemoveAt(uint32_t) noexcept = 0; virtual int32_t __stdcall Append(arg_in) noexcept = 0; virtual int32_t __stdcall RemoveAtEnd() noexcept = 0; virtual int32_t __stdcall Clear() noexcept = 0; virtual int32_t __stdcall GetMany(uint32_t, uint32_t, arg_out, uint32_t*) noexcept = 0; virtual int32_t __stdcall ReplaceAll(uint32_t, arg_out) noexcept = 0; }; }; template struct abi> { struct WINRT_IMPL_NOVTABLE type : unknown_abi { virtual int32_t __stdcall Invoke(void*, void*) noexcept = 0; }; }; template struct abi> { struct WINRT_IMPL_NOVTABLE type : unknown_abi { virtual int32_t __stdcall Invoke(void*, void*) noexcept = 0; }; }; template struct consume_Windows_Foundation_Collections_IIterable { auto First() const; auto begin() const; auto end() const; }; template struct consume> { template using type = consume_Windows_Foundation_Collections_IIterable; }; template struct consume_Windows_Foundation_Collections_IIterator { [[nodiscard]] auto Current() const; [[nodiscard]] auto HasCurrent() const; auto MoveNext() const; auto GetMany(array_view items) const; auto& operator++() { if (!MoveNext()) { static_cast(*this) = nullptr; } return static_cast(*this); } T operator*() const { return Current(); } void operator++(int) { ++(*this); } }; template struct consume> { template using type = consume_Windows_Foundation_Collections_IIterator; }; template struct consume_Windows_Foundation_Collections_IKeyValuePair { [[nodiscard]] auto Key() const; [[nodiscard]] auto Value() const; bool operator==(Windows::Foundation::Collections::IKeyValuePair const& other) const { return Key() == other.Key() && Value() == other.Value(); } bool operator!=(Windows::Foundation::Collections::IKeyValuePair const& other) const { return !(*this == other); } }; template struct consume> { template using type = consume_Windows_Foundation_Collections_IKeyValuePair; }; template struct consume_Windows_Foundation_Collections_IMapChangedEventArgs { [[nodiscard]] auto CollectionChange() const; [[nodiscard]] auto Key() const; }; template struct consume> { template using type = consume_Windows_Foundation_Collections_IMapChangedEventArgs; }; template struct consume_Windows_Foundation_Collections_IMapView { auto Lookup(impl::param_type const& key) const; [[nodiscard]] auto Size() const; auto HasKey(impl::param_type const& key) const; auto Split(winrt::Windows::Foundation::Collections::IMapView& first, winrt::Windows::Foundation::Collections::IMapView& second) const; auto TryLookup(param_type const& key) const { if constexpr (std::is_base_of_v) { V result{ nullptr }; impl::check_hresult_allow_bounds(WINRT_IMPL_SHIM(Windows::Foundation::Collections::IMapView)->Lookup(get_abi(key), put_abi(result))); return result; } else { std::optional result; V value{ empty_value() }; if (0 == impl::check_hresult_allow_bounds(WINRT_IMPL_SHIM(Windows::Foundation::Collections::IMapView)->Lookup(get_abi(key), put_abi(value)))) { result = std::move(value); } return result; } } }; template struct consume> { template using type = consume_Windows_Foundation_Collections_IMapView; }; template struct consume_Windows_Foundation_Collections_IMap { auto Lookup(impl::param_type const& key) const; [[nodiscard]] auto Size() const; auto HasKey(impl::param_type const& key) const; auto GetView() const; auto Insert(impl::param_type const& key, impl::param_type const& value) const; auto Remove(impl::param_type const& key) const; auto Clear() const; auto TryLookup(param_type const& key) const { if constexpr (std::is_base_of_v) { V result{ nullptr }; impl::check_hresult_allow_bounds(WINRT_IMPL_SHIM(Windows::Foundation::Collections::IMap)->Lookup(get_abi(key), put_abi(result))); return result; } else { std::optional result; V value{ empty_value() }; if (0 == impl::check_hresult_allow_bounds(WINRT_IMPL_SHIM(Windows::Foundation::Collections::IMap)->Lookup(get_abi(key), put_abi(value)))) { result = std::move(value); } return result; } } auto TryRemove(param_type const& key) const { return 0 == impl::check_hresult_allow_bounds(WINRT_IMPL_SHIM(Windows::Foundation::Collections::IMap)->Remove(get_abi(key))); } }; template struct consume> { template using type = consume_Windows_Foundation_Collections_IMap; }; template struct consume_Windows_Foundation_Collections_IObservableMap { auto MapChanged(winrt::Windows::Foundation::Collections::MapChangedEventHandler const& vhnd) const; using MapChanged_revoker = impl::event_revoker, &impl::abi_t>::remove_MapChanged>; [[nodiscard]] auto MapChanged(auto_revoke_t, winrt::Windows::Foundation::Collections::MapChangedEventHandler const& vhnd) const; auto MapChanged(winrt::event_token const& token) const noexcept; }; template struct consume> { template using type = consume_Windows_Foundation_Collections_IObservableMap; }; template struct consume_Windows_Foundation_Collections_IObservableVector { auto VectorChanged(winrt::Windows::Foundation::Collections::VectorChangedEventHandler const& vhnd) const; using VectorChanged_revoker = impl::event_revoker, &impl::abi_t>::remove_VectorChanged>; [[nodiscard]] auto VectorChanged(auto_revoke_t, winrt::Windows::Foundation::Collections::VectorChangedEventHandler const& vhnd) const; auto VectorChanged(winrt::event_token const& token) const noexcept; }; template struct consume> { template using type = consume_Windows_Foundation_Collections_IObservableVector; }; template struct consume_Windows_Foundation_Collections_IPropertySet { }; template <> struct consume { template using type = consume_Windows_Foundation_Collections_IPropertySet; }; template struct consume_Windows_Foundation_Collections_IVectorChangedEventArgs { [[nodiscard]] auto CollectionChange() const; [[nodiscard]] auto Index() const; }; template <> struct consume { template using type = consume_Windows_Foundation_Collections_IVectorChangedEventArgs; }; template struct consume_Windows_Foundation_Collections_IVectorView { auto GetAt(uint32_t index) const; [[nodiscard]] auto Size() const; auto IndexOf(impl::param_type const& value, uint32_t& index) const; auto GetMany(uint32_t startIndex, array_view items) const; }; template struct consume> { template using type = consume_Windows_Foundation_Collections_IVectorView; }; template struct consume_Windows_Foundation_Collections_IVector { auto GetAt(uint32_t index) const; [[nodiscard]] auto Size() const; auto GetView() const; auto IndexOf(impl::param_type const& value, uint32_t& index) const; auto SetAt(uint32_t index, impl::param_type const& value) const; auto InsertAt(uint32_t index, impl::param_type const& value) const; auto RemoveAt(uint32_t index) const; auto Append(impl::param_type const& value) const; auto RemoveAtEnd() const; auto Clear() const; auto GetMany(uint32_t startIndex, array_view items) const; auto ReplaceAll(array_view items) const; }; template struct consume> { template using type = consume_Windows_Foundation_Collections_IVector; }; } #endif