q66 pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=c4640d6f4036b8561eb071ffcdce97c9444e0c02

commit c4640d6f4036b8561eb071ffcdce97c9444e0c02
Author: Daniel Kolesa <[email protected]>
Date:   Thu Oct 11 16:35:41 2018 +0200

    eolian: add API to get full file path of a unit
    
    This is necessary for easy dependency generation, as it is needed
    to retrieve a full list of paths that each generated file depends
    on.
---
 src/lib/eolian/Eolian.h          | 16 ++++++++++++++++
 src/lib/eolian/eolian_database.c | 10 ++++++++++
 2 files changed, 26 insertions(+)

diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h
index d8a662e541..b5241ead86 100644
--- a/src/lib/eolian/Eolian.h
+++ b/src/lib/eolian/Eolian.h
@@ -909,10 +909,26 @@ EAPI Eina_Iterator *eolian_unit_children_get(const 
Eolian_Unit *unit);
  *
  * @param[in] unit The unit.
  *
+ * @see eolian_unit_file_path_get
+ *
  * @ingroup Eolian
  */
 EAPI const char *eolian_unit_file_get(const Eolian_Unit *unit);
 
+/*
+ * @brief Get the full file path a unit is associated with.
+ *
+ * This will be `NULL` if not associated with a file (like the master unit
+ * within `Eolian_State`).
+ *
+ * @param[in] unit The unit.
+ *
+ * @see eolian_unit_file_get
+ *
+ * @ingroup Eolian
+ */
+EAPI const char *eolian_unit_file_path_get(const Eolian_Unit *unit);
+
 /*
  * @brief Get an object in a unit by name.
  *
diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c
index ddb14e3a0f..eb6e896bab 100644
--- a/src/lib/eolian/eolian_database.c
+++ b/src/lib/eolian/eolian_database.c
@@ -1226,6 +1226,16 @@ eolian_unit_file_get(const Eolian_Unit *unit)
    return unit->file;
 }
 
+EAPI const char *
+eolian_unit_file_path_get(const Eolian_Unit *unit)
+{
+   if (!unit || !unit->file) return NULL;
+   Eina_Bool is_eo = eina_str_has_suffix(unit->file, EO_SUFFIX);
+   return eina_hash_find(is_eo
+     ? unit->state->filenames_eo
+     : unit->state->filenames_eot, unit->file);
+}
+
 EAPI const Eolian_Object *
 eolian_unit_object_by_name_get(const Eolian_Unit *unit, const char *name)
 {

-- 


Reply via email to