Removed wxClearVariant() and wxReleaseVariant().
Replaced them with standard VariantInit() and VariantClear() functions respectively. They appear to be just reimplementations of these. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63044 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -54,8 +54,6 @@
|
|||||||
#include "wx/datetime.h"
|
#include "wx/datetime.h"
|
||||||
#endif // wxUSE_DATETIME
|
#endif // wxUSE_DATETIME
|
||||||
|
|
||||||
extern void wxClearVariant(VARIANTARG *pvarg) ;
|
|
||||||
extern void wxReleaseVariant(VARIANTARG *pvarg) ;
|
|
||||||
// static void ShowException(LPOLESTR szMember, HRESULT hr, EXCEPINFO *pexcep, unsigned int uiArgErr);
|
// static void ShowException(LPOLESTR szMember, HRESULT hr, EXCEPINFO *pexcep, unsigned int uiArgErr);
|
||||||
|
|
||||||
#if wxUSE_OLE_AUTOMATION
|
#if wxUSE_OLE_AUTOMATION
|
||||||
@@ -103,7 +101,7 @@ bool wxAutomationObject::Invoke(const wxString& member, int action,
|
|||||||
}
|
}
|
||||||
|
|
||||||
VARIANTARG vReturn;
|
VARIANTARG vReturn;
|
||||||
wxClearVariant(& vReturn);
|
VariantInit(& vReturn);
|
||||||
|
|
||||||
VARIANTARG* vReturnPtr = & vReturn;
|
VARIANTARG* vReturnPtr = & vReturn;
|
||||||
|
|
||||||
@@ -194,7 +192,7 @@ bool wxAutomationObject::Invoke(const wxString& member, int action,
|
|||||||
delete[] dispIds;
|
delete[] dispIds;
|
||||||
|
|
||||||
for (i = 0; i < noArgs; i++)
|
for (i = 0; i < noArgs; i++)
|
||||||
wxReleaseVariant(& oleArgs[i]) ;
|
VariantClear(& oleArgs[i]) ;
|
||||||
delete[] oleArgs;
|
delete[] oleArgs;
|
||||||
|
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
@@ -208,7 +206,7 @@ bool wxAutomationObject::Invoke(const wxString& member, int action,
|
|||||||
SysFreeString(excep.bstrHelpFile);
|
SysFreeString(excep.bstrHelpFile);
|
||||||
|
|
||||||
if (vReturnPtr)
|
if (vReturnPtr)
|
||||||
wxReleaseVariant(vReturnPtr);
|
VariantClear(vReturnPtr);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -222,7 +220,7 @@ bool wxAutomationObject::Invoke(const wxString& member, int action,
|
|||||||
{
|
{
|
||||||
vReturn.pdispVal = NULL;
|
vReturn.pdispVal = NULL;
|
||||||
}
|
}
|
||||||
wxReleaseVariant(& vReturn);
|
VariantClear(& vReturn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@@ -131,103 +131,9 @@ wxBasicString::~wxBasicString()
|
|||||||
|
|
||||||
#if wxUSE_VARIANT
|
#if wxUSE_VARIANT
|
||||||
|
|
||||||
/*
|
|
||||||
* wxClearVariant
|
|
||||||
*
|
|
||||||
* Zeros a variant structure without regard to current contents
|
|
||||||
*/
|
|
||||||
void wxClearVariant(VARIANTARG *pvarg)
|
|
||||||
{
|
|
||||||
pvarg->vt = VT_EMPTY;
|
|
||||||
pvarg->wReserved1 = 0;
|
|
||||||
pvarg->wReserved2 = 0;
|
|
||||||
pvarg->wReserved3 = 0;
|
|
||||||
pvarg->lVal = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* wxReleaseVariant
|
|
||||||
*
|
|
||||||
* Clears a particular variant structure and releases any external objects
|
|
||||||
* or memory contained in the variant. Supports the data types listed above.
|
|
||||||
*/
|
|
||||||
void wxReleaseVariant(VARIANTARG *pvarg)
|
|
||||||
{
|
|
||||||
VARTYPE vt;
|
|
||||||
VARIANTARG _huge *pvargArray;
|
|
||||||
LONG lLBound, lUBound, l;
|
|
||||||
|
|
||||||
vt = (VARTYPE)(pvarg->vt & 0xfff); // mask off flags
|
|
||||||
|
|
||||||
// check if an array. If so, free its contents, then the array itself.
|
|
||||||
if (V_ISARRAY(pvarg))
|
|
||||||
{
|
|
||||||
// variant arrays are all this routine currently knows about. Since a
|
|
||||||
// variant can contain anything (even other arrays), call ourselves
|
|
||||||
// recursively.
|
|
||||||
if (vt == VT_VARIANT)
|
|
||||||
{
|
|
||||||
SafeArrayGetLBound(pvarg->parray, 1, &lLBound);
|
|
||||||
SafeArrayGetUBound(pvarg->parray, 1, &lUBound);
|
|
||||||
|
|
||||||
if (lUBound > lLBound)
|
|
||||||
{
|
|
||||||
lUBound -= lLBound;
|
|
||||||
|
|
||||||
SafeArrayAccessData(pvarg->parray, (void**)&pvargArray);
|
|
||||||
|
|
||||||
for (l = 0; l < lUBound; l++)
|
|
||||||
{
|
|
||||||
wxReleaseVariant(pvargArray);
|
|
||||||
pvargArray++;
|
|
||||||
}
|
|
||||||
|
|
||||||
SafeArrayUnaccessData(pvarg->parray);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
wxLogWarning(wxT("wxReleaseVariant: Array contains non-variant type"));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Free the array itself.
|
|
||||||
SafeArrayDestroy(pvarg->parray);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
switch (vt)
|
|
||||||
{
|
|
||||||
case VT_DISPATCH:
|
|
||||||
if (pvarg->pdispVal)
|
|
||||||
pvarg->pdispVal->Release();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case VT_BSTR:
|
|
||||||
SysFreeString(pvarg->bstrVal);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case VT_I2:
|
|
||||||
case VT_I4:
|
|
||||||
case VT_BOOL:
|
|
||||||
case VT_R8:
|
|
||||||
case VT_ERROR: // to avoid erroring on an error return from Excel
|
|
||||||
case VT_EMPTY:
|
|
||||||
case VT_DATE:
|
|
||||||
// no work for these types
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
wxLogWarning(wxT("wxReleaseVariant: Unknown type"));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
wxClearVariant(pvarg);
|
|
||||||
}
|
|
||||||
|
|
||||||
WXDLLEXPORT bool wxConvertVariantToOle(const wxVariant& variant, VARIANTARG& oleVariant)
|
WXDLLEXPORT bool wxConvertVariantToOle(const wxVariant& variant, VARIANTARG& oleVariant)
|
||||||
{
|
{
|
||||||
wxClearVariant(&oleVariant);
|
VariantInit(&oleVariant);
|
||||||
if (variant.IsNull())
|
if (variant.IsNull())
|
||||||
{
|
{
|
||||||
oleVariant.vt = VT_NULL;
|
oleVariant.vt = VT_NULL;
|
||||||
|
Reference in New Issue
Block a user