From 5f232e04f902efaeae261013d3a130d3650dd0f0 Mon Sep 17 00:00:00 2001 From: Ronan Abhamon Date: Mon, 25 Sep 2017 09:29:00 +0200 Subject: [PATCH] feat(c-wrapper): clean code --- include/linphone/utils/utils.h | 21 ++++++++++++++++ src/c-wrapper/internal/c-tools.h | 42 ++++---------------------------- 2 files changed, 26 insertions(+), 37 deletions(-) diff --git a/include/linphone/utils/utils.h b/include/linphone/utils/utils.h index eb2ae8336..3b11e25b8 100644 --- a/include/linphone/utils/utils.h +++ b/include/linphone/utils/utils.h @@ -19,6 +19,7 @@ #ifndef _UTILS_H_ #define _UTILS_H_ +#include #include #include @@ -29,6 +30,26 @@ LINPHONE_BEGIN_NAMESPACE namespace Utils { + template + static constexpr T *getPtr (const std::shared_ptr &object) { + return object.get(); + } + + template + static constexpr T *getPtr (T *object) { + return object; + } + + template + static constexpr const T *getPtr (const std::shared_ptr &object) { + return object.get(); + } + + template + static constexpr const T *getPtr (const T *object) { + return object; + } + LINPHONE_PUBLIC bool iequals (const std::string &a, const std::string &b); LINPHONE_PUBLIC std::vector split (const std::string &str, const std::string &delimiter); diff --git a/src/c-wrapper/internal/c-tools.h b/src/c-wrapper/internal/c-tools.h index b7d7f7050..059985775 100644 --- a/src/c-wrapper/internal/c-tools.h +++ b/src/c-wrapper/internal/c-tools.h @@ -20,7 +20,8 @@ #define _C_TOOLS_H_ #include -#include + +#include "linphone/utils/utils.h" // TODO: From coreapi. Remove me later. #include "private.h" @@ -74,17 +75,7 @@ public: typename CppType, typename = typename std::enable_if::value, CppType>::type > - static inline decltype (std::declval().getPrivate()) getPrivate (CppType *cppObject) { - L_ASSERT(cppObject); - return cppObject->getPrivate(); - } - - template< - typename CppType, - typename = typename std::enable_if::value, CppType>::type - > - static inline decltype (std::declval().getPrivate()) getPrivate (const std::shared_ptr &cppObject) { - L_ASSERT(cppObject); + static constexpr inline decltype (std::declval().getPrivate()) getPrivate (CppType *cppObject) { return cppObject->getPrivate(); } @@ -162,27 +153,6 @@ public: (*cppObjectAddr)->setProperty("LinphonePrivate::Wrapper::cBackPtr", cObject); } - // Macro helpers. - template - static inline T *getCppPtr (const std::shared_ptr &cppObject) { - return cppObject.get(); - } - - template - static inline T *getCppPtr (T *cppObject) { - return cppObject; - } - - template - static inline const T *getCppPtr (const std::shared_ptr &cppObject) { - return cppObject.get(); - } - - template - static inline const T *getCppPtr (const T *cppObject) { - return cppObject; - } - // --------------------------------------------------------------------------- // Get c back ptr helpers. // --------------------------------------------------------------------------- @@ -457,13 +427,11 @@ LINPHONE_END_NAMESPACE // Get the private data of a shared or simple cpp-ptr. #define L_GET_PRIVATE(CPP_OBJECT) \ - LINPHONE_NAMESPACE::Wrapper::getPrivate(CPP_OBJECT) + LINPHONE_NAMESPACE::Wrapper::getPrivate(LINPHONE_NAMESPACE::Utils::getPtr(CPP_OBJECT)) // Get the private data of a shared or simple cpp-ptr of a wrapped C object. #define L_GET_PRIVATE_FROM_C_OBJECT(C_OBJECT) \ - L_GET_PRIVATE(LINPHONE_NAMESPACE::Wrapper::getCppPtr( \ - L_GET_CPP_PTR_FROM_C_OBJECT(C_OBJECT) \ - )) + L_GET_PRIVATE(LINPHONE_NAMESPACE::Utils::getPtr(L_GET_CPP_PTR_FROM_C_OBJECT(C_OBJECT))) // Get the wrapped C object of a C++ object. #define L_GET_C_BACK_PTR(C_OBJECT) \