Mercurial > games > semicongine
annotate fuhtark_test/include/winapi/mspcoll.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
| rev | line source |
|---|---|
|
1500
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
1 #ifndef _MSPCOLL_H_ |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
2 #define _MSPCOLL_H_ |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
3 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
4 template <class T> class CTapiIfCollection : public IDispatchImpl<ITCollection,&IID_ITCollection,&LIBID_TAPI3Lib>,public CComObjectRootEx<CComMultiThreadModelNoCS> |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
5 { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
6 public: |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
7 typedef CTapiIfCollection<T> _CTapiCollectionBase; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
8 BEGIN_COM_MAP(_CTapiCollectionBase) |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
9 COM_INTERFACE_ENTRY(IDispatch) |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
10 COM_INTERFACE_ENTRY(ITCollection) |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
11 END_COM_MAP() |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
12 private: |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
13 int m_nSize; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
14 CComVariant *m_Var; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
15 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
16 public: |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
17 CTapiIfCollection(void) : m_nSize(0),m_Var(NULL) { } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
18 HRESULT WINAPI Initialize(DWORD dwSize,T *pBegin,T *pEnd) { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
19 int i; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
20 HRESULT hr; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
21 T *iter; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
22 LOG((MSP_TRACE,"CTapiCollection::Initialize - enter")); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
23 m_nSize = dwSize; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
24 m_Var = new CComVariant[m_nSize]; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
25 if(!m_Var) return E_OUTOFMEMORY; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
26 i = 0; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
27 for(iter = pBegin;iter!=pEnd;iter++) { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
28 IDispatch *pDisp = NULL; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
29 hr = (*iter)->QueryInterface(IID_IDispatch,(void**)&pDisp); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
30 if(hr!=S_OK) return hr; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
31 CComVariant& var = m_Var[i]; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
32 VariantInit(&var); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
33 var.vt = VT_DISPATCH; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
34 var.pdispVal = pDisp; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
35 i++; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
36 } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
37 LOG((MSP_TRACE,"CTapiCollection::Initialize - exit")); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
38 return S_OK; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
39 } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
40 void FinalRelease() { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
41 LOG((MSP_TRACE,"CTapiCollection::FinalRelease - enter")); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
42 delete [] m_Var; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
43 LOG((MSP_TRACE,"CTapiCollection::FinalRelease - exit")); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
44 } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
45 STDMETHOD(get_Count)(long *retval) { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
46 HRESULT hr = S_OK; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
47 LOG((MSP_TRACE,"CTapiCollection::get_Count - enter")); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
48 try { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
49 *retval = m_nSize; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
50 } catch(...) { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
51 hr = E_INVALIDARG; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
52 } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
53 LOG((MSP_TRACE,"CTapiCollection::get_Count - exit")); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
54 return hr; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
55 } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
56 STDMETHOD(get_Item)(long Index,VARIANT *retval) { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
57 HRESULT hr = S_OK; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
58 LOG((MSP_TRACE,"CTapiCollection::get_Item - enter")); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
59 if(!retval) return E_POINTER; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
60 try { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
61 VariantInit(retval); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
62 } catch(...) { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
63 hr = E_INVALIDARG; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
64 } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
65 if(hr!=S_OK) return hr; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
66 retval->vt = VT_UNKNOWN; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
67 retval->punkVal = NULL; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
68 if((Index < 1) || (Index > m_nSize)) return E_INVALIDARG; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
69 hr = VariantCopy(retval,&m_Var[Index-1]); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
70 if(FAILED(hr)) { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
71 LOG((MSP_ERROR,"CTapiCollection::get_Item - VariantCopy failed. hr = %lx",hr)); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
72 return hr; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
73 } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
74 LOG((MSP_TRACE,"CTapiCollection::get_Item - exit")); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
75 return S_OK; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
76 } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
77 HRESULT WINAPI get__NewEnum(IUnknown **retval) { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
78 HRESULT hr; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
79 LOG((MSP_TRACE,"CTapiCollection::new__Enum - enter")); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
80 if(!retval) return E_POINTER; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
81 *retval = NULL; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
82 typedef CComObject<CSafeComEnum<IEnumVARIANT,&IID_IEnumVARIANT,VARIANT,_Copy<VARIANT> > > enumvar; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
83 enumvar *p; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
84 hr = enumvar::CreateInstance(&p); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
85 if(FAILED(hr)) return hr; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
86 hr = p->Init(&m_Var[0],&m_Var[m_nSize],NULL,AtlFlagCopy); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
87 if(SUCCEEDED(hr)) hr = p->QueryInterface(IID_IEnumVARIANT,(void**)retval); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
88 if(FAILED(hr)) delete p; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
89 LOG((MSP_TRACE,"CTapiCollection::new__Enum - exit")); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
90 return hr; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
91 } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
92 }; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
93 |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
94 class CTapiBstrCollection : public CComObjectRootEx<CComMultiThreadModelNoCS>,public IDispatchImpl<ITCollection,&IID_ITCollection,&LIBID_TAPI3Lib>,public CMSPObjectSafetyImpl |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
95 { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
96 public: |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
97 BEGIN_COM_MAP(CTapiBstrCollection) |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
98 COM_INTERFACE_ENTRY(IDispatch) |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
99 COM_INTERFACE_ENTRY(ITCollection) |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
100 COM_INTERFACE_ENTRY(IObjectSafety) |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
101 END_COM_MAP() |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
102 private: |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
103 DWORD m_dwSize; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
104 CComVariant *m_Var; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
105 public: |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
106 CTapiBstrCollection(void) : m_dwSize(0),m_Var(NULL) { } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
107 HRESULT WINAPI Initialize(DWORD dwSize,BSTR *pBegin,BSTR *pEnd) { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
108 BSTR *i; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
109 DWORD dw = 0; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
110 LOG((MSP_TRACE,"CTapiBstrCollection::Initialize - enter")); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
111 m_dwSize = dwSize; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
112 m_Var = new CComVariant[m_dwSize]; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
113 if(!m_Var) return E_OUTOFMEMORY; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
114 for(i = pBegin;i!=pEnd;i++) { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
115 CComVariant& var = m_Var[dw]; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
116 var.vt = VT_BSTR; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
117 var.bstrVal = *i; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
118 dw++; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
119 } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
120 LOG((MSP_TRACE,"CTapiBstrCollection::Initialize - exit")); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
121 return S_OK; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
122 } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
123 STDMETHOD(get_Count)(long *retval) { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
124 HRESULT hr = S_OK; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
125 LOG((MSP_TRACE,"CTapiBstrCollection::get_Count - enter")); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
126 try { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
127 *retval = m_dwSize; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
128 } catch(...) { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
129 hr = E_INVALIDARG; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
130 } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
131 LOG((MSP_TRACE,"CTapiBstrCollection::get_Count - exit")); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
132 return hr; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
133 } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
134 STDMETHOD(get_Item)(long Index,VARIANT *retval) { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
135 HRESULT hr = S_OK; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
136 LOG((MSP_TRACE,"CTapiBstrCollection::get_Item - enter")); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
137 if(!retval) return E_POINTER; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
138 try { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
139 VariantInit(retval); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
140 } catch(...) { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
141 hr = E_INVALIDARG; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
142 } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
143 if(hr!=S_OK) return hr; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
144 retval->vt = VT_BSTR; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
145 retval->bstrVal = NULL; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
146 if((Index < 1) || ((DWORD) Index > m_dwSize)) return E_INVALIDARG; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
147 hr = VariantCopy(retval,&m_Var[Index-1]); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
148 if(FAILED(hr)) { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
149 LOG((MSP_ERROR,"CTapiBstrCollection::get_Item - VariantCopy failed. hr = %lx",hr)); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
150 return hr; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
151 } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
152 LOG((MSP_TRACE,"CTapiBstrCollection::get_Item - exit")); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
153 return S_OK; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
154 } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
155 HRESULT WINAPI get__NewEnum(IUnknown **retval) { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
156 HRESULT hr; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
157 LOG((MSP_TRACE,"CTapiBstrCollection::get__NumEnum - enter")); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
158 if(!retval) return E_POINTER; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
159 *retval = NULL; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
160 typedef CComObject<CSafeComEnum<IEnumVARIANT,&IID_IEnumVARIANT,VARIANT,_Copy<VARIANT> > > enumvar; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
161 enumvar *p = new enumvar; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
162 if(!p) return E_OUTOFMEMORY; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
163 hr = p->Init(&m_Var[0],&m_Var[m_dwSize],NULL,AtlFlagCopy); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
164 if(SUCCEEDED(hr)) { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
165 hr = p->QueryInterface(IID_IEnumVARIANT,(void**)retval); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
166 } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
167 if(FAILED(hr)) delete p; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
168 LOG((MSP_TRACE,"CTapiBstrCollection::get__NewEnum - exit")); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
169 return hr; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
170 } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
171 void FinalRelease() { |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
172 LOG((MSP_TRACE,"CTapiBstrCollection::FinalRelease() - enter")); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
173 delete [] m_Var; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
174 LOG((MSP_TRACE,"CTapiBstrCollection::FinalRelease() - exit")); |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
175 } |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
176 }; |
|
91c8c3b7cbf0
add: futhark tests for generating vulkan api
sam <sam@basx.dev>
parents:
diff
changeset
|
177 #endif |
