From fe867790a5467aa7e7413dd4429774bfee139630 Mon Sep 17 00:00:00 2001 From: Lauro Moura Date: Tue, 4 Dec 2018 15:50:48 -0200 Subject: [PATCH] eolian_cxx: Add documentation field to property_def Test Plan: run eolian_cxx suite Reviewers: vitor.sousa, felipealmeida Reviewed By: vitor.sousa Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D7414 --- src/lib/eolian_cxx/grammar/klass_def.hpp | 10 ++++++++++ src/tests/eolian_cxx/eolian_cxx_test_documentation.cc | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/src/lib/eolian_cxx/grammar/klass_def.hpp b/src/lib/eolian_cxx/grammar/klass_def.hpp index 1db9324..08240b6 100644 --- a/src/lib/eolian_cxx/grammar/klass_def.hpp +++ b/src/lib/eolian_cxx/grammar/klass_def.hpp @@ -802,6 +802,7 @@ struct property_def { klass_name klass; std::string name; + documentation_def documentation; efl::eina::optional getter; efl::eina::optional setter; @@ -810,6 +811,7 @@ struct property_def { return lhs.klass == rhs.klass && lhs.name == rhs.name + && lhs.documentation == rhs.documentation && lhs.getter == rhs.getter && lhs.setter == rhs.setter; } @@ -828,6 +830,14 @@ struct property_def const Eolian_Class *eolian_klass = eolian_function_class_get(function); klass = klass_name(eolian_klass, {attributes::qualifier_info::is_none, std::string()}); + + Eolian_Implement const* implement = ::eolian_function_implement_get(function); + if (!implement) + return; + + Eolian_Function_Type type = ::eolian_function_type_get(function); + if (type == EOLIAN_PROP_GET || type == EOLIAN_PROP_SET || type == EOLIAN_PROPERTY) + documentation = eolian_implement_documentation_get(implement, EOLIAN_PROPERTY); } }; diff --git a/src/tests/eolian_cxx/eolian_cxx_test_documentation.cc b/src/tests/eolian_cxx/eolian_cxx_test_documentation.cc index 4690f45..d3908ff 100644 --- a/src/tests/eolian_cxx/eolian_cxx_test_documentation.cc +++ b/src/tests/eolian_cxx/eolian_cxx_test_documentation.cc @@ -144,6 +144,12 @@ EFL_START_TEST(eolian_cxx_test_property_docs) ck_assert_str_eq(doc.summary.c_str(), "Set documentation."); ck_assert_str_eq(doc.description.c_str(), ""); ck_assert_str_eq(doc.since.c_str(), "1.17"); // Members inherit from parent *class* + + auto property_iter = klass.properties.begin(); + auto property = *property_iter; + doc = property.documentation; + ck_assert_str_eq(doc.summary.c_str(), "Property common documentation."); + ck_assert_str_eq(doc.since.c_str(), "1.18"); } EFL_END_TEST -- 2.7.4