[glibmm/refptr_as_sharedptr_v4: 7/8] Use std::dynamic_pointer_cast<>().



commit ed3cde0c0f31dd098f39ba415e1b72bad8d7a62b
Author: Murray Cumming <murrayc murrayc com>
Date:   Sun Dec 11 19:44:49 2016 +0100

    Use std::dynamic_pointer_cast<>().
    
    Instead of Glib::RefPtr<>::cast_dynamic().

 examples/network/resolver.cc      |    2 +-
 examples/network/socket-client.cc |    2 +-
 examples/network/socket-server.cc |    2 +-
 gio/src/liststore.hg              |    6 +++---
 glib/glibmm/object.h              |    4 ++--
 glib/glibmm/value.h               |    4 ++--
 tests/giomm_listmodel/main.cc     |    4 ++--
 7 files changed, 12 insertions(+), 12 deletions(-)
---
diff --git a/examples/network/resolver.cc b/examples/network/resolver.cc
index 106f60a..6fb0780 100644
--- a/examples/network/resolver.cc
+++ b/examples/network/resolver.cc
@@ -287,7 +287,7 @@ static void
 print_connectable_sockaddr(Glib::RefPtr<Gio::SocketAddress> sockaddr)
 {
   Glib::ustring phys;
-  auto isa = Glib::RefPtr<Gio::InetSocketAddress>::cast_dynamic(sockaddr);
+  auto isa = std::dynamic_pointer_cast<Gio::InetSocketAddress>(sockaddr);
 
   if (!isa)
   {
diff --git a/examples/network/socket-client.cc b/examples/network/socket-client.cc
index dcb8e90..bf8dd4d 100644
--- a/examples/network/socket-client.cc
+++ b/examples/network/socket-client.cc
@@ -68,7 +68,7 @@ socket_address_to_string(const Glib::RefPtr<Gio::SocketAddress>& address)
   Glib::ustring str, res;
   int port;
 
-  auto isockaddr = Glib::RefPtr<Gio::InetSocketAddress>::cast_dynamic(address);
+  auto isockaddr = std::dynamic_pointer_cast<Gio::InetSocketAddress>(address);
   if (!isockaddr)
     return Glib::ustring();
   inet_address = isockaddr->get_address();
diff --git a/examples/network/socket-server.cc b/examples/network/socket-server.cc
index 5f25442..8db9406 100644
--- a/examples/network/socket-server.cc
+++ b/examples/network/socket-server.cc
@@ -75,7 +75,7 @@ public:
 Glib::ustring
 socket_address_to_string(const Glib::RefPtr<Gio::SocketAddress>& address)
 {
-  auto isockaddr = Glib::RefPtr<Gio::InetSocketAddress>::cast_dynamic(address);
+  auto isockaddr = std::dynamic_pointer_cast<Gio::InetSocketAddress>(address);
   if (!isockaddr)
     return Glib::ustring();
 
diff --git a/gio/src/liststore.hg b/gio/src/liststore.hg
index 77e2375..3b86e25 100644
--- a/gio/src/liststore.hg
+++ b/gio/src/liststore.hg
@@ -250,7 +250,7 @@ Glib::RefPtr<ListStore<T_item>> ListStore<T_item>::create()
 template <typename T_item>
 Glib::RefPtr<T_item> ListStore<T_item>::get_item(guint position)
 {
-  return Glib::RefPtr<T_item>::cast_dynamic(ListModel::get_object(position));
+  return std::dynamic_pointer_cast<T_item>(ListModel::get_object(position));
 }
 
 template <typename T_item>
@@ -310,9 +310,9 @@ int ListStore<T_item>::compare_data_func(gconstpointer a, gconstpointer b, gpoin
 
   // cast_dynamic is necessary if T_item is a user-derived class, such as
   // class MyObject : public Glib::Object
-  const Glib::RefPtr<const T_item> item_a = Glib::RefPtr<T_item>::cast_dynamic(
+  const Glib::RefPtr<const T_item> item_a = std::dynamic_pointer_cast<T_item>(
     Glib::wrap(static_cast<typename T_item::BaseObjectType*>(const_cast<gpointer>(a)), true));
-  const Glib::RefPtr<const T_item> item_b = Glib::RefPtr<T_item>::cast_dynamic(
+  const Glib::RefPtr<const T_item> item_b = std::dynamic_pointer_cast<T_item>(
     Glib::wrap(static_cast<typename T_item::BaseObjectType*>(const_cast<gpointer>(b)), true));
 
   return (*slot)(item_a, item_b);
diff --git a/glib/glibmm/object.h b/glib/glibmm/object.h
index bbe54ef..05a0f2b 100644
--- a/glib/glibmm/object.h
+++ b/glib/glibmm/object.h
@@ -260,7 +260,7 @@ public:
   static GType value_type() { return T::get_base_type(); }
 
   void set(const CppType& data) { set_object(data.get()); }
-  CppType get() const { return Glib::RefPtr<T>::cast_dynamic(get_object_copy()); }
+  CppType get() const { return std::dynamic_pointer_cast<T>(get_object_copy()); }
 };
 
 // The SUN Forte Compiler has a problem with this:
@@ -279,7 +279,7 @@ public:
   static GType value_type() { return T::get_base_type(); }
 
   void set(const CppType& data) { set_object(const_cast<T*>(data.get())); }
-  CppType get() const { return Glib::RefPtr<T>::cast_dynamic(get_object_copy()); }
+  CppType get() const { return std::dynamic_pointer_cast<T>(get_object_copy()); }
 };
 #endif /* GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS */
 
diff --git a/glib/glibmm/value.h b/glib/glibmm/value.h
index 8f983ce..f4ef49f 100644
--- a/glib/glibmm/value.h
+++ b/glib/glibmm/value.h
@@ -240,7 +240,7 @@ public:
   static GType value_type() { return T::get_base_type(); }
 
   void set(const CppType& data) { set_object(data.get()); }
-  CppType get() const { return Glib::RefPtr<T>::cast_dynamic(get_object_copy()); }
+  CppType get() const { return std::dynamic_pointer_cast<T>(get_object_copy()); }
 };
 
 // The SUN Forte Compiler has a problem with this:
@@ -259,7 +259,7 @@ public:
   static GType value_type() { return T::get_base_type(); }
 
   void set(const CppType& data) { set_object(const_cast<T*>(data.get())); }
-  CppType get() const { return Glib::RefPtr<T>::cast_dynamic(get_object_copy()); }
+  CppType get() const { return std::dynamic_pointer_cast<T>(get_object_copy()); }
 };
 #endif // GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS
 
diff --git a/tests/giomm_listmodel/main.cc b/tests/giomm_listmodel/main.cc
index 8c26e77..cd8667d 100644
--- a/tests/giomm_listmodel/main.cc
+++ b/tests/giomm_listmodel/main.cc
@@ -178,8 +178,8 @@ gint32 get_next_number()
 int compare_items1(const Glib::RefPtr<const Glib::Object>& a,
   const Glib::RefPtr<const Glib::Object>& b)
 {
-  const auto action_a = Glib::RefPtr<const Gio::SimpleAction>::cast_dynamic(a);
-  const auto action_b = Glib::RefPtr<const Gio::SimpleAction>::cast_dynamic(b);
+  const auto action_a = std::dynamic_pointer_cast<const Gio::SimpleAction>(a);
+  const auto action_b = std::dynamic_pointer_cast<const Gio::SimpleAction>(b);
   if (!action_a || !action_b)
   {
     result = EXIT_FAILURE;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]