eolian: add support for function pointers in utility APIs

This commit is contained in:
Daniel Kolesa 2019-09-03 15:03:44 +02:00
parent d9551af6e1
commit 99754341e7
1 changed files with 12 additions and 8 deletions

View 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: