Leaked source code of windows server 2003
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.
 
 
 
 
 
 

91 lines
2.0 KiB

//*************************************************************
//
// Copyright (c) Microsoft Corporation 1999 - 2000
// All rights reserved
//
// variant.hxx
//
//*************************************************************
#if !defined(_VARIANT_HXX_)
class CVariantArg
{
public:
virtual ~CVariantArg(){}
virtual HRESULT GetUnknown(IUnknown** ppUnk) = 0;
};
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// Class: CVariant
//
// Synopsis: abstracts details of variant struct so that
// variant data types can be easily manipulated by code
// with no knowledge of ole automation.
//
// This class supports a fixed subset of the variant
// data types -- additional support should be added as
// needed. Any resources allocated by the class to
// store data should be freed by the destructor.
//
//-------------------------------------------------------------
class CVariant
{
public:
CVariant();
~CVariant();
HRESULT SetStringValue( WCHAR* wszValue );
HRESULT SetLongValue( LONG lValue );
HRESULT SetBoolValue( BOOL bValue );
HRESULT SetNextLongArrayElement(
LONG Value,
DWORD cMaxElements = 0);
HRESULT SetNextByteArrayElement(
BYTE byteValue,
DWORD cMaxElements = 0);
HRESULT SetNextStringArrayElement(
WCHAR* wszValue,
DWORD cMaxElements = 0);
BOOL IsStringValue();
BOOL IsLongValue();
operator VARIANT*();
private:
HRESULT SetNextArrayElement(
VARTYPE varType,
DWORD cMaxElements,
LPVOID pvData);
HRESULT InitializeArray(
VARTYPE varType,
DWORD cMaxElements);
VARIANT _var; // the variant being abstracted
LONG _iCurrentArrayIndex; // current location in array
DWORD _cMaxArrayElements; // max size of this type if it's an array
};
#endif // !defined(_VARIANT_HXX_)