2 * SPDX-FileCopyrightText: This file has no copyright assigned and is placed in the Public Domain.
3 * SPDX-License-Identifier: CC0-1.0
5 * This file is part of the w64 mingw-runtime package.
6 * No warranty is given; refer to https://github.com/kinke/mingw-w64-crt/blob/master/DISCLAIMER.PD.
9 typedef interface IIterator IIterator;
10 typedef interface IIterable IIterable;
13 typedef struct IIteratorVtbl {
16 /*** IUnknown methods ***/
17 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
22 ULONG (STDMETHODCALLTYPE *AddRef)(
25 ULONG (STDMETHODCALLTYPE *Release)(
28 /*** IInspectable methods ***/
29 HRESULT (STDMETHODCALLTYPE *GetIids)(
34 HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
38 HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
40 TrustLevel *trustLevel);
42 /*** IIterator methods ***/
43 HRESULT (STDMETHODCALLTYPE *get_Current)(
47 HRESULT (STDMETHODCALLTYPE *get_HasCurrent)(
51 HRESULT (STDMETHODCALLTYPE *MoveNext)(
55 HRESULT (STDMETHODCALLTYPE *GetMany)(
65 CONST_VTBL IIteratorVtbl* lpVtbl;
68 /*** IUnknown methods ***/
69 #define IIterator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
70 #define IIterator_AddRef(This) (This)->lpVtbl->AddRef(This)
71 #define IIterator_Release(This) (This)->lpVtbl->Release(This)
72 /*** IInspectable methods ***/
73 #define IIterator_GetIids(This,count,ids) (This)->lpVtbl->GetIids(This,count,ids)
74 #define IIterator_GetRuntimeClassName(This,name) (This)->lpVtbl->GetRuntimeClassName(This,name)
75 #define IIterator_GetTrustLevel(This,level) (This)->lpVtbl->GetTrustLevel(This,level)
76 /*** IIterator methods ***/
77 #define IIterator_get_Current(This,current) (This)->lpVtbl->get_Current(This,current)
78 #define IIterator_get_HasCurrent(This,hasCurrent) (This)->lpVtbl->get_HasCurrent(This,hasCurrent)
79 #define IIterator_MoveNext(This,hasCurrent) (This)->lpVtbl->MoveNext(This,hasCurrent)
80 #define IIterator_GetMany(This,capacity,value,actual) (This)->lpVtbl->GetMany(This,capacity,value,actual)
83 typedef struct IIterableVtbl {
86 /*** IUnknown methods ***/
87 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
92 ULONG (STDMETHODCALLTYPE *AddRef)(
95 ULONG (STDMETHODCALLTYPE *Release)(
98 /*** IInspectable methods ***/
99 HRESULT (STDMETHODCALLTYPE *GetIids)(
104 HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
108 HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
110 TrustLevel *trustLevel);
112 /*** IIterable methods ***/
113 HRESULT (STDMETHODCALLTYPE *First)(
120 interface IIterable {
121 CONST_VTBL IIterableVtbl* lpVtbl;
124 /*** IUnknown methods ***/
125 #define IIterable_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
126 #define IIterable_AddRef(This) (This)->lpVtbl->AddRef(This)
127 #define IIterable_Release(This) (This)->lpVtbl->Release(This)
128 /*** IInspectable methods ***/
129 #define IIterable_GetIids(This,count,ids) (This)->lpVtbl->GetIids(This,count,ids)
130 #define IIterable_GetRuntimeClassName(This,name) (This)->lpVtbl->GetRuntimeClassName(This,name)
131 #define IIterable_GetTrustLevel(This,level) (This)->lpVtbl->GetTrustLevel(This,level)
132 /*** IIterable methods ***/
133 #define IIterable_First(This,retval) (This)->lpVtbl->First(This,retval)