packages feed

hdirect-0.21.0: comlib/SafeArray.idl

stub_include <windows.h>;
stub_include "SafeArrayPrim.h";
module SafeArray {

import "StdTypes.idl";

cpp_quote("#if defined(__MINGW32__) || defined(__CYGWIN32__)")
cpp_quote("#include <w32api.h>")
cpp_quote("#endif")
cpp_quote("#if !defined(_MSC_VER) && __W32API_MAJOR_VERSION == 1")
[finaliser("primSafeArrayDestroy")]
interface SAFEARRAY {};

typedef struct tagSAFEARRAYBOUND {
	unsigned long cElements;
	long lLbound;
} SAFEARRAYBOUND;

HRESULT _stdcall
SafeArrayAccessData
		( [in,ptr]SAFEARRAY* psa
		, [out,ref]void** ppvData
		);

HRESULT _stdcall
SafeArrayAllocData
		( [in,ptr]SAFEARRAY* psa
		);

HRESULT _stdcall
SafeArrayAllocDescriptor
		( [in]unsigned int cDims
		, [out]SAFEARRAY** ppsaOut
		);

HRESULT _stdcall
SafeArrayCopy
		( [in,ptr]SAFEARRAY* psa
		, [out]SAFEARRAY** ppsaOut
		);

/*
HRESULT _stdcall
SafeArrayCopyData
		( [in,ptr]SAFEARRAY* psaSource
		, [in,out]SAFEARRAY** psaTarget
		);
*/

[ref]
SAFEARRAY
_stdcall
*SafeArrayCreate
		( [in]VARTYPE vt
		, [in]unsigned int cDims
		, [in,size_is(cDims)]SAFEARRAYBOUND* rgsabound
		);

/*
HRESULT _stdcall
SafeArrayCreateVector
		( [in]VARTYPE vt
		, [in]long lLbound
		, [in]unsigned int cElements
		);
*/
HRESULT _stdcall
SafeArrayDestroy
		( [in,ptr]SAFEARRAY* psa
		);

HRESULT _stdcall
SafeArrayDestroyData
		( [in,ptr]SAFEARRAY* psa
		);

HRESULT _stdcall
SafeArrayDestroyDescriptor
		( [in,ptr]SAFEARRAY* psa
		);

unsigned int _stdcall
SafeArrayGetDim
		( [in,ptr]SAFEARRAY* psa
		);

HRESULT _stdcall
SafeArrayGetElement
		( [in,ptr]SAFEARRAY* psa
		//Ideally:, [in,size_is(psa->cDims-1)]long* rgIndices
		, [in,ptr]long* rgIndices
		, [in,ptr]void* pv
		);

unsigned int _stdcall
SafeArrayGetElemsize
		( [in,ptr]SAFEARRAY* psa
		);

HRESULT _stdcall
SafeArrayGetLBound
		( [in,ptr]SAFEARRAY* psa
		, [in]unsigned int nDim
		, [out]long* plLbound
		);

HRESULT _stdcall
SafeArrayGetUBound
		( [in,ptr]SAFEARRAY* psa
		, [in]unsigned int nDim
		, [out]long* plLbound
		);

HRESULT _stdcall
SafeArrayLock
		( [in,ptr]SAFEARRAY* psa
		);

HRESULT _stdcall
SafeArrayPtrOfIndex
		( [in,ptr]SAFEARRAY* psa
		, [in,ptr]long* rgIndices
		, [out]void** ppvData
		);

HRESULT _stdcall
SafeArrayPutElement
		( [in,ptr]SAFEARRAY* psa
		, [in,ptr]long* rgIndices
		, [in,ptr]void* pv
		);

HRESULT _stdcall
SafeArrayRedim
		( [in,ptr]SAFEARRAY* psa
		, [in,ref]SAFEARRAYBOUND* psaboundNew
		);

HRESULT _stdcall
SafeArrayUnaccessData
		( [in,ptr]SAFEARRAY* psa
		);

HRESULT _stdcall
SafeArrayUnlock
		( [in,ptr]SAFEARRAY* psa
		);

cpp_quote("#endif")
};