eolian: add support for function pointers in utility APIs
authorDaniel Kolesa <d.kolesa@samsung.com>
Tue, 3 Sep 2019 13:03:44 +0000 (15:03 +0200)
committerYeongjong Lee <yj34.lee@samsung.com>
Mon, 16 Sep 2019 01:23:00 +0000 (10:23 +0900)
src/lib/eolian/database_function_api.c

index 35edeb3..15bbfde 100644 (file)
@@ -192,7 +192,8 @@ eolian_function_return_type_get(const Eolian_Function *fid, Eolian_Function_Type
    switch (ftype)
      {
       case EOLIAN_METHOD:
-        if (fid->type != EOLIAN_METHOD)
+      case EOLIAN_FUNCTION_POINTER:
+        if (fid->type != ftype)
           return NULL;
         return fid->get_ret_type;
       case EOLIAN_PROP_GET:
@@ -203,8 +204,6 @@ eolian_function_return_type_get(const Eolian_Function *fid, Eolian_Function_Type
         if ((fid->type != EOLIAN_PROP_SET) && (fid->type != EOLIAN_PROPERTY))
           return NULL;
         return fid->set_ret_type;
-      case EOLIAN_FUNCTION_POINTER:
-        return (fid->type != EOLIAN_FUNCTION_POINTER) ? NULL : fid->get_ret_type;
       default:
         return NULL;
      }
@@ -219,7 +218,8 @@ eolian_function_return_default_value_get(const Eolian_Function *fid, Eolian_Func
    switch (ftype)
      {
       case EOLIAN_METHOD:
-        if (fid->type != EOLIAN_METHOD)
+      case EOLIAN_FUNCTION_POINTER:
+        if (fid->type != ftype)
           return NULL;
         return fid->get_ret_val;
       case EOLIAN_PROP_GET:
@@ -244,7 +244,8 @@ eolian_function_return_documentation_get(const Eolian_Function *fid, Eolian_Func
    switch (ftype)
      {
       case EOLIAN_METHOD:
-        if (fid->type != EOLIAN_METHOD)
+      case EOLIAN_FUNCTION_POINTER:
+        if (fid->type != ftype)
           return NULL;
         return fid->get_return_doc;
       case EOLIAN_PROP_GET:
@@ -270,7 +271,8 @@ eolian_function_return_allow_unused(const Eolian_Function *fid,
    switch (ftype)
      {
       case EOLIAN_METHOD:
-        if (fid->type != EOLIAN_METHOD)
+      case EOLIAN_FUNCTION_POINTER:
+        if (fid->type != ftype)
           return EINA_TRUE;
         return !fid->get_return_no_unused;
       case EOLIAN_PROP_GET:
@@ -296,7 +298,8 @@ eolian_function_return_is_by_ref(const Eolian_Function *fid,
    switch (ftype)
      {
       case EOLIAN_METHOD:
-        if (fid->type != EOLIAN_METHOD)
+      case EOLIAN_FUNCTION_POINTER:
+        if (fid->type != ftype)
           return EINA_FALSE;
         return fid->get_return_by_ref;
       case EOLIAN_PROP_GET:
@@ -322,7 +325,8 @@ eolian_function_return_is_move(const Eolian_Function *fid,
    switch (ftype)
      {
       case EOLIAN_METHOD:
-        if (fid->type != EOLIAN_METHOD)
+      case EOLIAN_FUNCTION_POINTER:
+        if (fid->type != ftype)
           return EINA_FALSE;
         return fid->get_return_move;
       case EOLIAN_PROP_GET: