From 76ef772d0a26463ba240718183195d61002587bf Mon Sep 17 00:00:00 2001 From: Jean-Philippe Andre Date: Fri, 26 May 2017 10:29:05 +0900 Subject: [PATCH] edje: Unify load error types for image and edje (EO) Most of the values were the same, with edje having just a couple more error codes. Not entirely sure the prefix Efl.Image is correct for this type. Maybe just Efl.Load.Error? --- src/lib/edje/Edje_Common.h | 16 ---------- src/lib/edje/Edje_Legacy.h | 51 ++++++++++++++++++++++++++++++++ src/lib/edje/edje_load.c | 26 ++++++++++++++-- src/lib/edje/edje_object.eo | 26 ++++++---------- src/lib/edje/edje_smart.c | 4 +-- src/lib/edje/edje_types.eot | 15 ---------- src/lib/efl/interfaces/efl_gfx_types.eot | 7 +++-- src/lib/elementary/elm_layout.c | 4 +-- 8 files changed, 93 insertions(+), 56 deletions(-) diff --git a/src/lib/edje/Edje_Common.h b/src/lib/edje/Edje_Common.h index 414820c..4152251 100644 --- a/src/lib/edje/Edje_Common.h +++ b/src/lib/edje/Edje_Common.h @@ -1839,22 +1839,6 @@ EAPI void edje_file_collection_list_free (Eina_List *lst); EAPI Eina_Bool edje_file_group_exists (const char *file, const char *glob); /** - * @brief Converts the given Edje file load error code into a string - * describing it in English. - * - * @param error the error code, a value in ::Edje_Load_Error. - * @return Always returns a valid string. If the given @p error is not - * supported, "Unknown error" is returned. - * - * edje_object_file_set() is a function which sets an error value, - * afterwards, which can be fetched with - * edje_object_load_error_get(). The function in question is meant - * to be used in conjunction with the latter, for pretty-printing any - * possible error cause. - */ -EAPI const char *edje_load_error_str (Edje_Load_Error error); - -/** * @} */ diff --git a/src/lib/edje/Edje_Legacy.h b/src/lib/edje/Edje_Legacy.h index 7bfeb9b..f122bb7 100644 --- a/src/lib/edje/Edje_Legacy.h +++ b/src/lib/edje/Edje_Legacy.h @@ -97,6 +97,57 @@ EAPI void *edje_object_signal_callback_del (Evas_Object *obj, const char */ EAPI void *edje_object_signal_callback_del_full(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data); +/** Edje file loading error codes one can get - see edje_load_error_str() too. */ +typedef enum +{ + EDJE_LOAD_ERROR_NONE = 0, /**< No error happened, the loading was successful */ + EDJE_LOAD_ERROR_GENERIC = 1, /**< A generic error happened during the loading */ + EDJE_LOAD_ERROR_DOES_NOT_EXIST = 2, /**< The file pointed to did not exist */ + EDJE_LOAD_ERROR_PERMISSION_DENIED = 3, /**< Permission to read the given file was denied */ + EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED = 4, /**< Resource allocation failed during the loading */ + EDJE_LOAD_ERROR_CORRUPT_FILE = 5, /**< The file pointed to was corrupt */ + EDJE_LOAD_ERROR_UNKNOWN_FORMAT = 6, /**< The file pointed to had an unknown format */ + EDJE_LOAD_ERROR_INCOMPATIBLE_FILE = 7, /**< The file pointed to is incompatible, i.e., it doesn't + * match the library's current version's format */ + EDJE_LOAD_ERROR_UNKNOWN_COLLECTION = 8, /**< The group/collection set to load + * from was not found in the file */ + EDJE_LOAD_ERROR_RECURSIVE_REFERENCE = 9 /**< The group/collection set to load from had + * recursive references on its components */ +} Edje_Load_Error; + +/** + * @brief Gets the (last) file loading error for a given Edje object + * + * This function is meant to be used after an Edje EDJ file loading, what takes + * place with the edje_object_file_set() function. If that function does not + * return @c true, one should check for the reason of failure with this one. + * + * @ref edje_load_error_str() + * + * @return The Edje loading error, one of: - #EDJE_LOAD_ERROR_NONE - + * #EDJE_LOAD_ERROR_GENERIC - #EDJE_LOAD_ERROR_DOES_NOT_EXIST - + * #EDJE_LOAD_ERROR_PERMISSION_DENIED - + * #EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED - #EDJE_LOAD_ERROR_CORRUPT_FILE + * - #EDJE_LOAD_ERROR_UNKNOWN_FORMAT - #EDJE_LOAD_ERROR_INCOMPATIBLE_FILE - + * #EDJE_LOAD_ERROR_UNKNOWN_COLLECTION - #EDJE_LOAD_ERROR_RECURSIVE_REFERENCE + */ +EAPI Edje_Load_Error edje_object_load_error_get(const Evas_Object *obj); + +/** + * @brief Converts the given Edje file load error code into a string + * describing it in English. + * + * @param error the error code, a value in ::Edje_Load_Error. + * @return Always returns a valid string. If the given @p error is not + * supported, "Unknown error" is returned. + * + * edje_object_file_set() is a function which sets an error value, + * afterwards, which can be fetched with + * edje_object_load_error_get(). The function in question is meant + * to be used in conjunction with the latter, for pretty-printing any + * possible error cause. + */ +EAPI const char *edje_load_error_str (Edje_Load_Error error); /** * @ingroup Edje_Object_Communication_Interface_Message diff --git a/src/lib/edje/edje_load.c b/src/lib/edje/edje_load.c index 630228e..7ced4ca 100644 --- a/src/lib/edje/edje_load.c +++ b/src/lib/edje/edje_load.c @@ -167,9 +167,32 @@ _edje_object_efl_file_file_get(Eo *obj EINA_UNUSED, Edje *ed, const char **file, if (group) *group = ed->group; } -EOLIAN Edje_Load_Error +EOLIAN Efl_Image_Load_Error _edje_object_load_error_get(Eo *obj EINA_UNUSED, Edje *ed) { + switch (ed->load_error) + { + case EDJE_LOAD_ERROR_NONE: return EFL_IMAGE_LOAD_ERROR_NONE; + case EDJE_LOAD_ERROR_GENERIC: return EFL_IMAGE_LOAD_ERROR_GENERIC; + case EDJE_LOAD_ERROR_DOES_NOT_EXIST: return EFL_IMAGE_LOAD_ERROR_DOES_NOT_EXIST; + case EDJE_LOAD_ERROR_PERMISSION_DENIED: return EFL_IMAGE_LOAD_ERROR_PERMISSION_DENIED; + case EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED: return EFL_IMAGE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; + case EDJE_LOAD_ERROR_CORRUPT_FILE: return EFL_IMAGE_LOAD_ERROR_CORRUPT_FILE; + case EDJE_LOAD_ERROR_UNKNOWN_FORMAT: return EFL_IMAGE_LOAD_ERROR_UNKNOWN_FORMAT; + case EDJE_LOAD_ERROR_INCOMPATIBLE_FILE: return EFL_IMAGE_LOAD_ERROR_INCOMPATIBLE_FILE; + case EDJE_LOAD_ERROR_UNKNOWN_COLLECTION: return EFL_IMAGE_LOAD_ERROR_UNKNOWN_COLLECTION; + case EDJE_LOAD_ERROR_RECURSIVE_REFERENCE: return EFL_IMAGE_LOAD_ERROR_RECURSIVE_REFERENCE; + default: return EFL_IMAGE_LOAD_ERROR_GENERIC; + } +} + +EAPI Edje_Load_Error +edje_object_load_error_get(const Eo *obj) +{ + Edje *ed; + + ed = _edje_fetch(obj); + if (!ed) return EDJE_LOAD_ERROR_GENERIC; return ed->load_error; } @@ -3098,4 +3121,3 @@ _edje_svg_node_free(Svg_Node *node) } free(node); } - diff --git a/src/lib/edje/edje_object.eo b/src/lib/edje/edje_object.eo index a9e3694..64a27d8 100644 --- a/src/lib/edje/edje_object.eo +++ b/src/lib/edje/edje_object.eo @@ -302,23 +302,15 @@ class Edje.Object (Efl.Canvas.Group.Clipped, Efl.File, Efl.Container, Efl.Part, [[Gets the (last) file loading error for a given Edje object This function is meant to be used after an Edje EDJ file - loading, what takes place with the edje_object_file_set() - function. If that function does not return $true, one should - check for the reason of failure with this one. - - \@ref edje_load_error_str()]] - return: Edje.Load_Error; [[The Edje loading error, one of: - - #EDJE_LOAD_ERROR_NONE - - #EDJE_LOAD_ERROR_GENERIC - - #EDJE_LOAD_ERROR_DOES_NOT_EXIST - - #EDJE_LOAD_ERROR_PERMISSION_DENIED - - #EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED - - #EDJE_LOAD_ERROR_CORRUPT_FILE - - #EDJE_LOAD_ERROR_UNKNOWN_FORMAT - - #EDJE_LOAD_ERROR_INCOMPATIBLE_FILE - - #EDJE_LOAD_ERROR_UNKNOWN_COLLECTION - - #EDJE_LOAD_ERROR_RECURSIVE_REFERENCE]] - + loading, what takes place with the $file_set() function. If that + function does not return $true, one should check for the reason + of failure with this one. + ]] + legacy: null; + } + values { + error: Efl.Image.Load.Error(Efl.Image.Load.Error.generic); + [[The load error code.]] } } size_min_calc { diff --git a/src/lib/edje/edje_smart.c b/src/lib/edje/edje_smart.c index c14aed1..bd72769 100644 --- a/src/lib/edje/edje_smart.c +++ b/src/lib/edje/edje_smart.c @@ -67,14 +67,14 @@ _edje_object_efl_object_dbg_info_get(Eo *eo_obj, Edje *_pd EINA_UNUSED, Efl_Dbg_ { efl_dbg_info_get(efl_super(eo_obj, MY_CLASS), root); Efl_Dbg_Info *group = EFL_DBG_INFO_LIST_APPEND(root, MY_CLASS_NAME); + Edje_Load_Error error; const char *file, *edje_group; efl_file_get(eo_obj, &file, &edje_group); EFL_DBG_INFO_APPEND(group, "File", EINA_VALUE_TYPE_STRING, file); EFL_DBG_INFO_APPEND(group, "Group", EINA_VALUE_TYPE_STRING, edje_group); - Edje_Load_Error error = EDJE_LOAD_ERROR_NONE; - error = edje_obj_load_error_get(eo_obj); + error = edje_object_load_error_get(eo_obj); if (error != EDJE_LOAD_ERROR_NONE) { EFL_DBG_INFO_APPEND(group, "Error", EINA_VALUE_TYPE_STRING, diff --git a/src/lib/edje/edje_types.eot b/src/lib/edje/edje_types.eot index 2237b40..9345af8 100644 --- a/src/lib/edje/edje_types.eot +++ b/src/lib/edje/edje_types.eot @@ -17,21 +17,6 @@ enum Edje.Drag_Dir { xy = 3 [[X and Y dragable value]] } -enum Edje.Load_Error { - [[Edje file loading error codes one can get - see edje_load_error_str() too.]] - - none = 0, [[No error happened, the loading was successful]] - generic = 1, [[A generic error happened during the loading]] - does_not_exist = 2, [[The file pointed to did not exist]] - permission_denied = 3, [[Permission to read the given file was denied]] - resource_allocation_failed = 4, [[Resource allocation failed during the loading]] - corrupt_file = 5, [[The file pointed to was corrupt]] - unknown_format = 6, [[The file pointed to had an unknown format]] - incompatible_file = 7, [[The file pointed to is incompatible, i.e., it doesn't match the library's current version's format]] - unknown_collection = 8, [[The group/collection set to load from was not found in the file]] - recursive_reference = 9 [[The group/collection set to load from had recursive references on its components]] -} - enum Edje.Text.Autocapital_Type { [[All Text auto capital mode type values]] none, [[None mode value]] diff --git a/src/lib/efl/interfaces/efl_gfx_types.eot b/src/lib/efl/interfaces/efl_gfx_types.eot index 8f72bb6..cbfb04f 100644 --- a/src/lib/efl/interfaces/efl_gfx_types.eot +++ b/src/lib/efl/interfaces/efl_gfx_types.eot @@ -183,7 +183,7 @@ enum Efl.Gfx.Size.Hint.Aspect enum Efl.Image.Load.Error { - [[Image load error type]] + [[Image or Edje load error type]] none = 0, [[No error on load]] generic = 1, [[A non-specific error occurred]] does_not_exist = 2, [[File (or file path) does not exist]] @@ -191,7 +191,10 @@ enum Efl.Image.Load.Error resource_allocation_failed = 4, [[Allocation of resources failure prevented load]] corrupt_file = 5, [[File corrupt (but was detected as a known format)]] unknown_format = 6, [[File is not a known format]] - cancelled = 7 [[Reading operation has been cancelled during decoding]] + cancelled = 7, [[Reading operation has been cancelled during decoding]] + incompatible_file = 8, [[(Edje only) The file pointed to is incompatible, i.e., it doesn't match the library's current version's format.]] + unknown_collection = 9, [[(Edje only) The group/collection set to load from was not found in the file]] + recursive_reference = 10 [[(Edje only) The group/collection set to load from had recursive references on its components]] } enum Efl.Gfx.Size.Hint.Mode { diff --git a/src/lib/elementary/elm_layout.c b/src/lib/elementary/elm_layout.c index c11b6f3..d63b015 100644 --- a/src/lib/elementary/elm_layout.c +++ b/src/lib/elementary/elm_layout.c @@ -1898,13 +1898,13 @@ _elm_layout_efl_object_dbg_info_get(Eo *eo_obj, Elm_Layout_Smart_Data *_pd EINA_ Efl_Dbg_Info *group = EFL_DBG_INFO_LIST_APPEND(root, MY_CLASS_NAME); const char *file, *edje_group; Evas_Object *edje_obj = wd->resize_obj; + Edje_Load_Error error; efl_file_get(edje_obj, &file, &edje_group); EFL_DBG_INFO_APPEND(group, "File", EINA_VALUE_TYPE_STRING, file); EFL_DBG_INFO_APPEND(group, "Group", EINA_VALUE_TYPE_STRING, edje_group); - Edje_Load_Error error = EDJE_LOAD_ERROR_GENERIC; - error = edje_obj_load_error_get(edje_obj); + error = edje_object_load_error_get(edje_obj); if (error != EDJE_LOAD_ERROR_NONE) { EFL_DBG_INFO_APPEND(group, "Error", EINA_VALUE_TYPE_STRING, -- 2.7.4