1 /*
2 * SPDX-FileCopyrightText: This file has no copyright assigned and is placed in the Public Domain.
3 * SPDX-License-Identifier: CC0-1.0
4 *
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.
7 */
8
9 typedef interface IIterator IIterator;
10 typedef interface IIterable IIterable;
11
12 /* IIterator */
13 typedef struct IIteratorVtbl {
14 BEGIN_INTERFACE
15
16 /*** IUnknown methods ***/
17 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
18 IIterator *This,
19 REFIID riid,
20 void **ppvObject);
21
22 ULONG (STDMETHODCALLTYPE *AddRef)(
23 IIterator *This);
24
25 ULONG (STDMETHODCALLTYPE *Release)(
26 IIterator *This);
27
28 /*** IInspectable methods ***/
29 HRESULT (STDMETHODCALLTYPE *GetIids)(
30 IIterator *This,
31 UINT32 *count,
32 IID **ids);
33
34 HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
35 IIterator *This,
36 HSTRING *className);
37
38 HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
39 IIterator *This,
40 TrustLevel *trustLevel);
41
42 /*** IIterator methods ***/
43 HRESULT (STDMETHODCALLTYPE *get_Current)(
44 IIterator *This,
45 IUnknown **current);
46
47 HRESULT (STDMETHODCALLTYPE *get_HasCurrent)(
48 IIterator *This,
49 CHAR *hasCurrent);
50
51 HRESULT (STDMETHODCALLTYPE *MoveNext)(
52 IIterator *This,
53 CHAR *hasCurrent);
54
55 HRESULT (STDMETHODCALLTYPE *GetMany)(
56 IIterator *This,
57 UINT capacity,
58 void *value,
59 UINT *actual);
60
61 END_INTERFACE
62 } IIteratorVtbl;
63
64 interface IIterator {
65 CONST_VTBL IIteratorVtbl* lpVtbl;
66 };
67
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)
81
82 /* IIterable */
83 typedef struct IIterableVtbl {
84 BEGIN_INTERFACE
85
86 /*** IUnknown methods ***/
87 HRESULT (STDMETHODCALLTYPE *QueryInterface)(
88 IIterable *This,
89 REFIID riid,
90 void **ppvObject);
91
92 ULONG (STDMETHODCALLTYPE *AddRef)(
93 IIterable *This);
94
95 ULONG (STDMETHODCALLTYPE *Release)(
96 IIterable *This);
97
98 /*** IInspectable methods ***/
99 HRESULT (STDMETHODCALLTYPE *GetIids)(
100 IIterable *This,
101 UINT32 *count,
102 IID **ids);
103
104 HRESULT (STDMETHODCALLTYPE *GetRuntimeClassName)(
105 IIterable *This,
106 HSTRING *className);
107
108 HRESULT (STDMETHODCALLTYPE *GetTrustLevel)(
109 IIterable *This,
110 TrustLevel *trustLevel);
111
112 /*** IIterable methods ***/
113 HRESULT (STDMETHODCALLTYPE *First)(
114 IIterable *This,
115 IIterator **first);
116
117 END_INTERFACE
118 } IIterableVtbl;
119
120 interface IIterable {
121 CONST_VTBL IIterableVtbl* lpVtbl;
122 };
123
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)