diff --git a/src/scripts/gendoc/doc_macros.include b/src/scripts/gendoc/doc_macros.include index 877b7c67bf..1527e09f43 100644 --- a/src/scripts/gendoc/doc_macros.include +++ b/src/scripts/gendoc/doc_macros.include @@ -7,14 +7,8 @@ ${UNTOKENIZE(tokens=obj.summary_tokens)}$#! ${UNTOKENIZE(tokens=obj.documentation_get(obj.function.type).summary_tokens)}$#! - - - - -${UNTOKENIZE(tokens=parent_impl.documentation_get(parent_impl.function.type).summary_tokens)}$#! - - - + +${UNTOKENIZE(tokens=obj.documentation_fallback.summary_tokens)}$#! ${UNTOKENIZE(tokens=obj.documentation.summary_tokens)}$#! @@ -31,14 +25,8 @@ ${UNTOKENIZE(tokens=obj.description_tokens)}$#! ${UNTOKENIZE(tokens=obj.documentation_get(obj.function.type).description_tokens)}$#! - - - - -${UNTOKENIZE(tokens=parent_impl.documentation_get(parent_impl.function.type).description_tokens)}$#! - - - + +${UNTOKENIZE(tokens=obj.documentation_fallback.description_tokens)}$#! ${UNTOKENIZE(tokens=obj.documentation.description_tokens)}$#! @@ -55,14 +43,8 @@ ${UNTOKENIZE(tokens=obj.documentation.description_tokens)}$#! //Since ${obj.documentation_get(obj.function.type).since}$// - - - - -//Since ${parent_impl.documentation_get(parent_impl.function.type).since}$// - - - + +//Since ${obj.documentation_fallback.since}$// //Since ${obj.documentation.since}$// diff --git a/src/scripts/pyolian/eolian.py b/src/scripts/pyolian/eolian.py index 58c3105e03..70496debc0 100644 --- a/src/scripts/pyolian/eolian.py +++ b/src/scripts/pyolian/eolian.py @@ -1011,6 +1011,11 @@ class Implement(Object): def __repr__(self): return "".format(self) + @cached_property + def parent(self): + c_impl = lib.eolian_aux_implement_parent_get(self) + return Implement(c_impl) if c_impl else None + @cached_property def class_(self): c_cls = lib.eolian_implement_class_get(self) @@ -1022,10 +1027,14 @@ class Implement(Object): return Function(c_func) if c_func else None def documentation_get(self, ftype=Eolian_Function_Type.METHOD): - # something strange in this eolian api :/ (see 'documentation' property - c_doc = lib.eolian_implement_documentation_get(self, ftype) + # c_doc = lib.eolian_implement_documentation_get(self, ftype) + c_doc = lib.eolian_aux_implement_documentation_get(self, ftype) + return Documentation(c_doc) if c_doc else None + + @cached_property + def documentation_fallback(self): + c_doc = lib.eolian_aux_implement_documentation_fallback_get(self) return Documentation(c_doc) if c_doc else None - # TODO implement util properties for documentation_get def is_auto(self, ftype=Eolian_Function_Type.METHOD): return bool(lib.eolian_implement_is_auto(self, ftype)) diff --git a/src/scripts/pyolian/eolian_lib.py b/src/scripts/pyolian/eolian_lib.py index e73c37e1db..10098bf9b3 100644 --- a/src/scripts/pyolian/eolian_lib.py +++ b/src/scripts/pyolian/eolian_lib.py @@ -706,3 +706,17 @@ lib.eolian_error_documentation_get.restype = c_void_p # EAPI Eina_Bool eolian_error_is_extern(const Eolian_Error *err); lib.eolian_error_is_extern.argtypes = (c_void_p,) lib.eolian_error_is_extern.restype = c_bool + + +# Eolian Aux ################################################################ +# EAPI const Eolian_Implement *eolian_aux_implement_parent_get(const Eolian_Implement *impl); +lib.eolian_aux_implement_parent_get.argtypes = (c_void_p,) +lib.eolian_aux_implement_parent_get.restype = c_void_p + +# EAPI const Eolian_Documentation *eolian_aux_implement_documentation_get(const Eolian_Implement *impl, Eolian_Function_Type ftype); +lib.eolian_aux_implement_documentation_get.argtypes = (c_void_p, c_int) +lib.eolian_aux_implement_documentation_get.restype = c_void_p + +# EAPI const Eolian_Documentation *eolian_aux_implement_documentation_fallback_get(const Eolian_Implement *impl); +lib.eolian_aux_implement_documentation_fallback_get.argtypes = (c_void_p,) +lib.eolian_aux_implement_documentation_fallback_get.restype = c_void_p diff --git a/src/scripts/pyolian/test_eolian.py b/src/scripts/pyolian/test_eolian.py index 0271e50117..3a101691a4 100755 --- a/src/scripts/pyolian/test_eolian.py +++ b/src/scripts/pyolian/test_eolian.py @@ -407,6 +407,14 @@ class TestEolianImplement(unittest.TestCase): self.assertFalse(im.is_prop_get) self.assertFalse(im.is_property) self.assertTrue(im.is_method) + self.assertIsNone(im.parent) + + def test_implement_parent(self): + cls = eolian_db.class_by_name_get('Efl.Ui.Button') + im = [im for im in cls.implements if im.short_name == 'content_unset'][0] + self.assertIsInstance(im, eolian.Implement) + self.assertEqual(im.name, 'Efl.Content.content_unset') # TODO is this right?? + self.assertEqual(im.parent.name, 'Efl.Content.content_unset') class TestEolianEvent(unittest.TestCase):