Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*--------------------------------------------------------------------------*
* * Microsoft Windows * Copyright (C) Microsoft Corporation, 1992 - 1999 * * File: variant.h * * Contents: Interface file for various VARIANT helper functions * * History: 19-Nov-1999 jeffro Created * *--------------------------------------------------------------------------*/
#pragma once
#ifndef VARIANT_H_INCLUDED
#define VARIANT_H_INCLUDED
/*+-------------------------------------------------------------------------*
* ConvertByRefVariantToByValue * * VBScript will has two syntaxes for calling dispinterfaces: * * 1. obj.Method (arg) * 2. obj.Method arg * * The first syntax will pass arg by value, which out dispinterfaces will * be able to handle. If Method takes a BSTR argument, the VARIANT that * arrives at Method will be of type VT_BSTR. * * The second syntax will pass arg by reference. In this case Method will * receive a VARIANT of type (VT_VARIANT | VT_BYREF). The VARIANT that is * referenced will be of type VT_BSTR. * * This function will dereference the VARIANT and return the direct pointer * in pVar. Calling this function on a VARIANT that is not VT_BYREF is * harmless. *--------------------------------------------------------------------------*/
inline VARIANT* ConvertByRefVariantToByValue (VARIANT* pVar) { while ((pVar != NULL) && (V_VT(pVar) == (VT_VARIANT | VT_BYREF))) { pVar = V_VARIANTREF(pVar); }
return (pVar); }
/*+-------------------------------------------------------------------------*
* IsOptionalParamMissing * * Returns true if an optional argument to an Automation method is left * blank. This is indicated by a type of VT_ERROR with a value of * DISP_E_PARAMNOTFOUND. * * This should be moved to a header. *--------------------------------------------------------------------------*/
inline bool IsOptionalParamMissing (const VARIANT& var) { return ((V_VT(&var) == VT_ERROR) && (V_ERROR(&var) == DISP_E_PARAMNOTFOUND)); }
#endif /* VARIANT_H_INCLUDED */
|