Pyolian: add API to get children of a unit
authorDave Andreoli <dave@gurumeditation.it>
Wed, 28 Feb 2018 12:16:53 +0000 (13:16 +0100)
committerWonki Kim <wonki_.kim@samsung.com>
Tue, 10 Apr 2018 11:10:42 +0000 (20:10 +0900)
src/scripts/pyolian/eolian.py
src/scripts/pyolian/eolian_lib.py
src/scripts/pyolian/test_eolian.py

index 46b4465..1660ded 100644 (file)
@@ -332,6 +332,11 @@ class EolianBaseObject(object):
 ###  Main Eolian Unit  ########################################################
 
 class Eolian_Unit(EolianBaseObject):
+
+    @property
+    def children(self):
+        return Iterator(Eolian_Unit, lib.eolian_unit_children_get(self._obj))
+
     def class_get_by_name(self, class_name):
         c_cls = lib.eolian_class_get_by_name(self._obj, _str_to_bytes(class_name))
         return Class(c_cls) if c_cls else None
index 006a9c5..d4fc9d9 100644 (file)
@@ -91,6 +91,10 @@ lib.eolian_declarations_get_by_file.restype = c_void_p
 
 ###  Eolian_Unit  #############################################################
 
+# EAPI Eina_Iterator *eolian_unit_children_get(const Eolian_Unit *unit);
+lib.eolian_unit_children_get.argtypes = [c_void_p,]
+lib.eolian_unit_children_get.restype = c_void_p
+
 # EAPI const Eolian_Class *eolian_class_get_by_name(const Eolian_Unit *unit, const char *class_name);
 lib.eolian_class_get_by_name.argtypes = [c_void_p, c_char_p]
 lib.eolian_class_get_by_name.restype = c_void_p
index 82d8528..f02b782 100755 (executable)
@@ -53,6 +53,11 @@ class TestBaseObject(unittest.TestCase):
 
 
 class TestEolianUnit(unittest.TestCase):
+    def test_children_listing(self):
+        l = list(eolian_db.children)
+        self.assertGreater(len(l), 500)
+        self.assertIsInstance(l[0], eolian.Eolian_Unit)
+
     def test_file_listing(self):
         l = list(eolian_db.eo_file_paths)
         self.assertGreater(len(l), 400)