KeePass Help Center KeePass Home | Downloads | Translations | Plugins | Donate 
Help Center Home | Forums | Awards | Links 







SysDefEx.h File Reference
#include "SysSpec_Windows/SysSpecWin.h"

Go to the source code of this file.

Macros

#define UNREFERENCED_PARAMETER(p)   (void)0
 
#define INT32_MAX   0x7FFFFFFF
 
#define UINT32_MAX   0xFFFFFFFF
 
#define UINT64_MAX   0xFFFFFFFFFFFFFFFFui64
 
#define DWORD_MAX   0xFFFFFFFF
 
#define UTF8_BYTE   BYTE
 
#define ROTL32UE(__uv, __nv)   ((((__uv) << (__nv)) | ((__uv) >> (32 - (__nv)))) & 0xFFFFFFFF)
 
#define SAFE_DELETE(__kp_p)   { if((__kp_p) != NULL) { delete (__kp_p); (__kp_p) = NULL; } }
 Delete the given object in the CRT of the caller. More...
 
#define SAFE_DELETE_ARRAY(__kp_p)   { if((__kp_p) != NULL) { delete [](__kp_p); (__kp_p) = NULL; } }
 Delete the given array/string in the CRT of the caller. More...
 
#define SAFE_RELEASE(__kp_p)   { if((__kp_p) != NULL) { (__kp_p)->Release(); (__kp_p) = NULL; } }
 Safely release a COM interface. More...
 
#define KP_DEFINE_GUID(__kp_name, __kp_l, __kp_w1, __kp_w2, __kp_b1, __kp_b2, __kp_b3, __kp_b4, __kp_b5, __kp_b6, __kp_b7, __kp_b8)
 
#define KP_DECLSPEC_UUID(__kp_uuid)
 
#define KP_DECLSPEC_NOVTABLE
 
#define KP_DECL_IUNKNOWN
 
#define KP_DECL_STDREFIMPL   ULONG __m_uInterfaceRefCount
 
#define KP_IMPL_STDREFIMPL(__kp_class_name)
 
#define KP_IMPL_STDREFIMPL_SUB(__kp_class_name, __kp_sub_name)
 
#define KP_IMPL_STDREFIMPL_NODELETE(__kp_class_name)
 
#define KP_IMPL_CONSTRUCT   { __m_uInterfaceRefCount = 1; }
 
#define KP_SUPPORT_INTERFACE(__kp_iid, __kp_int)
 
#define KP_ASSERT_REFS(__kp_comobj, __kp_refcnt)
 
#define KP_REQ_OUT_PTR(__kp_ppv)
 
#define KP_REQ_OUT_PTR_INIT(__kp_ppvx)
 
#define KP_QUERY_INTERFACE_RELEASE_LOCAL_RET(__kp_comobj, __kp_riid, __kp_ppvout)
 

Macro Definition Documentation

◆ DWORD_MAX

#define DWORD_MAX   0xFFFFFFFF

◆ INT32_MAX

#define INT32_MAX   0x7FFFFFFF

◆ KP_ASSERT_REFS

#define KP_ASSERT_REFS (   __kp_comobj,
  __kp_refcnt 
)
Value:
ASSERT((__kp_comobj).AddRef() \
> 0); ASSERT((__kp_comobj).Release() == (__kp_refcnt));

◆ KP_DECL_IUNKNOWN

#define KP_DECL_IUNKNOWN
Value:
STDMETHODIMP QueryInterface(REFIID riid, void** ppvObject); \
STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release()

◆ KP_DECL_STDREFIMPL

#define KP_DECL_STDREFIMPL   ULONG __m_uInterfaceRefCount

◆ KP_DECLSPEC_NOVTABLE

#define KP_DECLSPEC_NOVTABLE

◆ KP_DECLSPEC_UUID

#define KP_DECLSPEC_UUID (   __kp_uuid)

◆ KP_DEFINE_GUID

#define KP_DEFINE_GUID (   __kp_name,
  __kp_l,
  __kp_w1,
  __kp_w2,
  __kp_b1,
  __kp_b2,
  __kp_b3,
  __kp_b4,
  __kp_b5,
  __kp_b6,
  __kp_b7,
  __kp_b8 
)
Value:
EXTERN_C const GUID DECLSPEC_SELECTANY __kp_name \
= { __kp_l, __kp_w1, __kp_w2, { __kp_b1, __kp_b2, __kp_b3, __kp_b4, \
__kp_b5, __kp_b6, __kp_b7, __kp_b8 } }

◆ KP_IMPL_CONSTRUCT

#define KP_IMPL_CONSTRUCT   { __m_uInterfaceRefCount = 1; }

◆ KP_IMPL_STDREFIMPL

#define KP_IMPL_STDREFIMPL (   __kp_class_name)
Value:
STDMETHODIMP_(ULONG) \
__kp_class_name##::AddRef() { return ++__m_uInterfaceRefCount; } \
STDMETHODIMP_(ULONG) __kp_class_name##::Release() { \
ULONG __kp_ref = __m_uInterfaceRefCount; \
if(__m_uInterfaceRefCount != 0) { __kp_ref = --__m_uInterfaceRefCount; \
if(__m_uInterfaceRefCount == 0) delete this; } \
else { assert(false); } return __kp_ref; }

◆ KP_IMPL_STDREFIMPL_NODELETE

#define KP_IMPL_STDREFIMPL_NODELETE (   __kp_class_name)
Value:
STDMETHODIMP_(ULONG) \
__kp_class_name##::AddRef() { return ++__m_uInterfaceRefCount; } \
STDMETHODIMP_(ULONG) __kp_class_name##::Release() { \
if(__m_uInterfaceRefCount != 0) --__m_uInterfaceRefCount; \
else { assert(false); } return __m_uInterfaceRefCount; }

◆ KP_IMPL_STDREFIMPL_SUB

#define KP_IMPL_STDREFIMPL_SUB (   __kp_class_name,
  __kp_sub_name 
)
Value:
STDMETHODIMP_(ULONG) \
__kp_class_name##::AddRef() { return ++__m_uInterfaceRefCount; } \
STDMETHODIMP_(ULONG) __kp_class_name##::Release() { \
ULONG __kp_ref = __m_uInterfaceRefCount; \
if(__m_uInterfaceRefCount != 0) { __kp_ref = --__m_uInterfaceRefCount; \
if(__m_uInterfaceRefCount == 0) { SAFE_DELETE(__kp_sub_name); delete this; } } \
else { assert(false); } return __kp_ref; }

◆ KP_QUERY_INTERFACE_RELEASE_LOCAL_RET

#define KP_QUERY_INTERFACE_RELEASE_LOCAL_RET (   __kp_comobj,
  __kp_riid,
  __kp_ppvout 
)
Value:
{ \
void* __kp_ip = NULL; if((__kp_comobj)->QueryInterface((__kp_riid), &__kp_ip) == \
S_OK) { *(__kp_ppvout) = __kp_ip; VERIFY((__kp_comobj)->Release() == 1); \
return S_OK; } else { VERIFY((__kp_comobj)->Release() == 0); return E_NOINTERFACE; } }

◆ KP_REQ_OUT_PTR

#define KP_REQ_OUT_PTR (   __kp_ppv)
Value:
{ if((__kp_ppv) == NULL) { assert(false); \
return E_POINTER; } }

◆ KP_REQ_OUT_PTR_INIT

#define KP_REQ_OUT_PTR_INIT (   __kp_ppvx)
Value:
{ KP_REQ_OUT_PTR(__kp_ppvx); \
*(__kp_ppvx) = NULL; }

◆ KP_SUPPORT_INTERFACE

#define KP_SUPPORT_INTERFACE (   __kp_iid,
  __kp_int 
)
Value:
{ assert(__m_uInterfaceRefCount > 0); \
if(riid == __kp_iid) { __kp_int##* __kp_p = this; *ppvObject = __kp_p; \
this->AddRef(); return S_OK; } }

◆ ROTL32UE

#define ROTL32UE (   __uv,
  __nv 
)    ((((__uv) << (__nv)) | ((__uv) >> (32 - (__nv)))) & 0xFFFFFFFF)

◆ SAFE_DELETE

#define SAFE_DELETE (   __kp_p)    { if((__kp_p) != NULL) { delete (__kp_p); (__kp_p) = NULL; } }

Delete the given object in the CRT of the caller.

Plugins: you can use this macro to safely delete objects that you allocated with 'new', however do not use it to delete objects returned by KeePass interface methods! For this, use IKpAPI::DeleteObject instead.

◆ SAFE_DELETE_ARRAY

#define SAFE_DELETE_ARRAY (   __kp_p)    { if((__kp_p) != NULL) { delete [](__kp_p); (__kp_p) = NULL; } }

Delete the given array/string in the CRT of the caller.

Plugins: you can use this macro to safely delete arrays/strings that you allocated with 'new', however do not use it to delete arrays/strings returned by KeePass interface methods! For this, use IKpAPI::DeleteArray instead.

◆ SAFE_RELEASE

#define SAFE_RELEASE (   __kp_p)    { if((__kp_p) != NULL) { (__kp_p)->Release(); (__kp_p) = NULL; } }

Safely release a COM interface.

If the given interface pointer is valid (i.e. non-NULL), the macro will call the COM Release method of the object and set the interface pointer to NULL.

◆ UINT32_MAX

#define UINT32_MAX   0xFFFFFFFF

◆ UINT64_MAX

#define UINT64_MAX   0xFFFFFFFFFFFFFFFFui64

◆ UNREFERENCED_PARAMETER

#define UNREFERENCED_PARAMETER (   p)    (void)0

◆ UTF8_BYTE

#define UTF8_BYTE   BYTE
#define KP_REQ_OUT_PTR(__kp_ppv)
Definition: SysDefEx.h:203
#define SAFE_DELETE(__kp_p)
Delete the given object in the CRT of the caller.
Definition: SysDefEx.h:101

Documentation generated with Doxygen.





Get KeePass