cxx: generate a constructor with a parent and a lambda function
authorDaniel Zaoui <daniel.zaoui@yahoo.com>
Wed, 6 Sep 2017 22:24:52 +0000 (01:24 +0300)
committerDaniel Zaoui <daniel.zaoui@yahoo.com>
Wed, 6 Sep 2017 22:29:57 +0000 (01:29 +0300)
Until now, one could not invoke functions into the constructor of a
widget possessing a parent. It is needed for widgets such as Efl.Ui.Check
where style is needed during construction.

@fix T5980

src/lib/eolian_cxx/grammar/class_definition.hpp

index 0b26d7c..c05ea6d 100644 (file)
@@ -64,6 +64,10 @@ struct class_definition_generator
          << scope_tab << "{\n"
          << scope_tab << scope_tab << "::efl::eolian::do_eo_add( ::efl::eo::concrete::_eo_raw, ::efl::eo::concrete{nullptr}, _eo_class(), f);\n"
          << scope_tab << "}\n"
+         << scope_tab << "template <typename F> " << string << "( ::efl::eo::concrete parent, F f, typename ::std::enable_if< ::efl::eolian::is_callable<F>::value>::type* = 0)\n"
+         << scope_tab << "{\n"
+         << scope_tab << scope_tab << "::efl::eolian::do_eo_add( ::efl::eo::concrete::_eo_raw, parent, _eo_class(), f);\n"
+         << scope_tab << "}\n"
          // << scope_tab << "explicit " << string << "( ::efl::eo::concrete const& parent)\n"
          // << scope_tab << scope_tab << ": ::efl::eo::concrete( ::efl::eo::do_eo_add(parent)) {}\n"
          // << scope_tab << "template <typename F>\n"