eo-cxx: Added generic parent_type and parent_set.
authorSavio Sena <savio@expertisesolutions.com.br>
Thu, 24 Jul 2014 18:54:04 +0000 (15:54 -0300)
committerSavio Sena <savio@expertisesolutions.com.br>
Thu, 24 Jul 2014 22:52:23 +0000 (19:52 -0300)
This allows us to use any type implementing _eo_ptr() with the parent
idiom "efl::eo::parent = obj" and also with efl::eo::inherit parent_set.

src/bindings/eo_cxx/eo_base.hh
src/bindings/eo_cxx/eo_inherit.hh

index 8801b7f3658243e0d2983b9ff72d0b72fdd80b53..70052d0cc6d252a60bf660bd5b1de9bdc047f71c 100644 (file)
@@ -291,6 +291,11 @@ struct parent_expr
       return { parent._eo_ptr() };
    }
 
+   template <typename T>
+   parent_type operator=(T const& parent) const
+   {
+      return { parent._eo_ptr() };
+   }
    parent_type operator=(std::nullptr_t) const
    {
       return { nullptr };
index 66de0869e5a79f2ce08f802cc54a6dfaf575d468..9198e56145ae25d1de542e0af93b73a699a2bff8 100644 (file)
@@ -105,6 +105,11 @@ struct inherit
    ///
    Eo_Class const* _eo_class() const { return _eo_cls; }
 
+   template <typename T>
+   void parent_set(T& p_)
+   {
+      detail::parent_set(_eo_raw, p_._eo_ptr());
+   }
 protected:
    /// @brief Copy constructor.
    ///