/*++ © 1998 Seagate Software, Inc. All rights reserved. Module Name: wsbvar.h Abstract: This class is a wrapper for the VARIANT structure, providing conversion and cleanup automatically. Current supported types for conversion are OLECHAR * (BSTR), IUnknown / IDispatch, and GUID. GUIDs are represented internally as strings. Author: Rohde Wakefield [rohde] 21-Jan-1997 Revision History: --*/ #ifndef _WSBVAR_ #define _WSBVAR_ class WSB_EXPORT CWsbVariant : public tagVARIANT { public: CWsbVariant ( ) { Init ( ); } ~CWsbVariant ( ) { Clear ( ); } HRESULT Clear ( ) { return ( VariantClear ( this ) ); } void Init ( ) { VariantInit ( this ); } BOOL IsEmpty ( ) { return ( VT_EMPTY == vt ); } CWsbVariant & operator = ( const VARIANT & variant ) { VariantCopy ( this, (VARIANT *)&variant ); return ( *this ); } BOOL IsBstr ( ) { return ( VT_BSTR == vt ); } CWsbVariant ( const OLECHAR * string ); CWsbVariant & operator = ( const OLECHAR * string ); operator OLECHAR * ( ); BOOL IsInterface ( ) { return ( ( VT_UNKNOWN == vt ) || ( VT_DISPATCH == vt ) ); } BOOL IsDispatch ( ) { return ( ( VT_DISPATCH == vt ) ); } CWsbVariant ( IUnknown * ); CWsbVariant ( IDispatch * ); operator IUnknown * ( ); operator IDispatch * ( ); CWsbVariant & operator = ( IUnknown * pUnk ); CWsbVariant & operator = ( IDispatch * pDisp ); CWsbVariant ( REFGUID rguid ); CWsbVariant & operator = ( REFGUID rguid ); operator GUID (); }; #endif