From e1d35a0b978022f87efc3815777e29f58987e5fb Mon Sep 17 00:00:00 2001 From: Denis Dolzhenko Date: Thu, 28 Sep 2017 13:38:48 +0300 Subject: [PATCH] Refactor cast methods. Change-Id: I97420d0a9f659513516eb607d270dbcaf049e388 Signed-off-by: Denis Dolzhenko --- src/Common/View/inc/View.h | 35 +++++------------------ src/Common/View/inc/ViewItem.h | 31 ++++++-------------- src/Common/View/src/ListView.cpp | 16 +++++------ src/Common/View/src/MbeRecipientsView.cpp | 4 +-- src/Common/View/src/NaviFrameView.cpp | 4 +-- src/Common/View/src/View.cpp | 11 ++----- src/Common/View/src/ViewItem.cpp | 5 ++-- src/Viewer/Controller/src/Viewer.cpp | 2 +- 8 files changed, 34 insertions(+), 74 deletions(-) diff --git a/src/Common/View/inc/View.h b/src/Common/View/inc/View.h index dbca53ce..39804cee 100644 --- a/src/Common/View/inc/View.h +++ b/src/Common/View/inc/View.h @@ -235,11 +235,9 @@ namespace Msg { void addSignalCb(const char *emission, const char *source, Edje_Signal_Cb func, void *data); template - static T staticCast(void *evasObj); + static T *staticCast(const void *evasObj); template - static T reinterpretCast(void *evasObj); - template - static T dynamicCast(void *evasObj); + static T *dynamicCast(const void *evasObj); /** * @brief Gets text placed in specified part. @@ -313,10 +311,7 @@ namespace Msg { View(View&) = delete; View& operator=(View&) = delete; Evas_Object_Event_Cb getCb(Evas_Callback_Type); - void *getData() const; - static void *getData(Evas_Object *obj); - void setData(const void *data); - static void setData(Evas_Object *obj, const void *data); + static View *getThis(const Evas_Object *obj); private: static void on_free_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); @@ -487,32 +482,16 @@ namespace Msg { return evas_object_data_get(m_pEo, key); } - inline void View::setData(const void *data) - { - setData(m_pEo, data); - } - - inline void *View::getData() const - { - return getData(m_pEo); - } - - template - inline T View::staticCast(void *evasObj) - { - return static_cast(getData((Evas_Object*)evasObj)); - } - template - inline T View::reinterpretCast(void *evasObj) + inline T *View::staticCast(const void *evasObj) { - return reinterpret_cast(getData((Evas_Object*)evasObj)); + return static_cast(getThis((Evas_Object*)evasObj)); } template - inline T View::dynamicCast(void *evasObj) + inline T *View::dynamicCast(const void *evasObj) { - return dynamic_cast(staticCast(evasObj)); + return dynamic_cast(staticCast(evasObj)); } inline void View::addEventCb(Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data) diff --git a/src/Common/View/inc/ViewItem.h b/src/Common/View/inc/ViewItem.h index 994248e5..779a3942 100644 --- a/src/Common/View/inc/ViewItem.h +++ b/src/Common/View/inc/ViewItem.h @@ -70,12 +70,6 @@ namespace Msg { */ void *getData() const; - /** - * @brief Sets item-data. - * @param[in] data item-data. - */ - void setData(void *data); - /** * @brief Gets Elm_Object_Item current view-item is wrapping. * @return wrapped object-item. @@ -142,11 +136,9 @@ namespace Msg { static void setText(Elm_Object_Item *it, const TText &text, const char *part = nullptr); template - static T staticCast(void *elmObjectItem); - template - static T reinterpretCast(void *elmObjectItem); + static T *staticCast(const void *elmObjectItem); template - static T dynamicCast(void *elmObjectItem); + static T *dynamicCast(const void *elmObjectItem); protected: virtual ~ViewItem(); @@ -154,6 +146,7 @@ namespace Msg { void setElmObjItem(Elm_Object_Item *item); private: + static ViewItem *getThis(const Elm_Object_Item *item); static void on_delete_cb(void *data, Evas_Object *obj, void *event_info); private: @@ -180,11 +173,6 @@ namespace Msg { return elm_object_item_data_get(m_pItem); } - inline void ViewItem::setData(void *data) - { - elm_object_item_data_set(m_pItem, data); - } - inline void ViewItem::disabled(bool val) { elm_object_item_disabled_set(m_pItem, val); @@ -231,22 +219,21 @@ namespace Msg { return elm_object_item_part_text_get(m_pItem, part); } - template - inline T ViewItem::staticCast(void *elmObjectItem) + inline ViewItem *ViewItem::getThis(const Elm_Object_Item *item) { - return static_cast(elm_object_item_data_get((Elm_Object_Item*)elmObjectItem)); + return (ViewItem*)elm_object_item_data_get(item); } template - inline T ViewItem::reinterpretCast(void *elmObjectItem) + inline T *ViewItem::staticCast(const void *elmObjectItem) { - return reinterpret_cast(elm_object_item_data_get((Elm_Object_Item*)elmObjectItem)); + return static_cast(getThis((Elm_Object_Item*)elmObjectItem)); } template - inline T ViewItem::dynamicCast(void *elmObjectItem) + inline T *ViewItem::dynamicCast(const void *elmObjectItem) { - return dynamic_cast(staticCast(elmObjectItem)); + return dynamic_cast(staticCast(elmObjectItem)); } } diff --git a/src/Common/View/src/ListView.cpp b/src/Common/View/src/ListView.cpp index df75b734..a8284437 100644 --- a/src/Common/View/src/ListView.cpp +++ b/src/Common/View/src/ListView.cpp @@ -203,7 +203,7 @@ void ListView::setHomogeneous(bool isHomogeneous) ListItem *ListView::getSelectedItem() const { Elm_Object_Item *elmItem = elm_genlist_selected_item_get(getEo()); - return ListItem::staticCast(elmItem); + return ListItem::staticCast(elmItem); } unsigned ListView::getItemsCount() const @@ -213,12 +213,12 @@ unsigned ListView::getItemsCount() const ListItem *ListView::getNextItem(ListItem &item) const { - return ListItem::staticCast(elm_genlist_item_next_get(item)); + return ListItem::staticCast(elm_genlist_item_next_get(item)); } ListItem *ListView::getPrevItem(ListItem &item) const { - return ListItem::staticCast(elm_genlist_item_prev_get(item)); + return ListItem::staticCast(elm_genlist_item_prev_get(item)); } void ListView::demoteItem(ListItem &item) @@ -238,7 +238,7 @@ void ListView::setFilter(void *key) void ListView::notifyListener(void *data, Evas_Object *obj, void *event_info, ListenerMethod method) { - ListItem *item = ListItem::staticCast(event_info); + ListItem *item = ListItem::staticCast(event_info); MSG_ASSERT(item, "Item is null"); if (item) { @@ -289,7 +289,7 @@ bool ListView::getMultiSelection() const void ListView::on_item_selected_cb(void *data, Evas_Object *obj, void *event_info) { - ListItem *item = ListItem::staticCast(event_info); + ListItem *item = ListItem::staticCast(event_info); item->setSelected(false); if (item->getOwner()->getCheckMode() && item->isCheckable()) { @@ -302,19 +302,19 @@ void ListView::on_item_selected_cb(void *data, Evas_Object *obj, void *event_inf void ListView::on_realized_cb(void *data, Evas_Object *obj, void *event_info) { - ListItem *item = ListItem::staticCast(event_info); + ListItem *item = ListItem::staticCast(event_info); item->onRealized(*item); } void ListView::on_unrealized_cb(void *data, Evas_Object *obj, void *event_info) { - ListItem *item = ListItem::staticCast(event_info); + ListItem *item = ListItem::staticCast(event_info); item->onUnrealized(*item); } void ListView::on_longpressed_cb(void *data, Evas_Object *obj, void *event_info) { - ListItem *item = ListItem::staticCast(event_info); + ListItem *item = ListItem::staticCast(event_info); item->setSelected(false); if (!item->getOwner()->getCheckMode()) notifyListener(data, obj, event_info, &IListViewListener::onListItemLongPressed); diff --git a/src/Common/View/src/MbeRecipientsView.cpp b/src/Common/View/src/MbeRecipientsView.cpp index 5e9c791e..50d59c2a 100644 --- a/src/Common/View/src/MbeRecipientsView.cpp +++ b/src/Common/View/src/MbeRecipientsView.cpp @@ -73,7 +73,7 @@ std::vector MbeRecipientsView::getItems() const MbeRecipientItem *MbeRecipientsView::getSelectedItem() const { - MbeRecipientItem *pSelected = ViewItem::staticCast(elm_multibuttonentry_selected_item_get(getEo())); + auto *pSelected = ViewItem::staticCast(elm_multibuttonentry_selected_item_get(getEo())); return pSelected ? pSelected : m_pSelectedItem; } @@ -94,7 +94,7 @@ void MbeRecipientsView::setListener(IMbeRecipientsListener *pListener) void MbeRecipientsView::onMbeItemClicked(Evas_Object *obj, void *eventInfo) { - m_pSelectedItem = ViewItem::staticCast(eventInfo); + m_pSelectedItem = ViewItem::staticCast(eventInfo); if (m_pListener) m_pListener->onMbeItemClicked(*m_pSelectedItem); } diff --git a/src/Common/View/src/NaviFrameView.cpp b/src/Common/View/src/NaviFrameView.cpp index bc5b27d9..e1b62f2a 100644 --- a/src/Common/View/src/NaviFrameView.cpp +++ b/src/Common/View/src/NaviFrameView.cpp @@ -69,7 +69,7 @@ bool NaviFrameView::isLastFrame() const NaviFrameItem *NaviFrameView::getTopFrame() const { - return ViewItem::staticCast(elm_naviframe_top_item_get(getEo())); + return ViewItem::staticCast(elm_naviframe_top_item_get(getEo())); } int NaviFrameView::getItemsCount() const @@ -183,7 +183,7 @@ void NaviFrameView::onTransitionFinished(Evas_Object *obj, void *eventInfo) MSG_LOG(""); m_TransitionStatus = false; - auto *transFinishedItem = ViewItem::staticCast(eventInfo); + auto *transFinishedItem = ViewItem::staticCast(eventInfo); for (NaviFrameItem *item: m_ItemsToDelete) { if (item == transFinishedItem) diff --git a/src/Common/View/src/View.cpp b/src/Common/View/src/View.cpp index c692dd32..84d52a43 100644 --- a/src/Common/View/src/View.cpp +++ b/src/Common/View/src/View.cpp @@ -69,7 +69,7 @@ void View::setEo(Evas_Object *eo) m_pEo = eo; if (eo) { - setData(this); + evas_object_data_set(eo, thisKey, this); setEventCb(EVAS_CALLBACK_FREE); setEventCb(EVAS_CALLBACK_DEL); } @@ -139,14 +139,9 @@ Evas_Object *View::addLayout(Evas_Object *parent, const std::string &edjePath, c return layout; } -void View::setData(Evas_Object *obj, const void *data) +View *View::getThis(const Evas_Object *obj) { - evas_object_data_set(obj, thisKey, (void*)data); -} - -void *View::getData(Evas_Object *obj) -{ - return evas_object_data_get(obj, thisKey); + return static_cast(evas_object_data_get(obj, thisKey)); } std::string Msg::markupToUtf8(const char *str) diff --git a/src/Common/View/src/ViewItem.cpp b/src/Common/View/src/ViewItem.cpp index 22b28de7..31499ecc 100644 --- a/src/Common/View/src/ViewItem.cpp +++ b/src/Common/View/src/ViewItem.cpp @@ -31,7 +31,7 @@ ViewItem::~ViewItem() void ViewItem::setElmObjItem(Elm_Object_Item *item) { m_pItem = item; - setData(this); + elm_object_item_data_set(getElmObjItem(), this); elm_object_item_del_cb_set(m_pItem, on_delete_cb); onAttached(*this); } @@ -43,8 +43,7 @@ void ViewItem::destroy() void ViewItem::on_delete_cb(void *data, Evas_Object *obj, void *event_info) { - Elm_Object_Item *it = static_cast(event_info); - ViewItem *self = static_cast(elm_object_item_data_get(it)); + auto *self = staticCast(event_info); self->onViewDestroyed(); } diff --git a/src/Viewer/Controller/src/Viewer.cpp b/src/Viewer/Controller/src/Viewer.cpp index a545163a..913a1b0a 100644 --- a/src/Viewer/Controller/src/Viewer.cpp +++ b/src/Viewer/Controller/src/Viewer.cpp @@ -401,7 +401,7 @@ void Viewer::onSaveAttachmentsItemPressed(PopupListItem &item) void Viewer::onRecipItemClicked(Evas_Object *obj, void *eventInfo) { MSG_LOG(""); - MbeRecipientItem *item = ViewItem::staticCast(eventInfo); + auto *item = ViewItem::staticCast(eventInfo); recipientClickHandler(item->getAddress()); } -- 2.34.1