/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
Pack.cpp
Abstract:
Author:
Environment:
User mode
Revision History :
--*/
#include "adssmp.h"
#pragma hdrstop
HRESULT
PackStringinVariant(
BSTR bstrString,
VARIANT * pvarInputData
)
{
HRESULT hr = S_OK;
if ( bstrString == NULL )
RRETURN(E_FAIL);
VariantInit(pvarInputData);
pvarInputData->vt = VT_BSTR;
if (!bstrString) {
V_BSTR(pvarInputData) = NULL;
RRETURN(S_OK);
}
hr = ProvAllocString(bstrString, &(V_BSTR(pvarInputData)));
RRETURN(hr);
}
HRESULT
UnpackStringfromVariant(
VARIANT varSrcData,
BSTR * pbstrDestString
)
{
HRESULT hr = S_OK;
if( varSrcData.vt != VT_BSTR){
RRETURN(E_ADS_CANT_CONVERT_DATATYPE);
}
if (!V_BSTR(&varSrcData)) {
*pbstrDestString = NULL;
RRETURN(S_OK);
}
hr = ProvAllocString(V_BSTR(&varSrcData), pbstrDestString);
RRETURN(hr);
}
HRESULT
PackLONGinVariant(
LONG lValue,
VARIANT * pvarInputData
)
{
VariantInit(pvarInputData);
pvarInputData->vt = VT_I4;
V_I4(pvarInputData) = lValue;
RRETURN(S_OK);
}
HRESULT
UnpackLONGfromVariant(
VARIANT varSrcData,
LONG * plValue
)
{
if( varSrcData.vt != VT_I4){
RRETURN(E_ADS_CANT_CONVERT_DATATYPE);
}
*plValue = V_I4(&varSrcData);
RRETURN(S_OK);
}
HRESULT
PackDATEinVariant(
DATE daValue,
VARIANT * pvarInputData
)
{
VariantInit(pvarInputData);
pvarInputData->vt = VT_DATE;
V_DATE(pvarInputData) = daValue;
RRETURN(S_OK);
}
HRESULT
UnpackDATEfromVariant(
VARIANT varSrcData,
DATE * pdaValue
)
{
if( varSrcData.vt != VT_DATE){
RRETURN(E_ADS_CANT_CONVERT_DATATYPE);
}
*pdaValue = V_DATE(&varSrcData);
RRETURN(S_OK);
}
HRESULT
PackVARIANT_BOOLinVariant(
VARIANT_BOOL fValue,
VARIANT * pvarInputData
)
{
VariantInit(pvarInputData);
pvarInputData->vt = VT_BOOL;
V_BOOL(pvarInputData) = fValue;
RRETURN(S_OK);
}
HRESULT
UnpackVARIANT_BOOLfromVariant(
VARIANT varSrcData,
VARIANT_BOOL * pfValue
)
{
if( varSrcData.vt != VT_BOOL){
RRETURN(E_ADS_CANT_CONVERT_DATATYPE);
}
*pfValue = V_BOOL(&varSrcData);
RRETURN(S_OK);
}
HRESULT
PackVARIANTinVariant(
VARIANT vaValue,
VARIANT * pvarInputData
)
{
VariantInit(pvarInputData);
pvarInputData->vt = VT_VARIANT;
RRETURN( VariantCopy( pvarInputData, &vaValue ));
}
HRESULT
UnpackVARIANTfromVariant(
VARIANT varSrcData,
VARIANT * pvaValue
)
{
VariantInit( pvaValue );
RRETURN( VariantCopy( pvaValue, &varSrcData ));
}