#include #include 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; } 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(); }