typedef struct _IDoubleListVtbl
{
HRESULT __stdcall QueryInterface(void* This, IID *riid, void** ppvObject);
DWORD __stdcall AddRef(void* This);
DWORD __stdcall Release(void* This);
HRESULT __stdcall Add(/*[in]*/ void *This, /*[in]*/ double value);
HRESULT __stdcall Insert(/*[in]*/ void *This, /*[in]*/ long index, /*[in]*/ double value);
HRESULT __stdcall Remove(/*[in]*/ void *This, /*[in]*/ double value);
HRESULT __stdcall RemoveAt(/*[in]*/ void *This, /*[in]*/ long index);
HRESULT __stdcall RemoveRange(/*[in]*/ void *This, /*[in]*/ long index, /*[in]*/ long count);
HRESULT __stdcall Reverse(/*[in]*/ void *This);
HRESULT __stdcall ReverseRange(/*[in]*/ void *This, /*[in]*/ long index, /*[in]*/ long count);
HRESULT __stdcall SetItem(/*[in]*/ void *This, /*[in]*/ long index, /*[in]*/ double value);
HRESULT __stdcall GetItem(/*[in]*/ void *This, /*[in]*/ long index, /*[out,retval]*/ double * pRetVal);
HRESULT __stdcall Clear(/*[in]*/ void *This);
HRESULT __stdcall Count(/*[in]*/ void *This, /*[out,retval]*/ long * pRetVal);
HRESULT __stdcall Sort(/*[in]*/ void *This);
HRESULT __stdcall ShowMessageBox(/*[in]*/ void *This);
} IDoubleListVtbl;
typedef interface IDoubleList { IDoubleListVtbl *lpVtbl; } IDoubleList;
IDoubleList* DoubleList_New()
{
IDoubleList *pList = NULL;
GUID clsid;
IID iid;
IIDFromStr("{AC9831A9-2433-409E-967F-4B74127F3B12}", &clsid);
IIDFromStr("{EF4A8708-0FBF-4959-B8B9-FD1F1846B77A}", &iid);
HRESULT hr = CoCreateInstance(&clsid, NULL, CLSCTX_ALL, &iid, &pList);
return pList;
}