//+---------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1992 - 1993.
//
//  File:	props.hxx
//
//  Contents:	Shared property code header
//
//  Functions:	ValidatePropType
//
//  History:	14-Jun-93	DrewB	Created
//
//----------------------------------------------------------------------------

#ifndef __PROPS_HXX__
#define __PROPS_HXX__

typedef VARIANT DFPROPVAL;

#ifdef OLDPROP
// Property types that don't go in the property value itself
#define VT_NOT_IN_VALUE(vt) \
    (((vt) & VT_VECTOR) || \
     (vt) == VT_BSTR || (vt) == VT_WBSTR || \
     (vt) == VT_LPSTR || (vt) == VT_LPWSTR || \
     (vt) == VT_BLOB_OBJECT || (vt) == VT_BLOB || \
     (vt) == VT_VARIANT || (vt) == VT_CF || (vt) == VT_UUID)
#else
// Property types that don't go in the property value itself
#define VT_NOT_IN_VALUE(vt) \
    (((vt) & VT_VECTOR) || \
     (vt) == VT_BSTR || \
     (vt) == VT_LPSTR || (vt) == VT_LPWSTR || \
     (vt) == VT_BLOB_OBJECT || (vt) == VT_BLOB || \
     (vt) == VT_VARIANT || (vt) == VT_CF || (vt) == VT_UUID)
#endif

#define ValidatePropSpecKind(psk) \
    (((psk) == PRSPEC_LPWSTR || (psk) == PRSPEC_DISPID || \
      (psk) == PRSPEC_PROPID) ? S_OK : STG_E_INVALIDPARAMETER)

SCODE ValidatePropType(DFPROPTYPE dpt);
SCODE ValidatePropVt(DFPROPVAL *pdpv);

#ifdef OLDPROPS
#define BSTR_LLEN sizeof(UINT)
#define BSTR_PTR(b) ((BYTE *)(b)-BSTR_LLEN)
#define BSTR_SLEN(b) ((*(UINT *)BSTR_PTR(b)))
#define BSTR_BLEN(b) (BSTR_SLEN(b)+1)
#define BSTR_TLEN(b) (BSTR_BLEN(b)+BSTR_LLEN)

#define WBSTR_LLEN sizeof(UINT)
#define WBSTR_PTR(b) ((BYTE *)(b)-WBSTR_LLEN)
#define WBSTR_SLEN(b) ((*(UINT *)WBSTR_PTR(b)))
#define WBSTR_BLEN(b) (WBSTR_SLEN(b)+sizeof(WCHAR))
#define WBSTR_TLEN(b) (WBSTR_BLEN(b)+WBSTR_LLEN)
#else
#define BSTR_LLEN sizeof(UINT)
#define BSTR_PTR(b) ((BYTE *)(b)-BSTR_LLEN)
#define BSTR_SLEN(b) ((*(UINT *)BSTR_PTR(b)))
#define BSTR_BLEN(b) (BSTR_SLEN(b)+sizeof(WCHAR))
#define BSTR_TLEN(b) (BSTR_BLEN(b)+BSTR_LLEN)
#endif

#endif // #ifndef __PROPS_HXX__