feat(c-wrapper): add an optional parameter CPP_TYPE on L_GET_PRIVATE_FROM_C_OBJECT

This commit is contained in:
Ronan Abhamon 2017-09-26 14:33:49 +02:00
parent 6a3956494c
commit 325653641b
2 changed files with 15 additions and 4 deletions

View file

@ -159,7 +159,7 @@ LinphoneCall *linphone_chat_room_get_call (const LinphoneChatRoom *cr) {
void linphone_chat_room_set_call (LinphoneChatRoom *cr, LinphoneCall *call) {
if (linphone_core_realtime_text_enabled(linphone_chat_room_get_core(cr)))
static_cast<LinphonePrivate::RealTimeTextChatRoomPrivate *>(L_GET_PRIVATE_FROM_C_OBJECT(cr))->setCall(call);
L_GET_PRIVATE_FROM_C_OBJECT(cr, RealTimeTextChatRoom)->setCall(call);
}
bctbx_list_t *linphone_chat_room_get_transient_messages (const LinphoneChatRoom *cr) {

View file

@ -430,9 +430,12 @@ LINPHONE_END_NAMESPACE
// Get/set the cpp-ptr of a wrapped C object.
#define L_GET_CPP_PTR_FROM_C_OBJECT_1_ARGS(C_OBJECT) \
L_GET_CPP_PTR_FROM_C_OBJECT_2_ARGS(C_OBJECT, )
LINPHONE_NAMESPACE::Wrapper::getCppPtrFromC(C_OBJECT)
#define L_GET_CPP_PTR_FROM_C_OBJECT_2_ARGS(C_OBJECT, CPP_TYPE) \
LINPHONE_NAMESPACE::Wrapper::getCppPtrFromC<CPP_TYPE>(C_OBJECT)
LINPHONE_NAMESPACE::Wrapper::getCppPtrFromC< \
std::remove_pointer<decltype(C_OBJECT)>::type, \
LINPHONE_NAMESPACE::CPP_TYPE \
>(C_OBJECT)
#define L_GET_CPP_PTR_FROM_C_OBJECT_MACRO_CHOOSER(...) \
L_GET_ARG_3(__VA_ARGS__, L_GET_CPP_PTR_FROM_C_OBJECT_2_ARGS, L_GET_CPP_PTR_FROM_C_OBJECT_1_ARGS)
@ -449,8 +452,16 @@ LINPHONE_END_NAMESPACE
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) \
#define L_GET_PRIVATE_FROM_C_OBJECT_1_ARGS(C_OBJECT) \
L_GET_PRIVATE(LINPHONE_NAMESPACE::Utils::getPtr(L_GET_CPP_PTR_FROM_C_OBJECT(C_OBJECT)))
#define L_GET_PRIVATE_FROM_C_OBJECT_2_ARGS(C_OBJECT, CPP_TYPE) \
L_GET_PRIVATE(LINPHONE_NAMESPACE::Utils::getPtr(L_GET_CPP_PTR_FROM_C_OBJECT(C_OBJECT, CPP_TYPE)))
#define L_GET_PRIVATE_FROM_C_OBJECT_MACRO_CHOOSER(...) \
L_GET_ARG_3(__VA_ARGS__, L_GET_PRIVATE_FROM_C_OBJECT_2_ARGS, L_GET_PRIVATE_FROM_C_OBJECT_1_ARGS)
#define L_GET_PRIVATE_FROM_C_OBJECT(...) \
L_GET_PRIVATE_FROM_C_OBJECT_MACRO_CHOOSER(__VA_ARGS__)(__VA_ARGS__)
// Get the wrapped C object of a C++ object.
#define L_GET_C_BACK_PTR(CPP_OBJECT) \