3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Copyright 2008 James Hawkins for CodeWeavers
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is free software; you can redistribute it and/or
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * modify it under the terms of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License as published by the Free Software Foundation; either
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * version 2.1 of the License, or (at your option) any later version.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is distributed in the hope that it will be useful,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Lesser General Public License for more details.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * You should have received a copy of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License along with this library; if not, write to the Free Software
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync/*
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * a choice of LGPL license versions is made available with the language indicating
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * that LGPLv2 or any later version may be used, or where a choice of which version
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * of the LGPL is applied is otherwise unspecified.
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync */
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef __WINE_PROPVARUTIL_H
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define __WINE_PROPVARUTIL_H
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#include <shtypes.h>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#include <shlwapi.h>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncenum tagPROPVAR_CHANGE_FLAGS
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PVCHF_DEFAULT = 0x00000000,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PVCHF_NOVALUEPROP = 0x00000001,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PVCHF_ALPHABOOL = 0x00000002,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PVCHF_NOUSEROVERRIDE = 0x00000004,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PVCHF_LOCALBOOL = 0x00000008,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PVCHF_NOHEXSTRING = 0x00000010,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef int PROPVAR_CHANGE_FLAGS;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncenum tagPROPVAR_COMPARE_UNIT
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PVCU_DEFAULT = 0x00000000,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PVCU_SECOND = 0x00000001,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PVCU_MINUTE = 0x00000002,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PVCU_HOUR = 0x00000003,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PVCU_DAY = 0x00000004,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PVCU_MONTH = 0x00000005,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PVCU_YEAR = 0x00000006,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef int PROPVAR_COMPARE_UNIT;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncenum tagPROPVAR_COMPARE_FLAGS
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PVCF_DEFAULT = 0x00000000,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PVCF_TREATEMPTYASGREATERTHAN = 0x00000001,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PVCF_USESTRCMP = 0x00000002,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PVCF_USESTRCMPC = 0x00000004,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PVCF_USESTRCMPI = 0x00000008,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PVCF_USESTRCMPIC = 0x00000010,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef int PROPVAR_COMPARE_FLAGS;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT WINAPI PropVariantChangeType(PROPVARIANT *ppropvarDest, REFPROPVARIANT propvarSrc,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PROPVAR_CHANGE_FLAGS flags, VARTYPE vt);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT WINAPI InitPropVariantFromGUIDAsString(REFGUID guid, PROPVARIANT *ppropvar);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT WINAPI InitVariantFromGUIDAsString(REFGUID guid, VARIANT *pvar);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT WINAPI InitPropVariantFromBuffer(const VOID *pv, UINT cb, PROPVARIANT *ppropvar);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT WINAPI InitVariantFromBuffer(const VOID *pv, UINT cb, VARIANT *pvar);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT WINAPI PropVariantToGUID(const PROPVARIANT *ppropvar, GUID *guid);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT WINAPI VariantToGUID(const VARIANT *pvar, GUID *guid);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncINT WINAPI PropVariantCompareEx(REFPROPVARIANT propvar1, REFPROPVARIANT propvar2,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PROPVAR_COMPARE_UNIT uint, PROPVAR_COMPARE_FLAGS flags);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT WINAPI PropVariantToInt16(REFPROPVARIANT propvarIn, SHORT *ret);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT WINAPI PropVariantToInt32(REFPROPVARIANT propvarIn, LONG *ret);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT WINAPI PropVariantToInt64(REFPROPVARIANT propvarIn, LONGLONG *ret);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT WINAPI PropVariantToUInt16(REFPROPVARIANT propvarIn, USHORT *ret);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT WINAPI PropVariantToUInt32(REFPROPVARIANT propvarIn, ULONG *ret);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT WINAPI PropVariantToUInt64(REFPROPVARIANT propvarIn, ULONGLONG *ret);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef __cplusplus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT InitPropVariantFromBoolean(BOOL fVal, PROPVARIANT *ppropvar);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT InitPropVariantFromString(PCWSTR psz, PROPVARIANT *ppropvar);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncHRESULT InitPropVariantFromInt64(LONGLONG llVal, PROPVARIANT *ppropvar);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef NO_PROPVAR_INLINES
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline HRESULT InitPropVariantFromBoolean(BOOL fVal, PROPVARIANT *ppropvar)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ppropvar->vt = VT_BOOL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ppropvar->boolVal = fVal ? VARIANT_TRUE : VARIANT_FALSE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return S_OK;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline HRESULT InitPropVariantFromString(PCWSTR psz, PROPVARIANT *ppropvar)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HRESULT hres;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync hres = SHStrDupW(psz, &ppropvar->pwszVal);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync if(SUCCEEDED(hres))
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ppropvar->vt = VT_LPWSTR;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync else
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PropVariantInit(ppropvar);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return hres;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinline HRESULT InitPropVariantFromInt64(LONGLONG llVal, PROPVARIANT *ppropvar)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ppropvar->vt = VT_I8;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ppropvar->hVal.QuadPart = llVal;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync return S_OK;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* __WINE_PROPVARUTIL_H */