From 2bac63219e0689ece3f61aeefb2f5e47b6014fd4 Mon Sep 17 00:00:00 2001 From: Ronan Abhamon Date: Tue, 3 Oct 2017 15:10:57 +0200 Subject: [PATCH] feat(General): getPublicHelper => better code --- include/linphone/utils/general.h | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/include/linphone/utils/general.h b/include/linphone/utils/general.h index 268c9b50a..d83dd0e37 100644 --- a/include/linphone/utils/general.h +++ b/include/linphone/utils/general.h @@ -102,36 +102,24 @@ class ObjectPrivate; friend class Tester; #endif -template -inline ClonableObject *getPublicHelper (T *object, const ClonableObjectPrivate *context) { - auto it = object->find(context); - L_ASSERT(it != object->end()); - return it->second; +template +inline T *getPublicHelper (U *map, const ClonableObjectPrivate *context) { + auto it = map->find(context); + L_ASSERT(it != map->end()); + return static_cast(it->second); } template -inline const ClonableObject *getPublicHelper (const T *object, const ClonableObjectPrivate *context) { - auto it = object->find(context); - L_ASSERT(it != object->cend()); - return it->second; -} - -template -inline Object *getPublicHelper (T *object, const ObjectPrivate *) { - return object; -} - -template -inline const Object *getPublicHelper (const T *object, const ObjectPrivate *) { - return object; +constexpr T *getPublicHelper (Object *object, const ObjectPrivate *) { + return static_cast(object); } #define L_DECLARE_PUBLIC(CLASS) \ inline CLASS *getPublic () { \ - return static_cast(getPublicHelper(mPublic, this)); \ + return getPublicHelper(mPublic, this); \ } \ inline const CLASS *getPublic () const { \ - return static_cast(getPublicHelper(mPublic, this)); \ + return getPublicHelper(mPublic, this); \ } \ friend class CLASS;