diff options
author | Herbert Dürr <hdu@apache.org> | 2013-03-12 12:52:08 +0000 |
---|---|---|
committer | Herbert Dürr <hdu@apache.org> | 2013-03-12 12:52:08 +0000 |
commit | a0809605f7612de439f0fc1f007177c6c463d0df (patch) | |
tree | 15e2538507fb24699988934343ac1dd077a78285 /cppu/inc | |
parent | 3a125c8efe2af8f15e4606558063ffab64da0566 (diff) |
use debuggable and type-safe inline methods to replace macros in typedescription.h
Notes
Notes:
merged as: fd5a9f20ef7b68439820a385f4527ba94a5a0d03
Diffstat (limited to 'cppu/inc')
-rw-r--r-- | cppu/inc/typelib/typedescription.h | 55 |
1 files changed, 30 insertions, 25 deletions
diff --git a/cppu/inc/typelib/typedescription.h b/cppu/inc/typelib/typedescription.h index b7913f2d9b1e..b66e80889d73 100644 --- a/cppu/inc/typelib/typedescription.h +++ b/cppu/inc/typelib/typedescription.h @@ -875,42 +875,47 @@ void SAL_CALL typelib_typedescription_revokeCallback( description is not initialized. @internal */ -#define TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK( eTypeClass ) \ - ((eTypeClass) == typelib_TypeClass_INTERFACE_METHOD || \ - (eTypeClass) == typelib_TypeClass_INTERFACE_ATTRIBUTE) +inline bool TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK( _typelib_TypeClass eTypeClass ) +{ + return (eTypeClass == typelib_TypeClass_INTERFACE_METHOD) || + (eTypeClass == typelib_TypeClass_INTERFACE_ATTRIBUTE); +} /** Gets a description from the reference. The description may not be locked by this call. You must use the TYPELIB_DANGER_RELEASE macro to release the description fetched with this macro. @internal */ -#define TYPELIB_DANGER_GET( ppDescription, pTypeRef ) \ -{ \ - typelib_TypeDescriptionReference * pMacroTypeRef = (pTypeRef); \ - typelib_TypeDescription ** ppMacroTypeDescr = (ppDescription); \ - if (TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK( pMacroTypeRef->eTypeClass )) \ - { \ - typelib_typedescriptionreference_getDescription( ppMacroTypeDescr, pMacroTypeRef ); \ - } \ - else if (!pMacroTypeRef->pType || !pMacroTypeRef->pType->pWeakRef) \ - { \ - typelib_typedescriptionreference_getDescription( ppMacroTypeDescr, pMacroTypeRef ); \ - if (*ppMacroTypeDescr) \ - typelib_typedescription_release( *ppMacroTypeDescr ); \ - } \ - else \ - { \ - *ppMacroTypeDescr = pMacroTypeRef->pType; \ - } \ +inline void TYPELIB_DANGER_GET( typelib_TypeDescription** ppMacroTypeDescr, + typelib_TypeDescriptionReference* pMacroTypeRef ) +{ + void SAL_CALL typelib_typedescriptionreference_getDescription(typelib_TypeDescription**, typelib_TypeDescriptionReference*) SAL_THROW_EXTERN_C(); + + if (TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK( pMacroTypeRef->eTypeClass )) + { + typelib_typedescriptionreference_getDescription( ppMacroTypeDescr, pMacroTypeRef ); + } + else if (!pMacroTypeRef->pType || !pMacroTypeRef->pType->pWeakRef) + { + typelib_typedescriptionreference_getDescription( ppMacroTypeDescr, pMacroTypeRef ); + if (*ppMacroTypeDescr) + typelib_typedescription_release( *ppMacroTypeDescr ); + } + else + { + *ppMacroTypeDescr = pMacroTypeRef->pType; + } } /** Releases the description previouse fetched by TYPELIB_DANGER_GET. @internal */ -#define TYPELIB_DANGER_RELEASE( pDescription ) \ -{ \ - if (TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK( (pDescription)->eTypeClass )) \ - typelib_typedescription_release( pDescription ); \ +inline void TYPELIB_DANGER_RELEASE( typelib_TypeDescription* pDescription ) +{ + void SAL_CALL typelib_typedescription_release(typelib_TypeDescription*) SAL_THROW_EXTERN_C(); + + if (TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK( pDescription->eTypeClass )) + typelib_typedescription_release( pDescription ); } /** Creates a type description reference. This is a weak reference not holding the description. |