q66 pushed a commit to branch master.

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

commit d043c8449262ee4cc17ea23a2e69e999e5c23bc0
Author: Daniel Kolesa <[email protected]>
Date:   Fri Aug 22 11:17:22 2014 +0100

    eolian: more validation code (alias/struct/enum/constant/global)
---
 src/lib/eolian/database_validate.c | 52 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/src/lib/eolian/database_validate.c 
b/src/lib/eolian/database_validate.c
index d950390..d8932c2 100644
--- a/src/lib/eolian/database_validate.c
+++ b/src/lib/eolian/database_validate.c
@@ -89,10 +89,39 @@ _validate_class(const Eolian_Class *cl)
    return EINA_TRUE;
 }
 
+static Eina_Bool
+_validate_variable(const Eolian_Variable *var)
+{
+   if (!_validate_type(var->base_type))
+     return EINA_FALSE;
+
+   if (var->value && !_validate_expr(var->value, var->base_type))
+     return EINA_FALSE;
+
+   return EINA_TRUE;
+}
+
+static Eina_Bool
+_type_map_cb(const Eina_Hash *hash EINA_UNUSED, const void *key EINA_UNUSED,
+             const Eolian_Type *tp, Eina_Bool *success)
+{
+   *success = _validate_type(tp);
+   return *success;
+}
+
+static Eina_Bool
+_var_map_cb(const Eina_Hash *hash EINA_UNUSED, const void *key EINA_UNUSED,
+             const Eolian_Variable *var, Eina_Bool *success)
+{
+   *success = _validate_variable(var);
+   return *success;
+}
+
 Eina_Bool
 database_validate(void)
 {
    const Eolian_Class *cl;
+
    Eina_Iterator *iter = eolian_all_classes_get();
    EINA_ITERATOR_FOREACH(iter, cl)
      if (!_validate_class(cl))
@@ -101,5 +130,28 @@ database_validate(void)
           return EINA_FALSE;
        }
    eina_iterator_free(iter);
+
+   Eina_Bool succ = EINA_TRUE;
+
+   eina_hash_foreach(_aliases, (Eina_Hash_Foreach)_type_map_cb, &succ);
+   if (!succ)
+     return EINA_FALSE;
+
+   eina_hash_foreach(_structs, (Eina_Hash_Foreach)_type_map_cb, &succ);
+   if (!succ)
+     return EINA_FALSE;
+
+   eina_hash_foreach(_enums, (Eina_Hash_Foreach)_type_map_cb, &succ);
+   if (!succ)
+     return EINA_FALSE;
+
+   eina_hash_foreach(_globals, (Eina_Hash_Foreach)_var_map_cb, &succ);
+   if (!succ)
+     return EINA_FALSE;
+
+   eina_hash_foreach(_constants, (Eina_Hash_Foreach)_var_map_cb, &succ);
+   if (!succ)
+     return EINA_FALSE;
+
    return EINA_TRUE;
 }

-- 


Reply via email to