From 4272b608a906a0759fb2a18a3bf88499ddb070e5 Mon Sep 17 00:00:00 2001 From: Ronan Abhamon Date: Thu, 21 Sep 2017 16:36:02 +0200 Subject: [PATCH 1/2] fix(core): remove useless typedef --- include/linphone/api/c-types.h | 2 +- include/linphone/types.h | 13 ------------- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/include/linphone/api/c-types.h b/include/linphone/api/c-types.h index 7cf35f798..b1d48dc13 100644 --- a/include/linphone/api/c-types.h +++ b/include/linphone/api/c-types.h @@ -105,7 +105,7 @@ typedef struct _LinphoneChatRoomCbs LinphoneChatRoomCbs; * An chat message is the object that is sent and received through LinphoneChatRooms. * @ingroup chatroom */ -typedef struct _LinphoneMessage LinphoneMessage; +typedef struct _LinphoneChatMessage LinphoneChatMessage; /** * An object to handle the callbacks for the handling a LinphoneChatMessage objects. diff --git a/include/linphone/types.h b/include/linphone/types.h index 9690ed1d2..c8043e4f5 100644 --- a/include/linphone/types.h +++ b/include/linphone/types.h @@ -318,19 +318,6 @@ typedef enum _LinphoneCallStatus { LinphoneCallDeclinedElsewhere /** Date: Thu, 21 Sep 2017 16:55:24 +0200 Subject: [PATCH 2/2] feat(c-wrapper): provide a way to link cpp type and c type --- src/c-wrapper/c-wrapper.h | 32 ++++++++++++++++++++++++-------- src/c-wrapper/internal/c-tools.h | 3 +++ 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/c-wrapper/c-wrapper.h b/src/c-wrapper/c-wrapper.h index 704f78866..bc9e24bff 100644 --- a/src/c-wrapper/c-wrapper.h +++ b/src/c-wrapper/c-wrapper.h @@ -25,16 +25,32 @@ // ============================================================================= -#define L_REGISTER_TYPE(C_TYPE) \ - extern Linphone ## C_TYPE *_linphone_ ## C_TYPE ## _init (); -#define L_INIT(C_TYPE) \ - _linphone_ ## C_TYPE ## _init () +LINPHONE_BEGIN_NAMESPACE + +template +struct CppTypeToCType { + enum { Defined = false }; +}; + +LINPHONE_END_NAMESPACE + +#define L_REGISTER_TYPE(CPP_TYPE, C_TYPE) \ + extern Linphone ## C_TYPE *_linphone_ ## C_TYPE ## _init (); \ + namespace LINPHONE_NAMESPACE { \ + class CPP_TYPE; \ + }; \ + template<> \ + struct LINPHONE_NAMESPACE::CppTypeToCType { \ + enum { Defined = true }; \ + typedef C_TYPE cType; \ + typedef LINPHONE_NAMESPACE::CPP_TYPE cppType; \ + }; // ============================================================================= -L_REGISTER_TYPE(Call); -L_REGISTER_TYPE(ChatMessage); -L_REGISTER_TYPE(ChatRoom); -L_REGISTER_TYPE(Participant); +L_REGISTER_TYPE(Call, Call); +L_REGISTER_TYPE(ChatMessage, ChatMessage); +L_REGISTER_TYPE(ChatRoom, ChatRoom); +L_REGISTER_TYPE(Participant, Participant); #endif // ifndef _C_WRAPPER_H_ diff --git a/src/c-wrapper/internal/c-tools.h b/src/c-wrapper/internal/c-tools.h index 71294bdcd..2af90255f 100644 --- a/src/c-wrapper/internal/c-tools.h +++ b/src/c-wrapper/internal/c-tools.h @@ -350,6 +350,9 @@ LINPHONE_END_NAMESPACE #define L_STRING_TO_C(STR) ((STR).empty() ? NULL : (STR).c_str()) #define L_C_TO_STRING(STR) ((STR) == NULL ? std::string() : (STR)) +// Call the init function of wrapped C object. +#define L_INIT(C_TYPE) _linphone_ ## C_TYPE ## _init () + // Get the cpp-ptr of a wrapped C object. #define L_GET_CPP_PTR_FROM_C_STRUCT(OBJECT, CPP_TYPE) \ LINPHONE_NAMESPACE::Wrapper::getCppPtrFromC< \