eolian: add implement validation (currently for docs)
authorDaniel Kolesa <d.kolesa@osg.samsung.com>
Thu, 19 Jan 2017 13:56:23 +0000 (14:56 +0100)
committerDaniel Kolesa <d.kolesa@osg.samsung.com>
Thu, 19 Jan 2017 14:09:07 +0000 (15:09 +0100)
src/lib/eolian/database_validate.c

index e2ec9dc..2b31d71 100644 (file)
@@ -227,13 +227,6 @@ _validate_function(const Eolian_Function *func)
 
 #undef EOLIAN_PARAMS_VALIDATE
 
-   /* TODO: validate docs via impls to also validate overrides */
-   if (!_validate_doc(func->impl->common_doc))
-     return EINA_FALSE;
-   if (!_validate_doc(func->impl->get_doc))
-     return EINA_FALSE;
-   if (!_validate_doc(func->impl->set_doc))
-     return EINA_FALSE;
    if (!_validate_doc(func->get_return_doc))
      return EINA_FALSE;
    if (!_validate_doc(func->set_return_doc))
@@ -255,11 +248,25 @@ _validate_event(const Eolian_Event *event)
 }
 
 static Eina_Bool
+_validate_implement(const Eolian_Implement *impl)
+{
+   if (!_validate_doc(impl->common_doc))
+     return EINA_FALSE;
+   if (!_validate_doc(impl->get_doc))
+     return EINA_FALSE;
+   if (!_validate_doc(impl->set_doc))
+     return EINA_FALSE;
+
+   return EINA_TRUE;
+}
+
+static Eina_Bool
 _validate_class(const Eolian_Class *cl)
 {
    Eina_List *l;
    const Eolian_Function *func;
    const Eolian_Event *event;
+   const Eolian_Implement *impl;
 
    EINA_LIST_FOREACH(cl->properties, l, func)
      if (!_validate_function(func))
@@ -273,6 +280,10 @@ _validate_class(const Eolian_Class *cl)
      if (!_validate_event(event))
        return EINA_FALSE;
 
+   EINA_LIST_FOREACH(cl->implements, l, impl)
+     if (!_validate_implement(impl))
+       return EINA_FALSE;
+
    if (!_validate_doc(cl->doc))
      return EINA_FALSE;