Initial
This commit is contained in:
57
com/variant.cpp
Normal file
57
com/variant.cpp
Normal file
@@ -0,0 +1,57 @@
|
||||
#include <com/variant.hpp>
|
||||
#include <com/safearray.hpp>
|
||||
|
||||
Variant::Variant(void)
|
||||
: mDisposition(Delete)
|
||||
{
|
||||
init();
|
||||
}
|
||||
|
||||
Variant::~Variant()
|
||||
{
|
||||
clear();
|
||||
}
|
||||
|
||||
bool Variant::setData(SafeArray &safeArray)
|
||||
{
|
||||
if(!clear()||!safeArray.isOkay())return false;
|
||||
tagVARIANT::vt=VTArray;
|
||||
tagVARIANT::parray=safeArray.getSAFEARRAY();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Variant::getData(VariantType variantType,void *pData)
|
||||
{
|
||||
if(tagVARIANT::vt!=variantType)return false;
|
||||
switch(variantType)
|
||||
{
|
||||
case VTInt :
|
||||
*((int*)pData)=tagVARIANT::iVal;
|
||||
return true;
|
||||
case VTInt1 :
|
||||
*((char*)pData)=tagVARIANT::bVal;
|
||||
return true;
|
||||
case VTInt2 :
|
||||
*((short*)pData)=tagVARIANT::iVal;
|
||||
return true;
|
||||
case VTInt4 :
|
||||
*((int*)pData)=tagVARIANT::lVal;
|
||||
return true;
|
||||
case VTBool :
|
||||
*((bool*)pData)=tagVARIANT::boolVal;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Variant::getData(SafeArray &safeArray)
|
||||
{
|
||||
if(tagVARIANT::vt!=VTArray||!tagVARIANT::parray)return false;
|
||||
try{safeArray.setSAFEARRAY(parray);}catch(SafeArray::SafeArrayNullPointerException){return false;}
|
||||
return safeArray.isOkay();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user