From 430169053570ba4c3dc21ec2ae07f5b295939f6a Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Thu, 12 Feb 2015 13:24:06 +0000 Subject: [PATCH] eolian: add APIs for nullable/optional (+ lua bindings) --- src/bindings/luajit/eolian.lua | 10 ++++++++++ src/lib/eolian/Eolian.h | 20 ++++++++++++++++++++ src/lib/eolian/database_function_parameter_api.c | 14 ++++++++++++++ 3 files changed, 44 insertions(+) diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua index f92f096..9868170 100644 --- a/src/bindings/luajit/eolian.lua +++ b/src/bindings/luajit/eolian.lua @@ -227,6 +227,8 @@ ffi.cdef [[ const char *eolian_parameter_description_get(const Eolian_Function_Parameter *param); Eina_Bool eolian_parameter_const_attribute_get(const Eolian_Function_Parameter *param_desc, Eina_Bool is_get); Eina_Bool eolian_parameter_is_nonull(const Eolian_Function_Parameter *param_desc); + Eina_Bool eolian_parameter_is_nullable(const Eolian_Function_Parameter *param_desc); + Eina_Bool eolian_parameter_is_optional(const Eolian_Function_Parameter *param_desc); const Eolian_Type *eolian_function_return_type_get(const Eolian_Function *function_id, Eolian_Function_Type ftype); const Eolian_Expression *eolian_function_return_default_value_get(const Eolian_Function *foo_id, Eolian_Function_Type ftype); const char *eolian_function_return_comment_get(const Eolian_Function *foo_id, Eolian_Function_Type ftype); @@ -766,6 +768,14 @@ ffi.metatype("Eolian_Function_Parameter", { is_nonull = function(self) return eolian.eolian_parameter_is_nonull(self) ~= 0 + end, + + is_nullable = function(self) + return eolian.eolian_parameter_is_nullable(self) ~= 0 + end, + + is_optional = function(self) + return eolian.eolian_parameter_is_optional(self) ~= 0 end } }) diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h index 9464cdf..e553180 100644 --- a/src/lib/eolian/Eolian.h +++ b/src/lib/eolian/Eolian.h @@ -1010,6 +1010,26 @@ EAPI Eina_Bool eolian_parameter_const_attribute_get(const Eolian_Function_Parame EAPI Eina_Bool eolian_parameter_is_nonull(const Eolian_Function_Parameter *param_desc); /* + * @brief Indicates if a parameter is nullable. + * + * @param[in] param_desc parameter handle + * @return EINA_TRUE if nullable, EINA_FALSE otherwise + * + * @ingroup Eolian + */ +EAPI Eina_Bool eolian_parameter_is_nullable(const Eolian_Function_Parameter *param_desc); + +/* + * @brief Indicates if a parameter is optional. + * + * @param[in] param_desc parameter handle + * @return EINA_TRUE if optional, EINA_FALSE otherwise + * + * @ingroup Eolian + */ +EAPI Eina_Bool eolian_parameter_is_optional(const Eolian_Function_Parameter *param_desc); + +/* * @brief Get the return type of a function. * * @param[in] function_id id of the function diff --git a/src/lib/eolian/database_function_parameter_api.c b/src/lib/eolian/database_function_parameter_api.c index 744926e..6d7ad81 100644 --- a/src/lib/eolian/database_function_parameter_api.c +++ b/src/lib/eolian/database_function_parameter_api.c @@ -56,3 +56,17 @@ eolian_parameter_is_nonull(const Eolian_Function_Parameter *param) EINA_SAFETY_ON_NULL_RETURN_VAL(param, EINA_FALSE); return param->nonull; } + +EAPI Eina_Bool +eolian_parameter_is_nullable(const Eolian_Function_Parameter *param) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(param, EINA_FALSE); + return param->nullable; +} + +EAPI Eina_Bool +eolian_parameter_is_optional(const Eolian_Function_Parameter *param) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(param, EINA_FALSE); + return param->optional; +} -- 2.7.4