summaryrefslogtreecommitdiff
path: root/src/lib/eolian
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/eolian')
-rw-r--r--src/lib/eolian/Eolian.h448
-rw-r--r--src/lib/eolian/Eolian_Aux.h45
-rw-r--r--src/lib/eolian/database_check.c20
-rw-r--r--src/lib/eolian/database_class_api.c38
-rw-r--r--src/lib/eolian/database_constructor_api.c6
-rw-r--r--src/lib/eolian/database_event_api.c16
-rw-r--r--src/lib/eolian/database_expr.c5
-rw-r--r--src/lib/eolian/database_expr_api.c45
-rw-r--r--src/lib/eolian/database_function_api.c36
-rw-r--r--src/lib/eolian/database_function_parameter_api.c16
-rw-r--r--src/lib/eolian/database_implement_api.c18
-rw-r--r--src/lib/eolian/database_part_api.c4
-rw-r--r--src/lib/eolian/database_type.c2
-rw-r--r--src/lib/eolian/database_type_api.c68
-rw-r--r--src/lib/eolian/database_validate.c22
-rw-r--r--src/lib/eolian/database_var_api.c8
-rw-r--r--src/lib/eolian/eo_lexer.c2
-rw-r--r--src/lib/eolian/eo_parser.c20
-rw-r--r--src/lib/eolian/eo_parser.h3
-rw-r--r--src/lib/eolian/eolian.c6
-rw-r--r--src/lib/eolian/eolian_api.h34
-rw-r--r--src/lib/eolian/eolian_aux.c12
-rw-r--r--src/lib/eolian/eolian_database.c132
-rw-r--r--src/lib/eolian/eolian_priv.h1
-rw-r--r--src/lib/eolian/meson.build3
25 files changed, 534 insertions, 476 deletions
diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h
index db0421634a..d6099a6433 100644
--- a/src/lib/eolian/Eolian.h
+++ b/src/lib/eolian/Eolian.h
@@ -1,31 +1,7 @@
#ifndef EOLIAN_H
#define EOLIAN_H
-#ifdef EAPI
-# undef EAPI
-#endif
-
-#ifdef _WIN32
-# ifdef EFL_BUILD
-# ifdef DLL_EXPORT
-# define EAPI __declspec(dllexport)
-# else
-# define EAPI
-# endif
-# else
-# define EAPI __declspec(dllimport)
-# endif
-#else
-# ifdef __GNUC__
-# if __GNUC__ >= 4
-# define EAPI __attribute__ ((visibility("default")))
-# else
-# define EAPI
-# endif
-# else
-# define EAPI
-# endif
-#endif
+#include "eolian_api.h"
#ifdef __cplusplus
extern "C" {
@@ -38,7 +14,7 @@ extern "C" {
*
* @date 2014 (created)
*
- * @section toc Table of Contents
+ * @section eolian_toc Table of Contents
*
* @li @ref eolian_main_intro
* @li @ref eolian_main_compiling
@@ -336,7 +312,12 @@ typedef enum
EOLIAN_TYPE_BUILTIN_ARRAY,
EOLIAN_TYPE_BUILTIN_FUTURE,
EOLIAN_TYPE_BUILTIN_ITERATOR,
+#ifdef EFL_BETA_API_SUPPORT
EOLIAN_TYPE_BUILTIN_LIST,
+#else
+ // Placeholder when using release API only. Done to prevent offsetting the value below.
+ EOLIAN_TYPE_BUILTIN_BETA_PLACEHOLDER1,
+#endif
EOLIAN_TYPE_BUILTIN_ANY_VALUE,
EOLIAN_TYPE_BUILTIN_ANY_VALUE_REF,
@@ -472,14 +453,14 @@ typedef struct _Eolian_Doc_Token
*
* @ingroup Eolian
*/
-EAPI int eolian_init(void);
+EOLIAN_API int eolian_init(void);
/*
* @brief Shutdown Eolian.
*
* @ingroup Eolian
*/
-EAPI int eolian_shutdown(void);
+EOLIAN_API int eolian_shutdown(void);
/*
* @brief Get the Eolian file format version.
@@ -488,7 +469,7 @@ EAPI int eolian_shutdown(void);
* retrieval of the version at runtime, so it can be used by FFI based
* bindings in dynamic languages to do runtime checks and so on.
*/
-EAPI unsigned short eolian_file_format_version_get(void);
+EOLIAN_API unsigned short eolian_file_format_version_get(void);
/*
* @brief Create a new Eolian state.
@@ -508,7 +489,7 @@ EAPI unsigned short eolian_file_format_version_get(void);
*
* @ingroup Eolian
*/
-EAPI Eolian_State *eolian_state_new(void);
+EOLIAN_API Eolian_State *eolian_state_new(void);
/*
* @brief Free an Eolian state.
@@ -520,7 +501,7 @@ EAPI Eolian_State *eolian_state_new(void);
* @param[in] state the state to free
*
*/
-EAPI void eolian_state_free(Eolian_State *state);
+EOLIAN_API void eolian_state_free(Eolian_State *state);
/*
* @brief Set the panic function for the state.
@@ -550,7 +531,7 @@ EAPI void eolian_state_free(Eolian_State *state);
*
* @see eolian_state_error_cb_set
*/
-EAPI Eolian_Panic_Cb eolian_state_panic_cb_set(Eolian_State *state, Eolian_Panic_Cb cb);
+EOLIAN_API Eolian_Panic_Cb eolian_state_panic_cb_set(Eolian_State *state, Eolian_Panic_Cb cb);
/*
* @brief Set the error function for the state.
@@ -567,7 +548,7 @@ EAPI Eolian_Panic_Cb eolian_state_panic_cb_set(Eolian_State *state, Eolian_Panic
* @see eolian_state_panic_cb_set
* @see eolian_state_error_data_set
*/
-EAPI Eolian_Error_Cb eolian_state_error_cb_set(Eolian_State *state, Eolian_Error_Cb cb);
+EOLIAN_API Eolian_Error_Cb eolian_state_error_cb_set(Eolian_State *state, Eolian_Error_Cb cb);
/*
* @brief Set a data pointer to be passed to the error function.
@@ -580,7 +561,7 @@ EAPI Eolian_Error_Cb eolian_state_error_cb_set(Eolian_State *state, Eolian_Error
*
* @see eolian_state_error_cb_set
*/
-EAPI void *eolian_state_error_data_set(Eolian_State *state, void *data);
+EOLIAN_API void *eolian_state_error_data_set(Eolian_State *state, void *data);
/*
* @brief Get the type of an Eolian object.
@@ -598,7 +579,7 @@ EAPI void *eolian_state_error_data_set(Eolian_State *state, void *data);
*
* @ingroup Eolian
*/
-EAPI Eolian_Object_Type eolian_object_type_get(const Eolian_Object *obj);
+EOLIAN_API Eolian_Object_Type eolian_object_type_get(const Eolian_Object *obj);
/*
* @brief Get the unit the object comes from.
@@ -614,7 +595,7 @@ EAPI Eolian_Object_Type eolian_object_type_get(const Eolian_Object *obj);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Unit *eolian_object_unit_get(const Eolian_Object *obj);
+EOLIAN_API const Eolian_Unit *eolian_object_unit_get(const Eolian_Object *obj);
/*
* @brief Get the name of the file the object comes from.
@@ -631,7 +612,7 @@ EAPI const Eolian_Unit *eolian_object_unit_get(const Eolian_Object *obj);
*
* @ingroup Eolian
*/
-EAPI const char *eolian_object_file_get(const Eolian_Object *obj);
+EOLIAN_API const char *eolian_object_file_get(const Eolian_Object *obj);
/*
* @brief Get the line the object was declared at.
@@ -647,7 +628,7 @@ EAPI const char *eolian_object_file_get(const Eolian_Object *obj);
*
* @ingroup Eolian
*/
-EAPI int eolian_object_line_get(const Eolian_Object *obj);
+EOLIAN_API int eolian_object_line_get(const Eolian_Object *obj);
/*
* @brief Get the column the object was declared at.
@@ -666,7 +647,7 @@ EAPI int eolian_object_line_get(const Eolian_Object *obj);
*
* @ingroup Eolian
*/
-EAPI int eolian_object_column_get(const Eolian_Object *obj);
+EOLIAN_API int eolian_object_column_get(const Eolian_Object *obj);
/*
* @brief Get the name of an object.
@@ -686,7 +667,7 @@ EAPI int eolian_object_column_get(const Eolian_Object *obj);
*
* @ingroup Eolian
*/
-EAPI const char *eolian_object_name_get(const Eolian_Object *obj);
+EOLIAN_API const char *eolian_object_name_get(const Eolian_Object *obj);
/*
* @brief Get the C name of an object.
@@ -708,7 +689,7 @@ EAPI const char *eolian_object_name_get(const Eolian_Object *obj);
*
* @ingroup Eolian
*/
-EAPI const char *eolian_object_c_name_get(const Eolian_Object *obj);
+EOLIAN_API const char *eolian_object_c_name_get(const Eolian_Object *obj);
/*
* @brief Get the short name of an object.
@@ -722,7 +703,7 @@ EAPI const char *eolian_object_c_name_get(const Eolian_Object *obj);
*
* @ingroup Eolian
*/
-EAPI const char *eolian_object_short_name_get(const Eolian_Object *obj);
+EOLIAN_API const char *eolian_object_short_name_get(const Eolian_Object *obj);
/*
* @brief Get a list of namespaces for the object.
@@ -736,7 +717,7 @@ EAPI const char *eolian_object_short_name_get(const Eolian_Object *obj);
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_object_namespaces_get(const Eolian_Object *obj);
+EOLIAN_API Eina_Iterator *eolian_object_namespaces_get(const Eolian_Object *obj);
/*
* @brief Get whether an object is beta.
@@ -749,7 +730,7 @@ EAPI Eina_Iterator *eolian_object_namespaces_get(const Eolian_Object *obj);
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_object_is_beta(const Eolian_Object *obj);
+EOLIAN_API Eina_Bool eolian_object_is_beta(const Eolian_Object *obj);
/*
* @brief Scan the given directory for .eo and .eot files.
@@ -766,7 +747,7 @@ EAPI Eina_Bool eolian_object_is_beta(const Eolian_Object *obj);
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_state_directory_add(Eolian_State *state, const char *dir);
+EOLIAN_API Eina_Bool eolian_state_directory_add(Eolian_State *state, const char *dir);
/*
* @brief Scan the system directory for .eo and .eot files.
@@ -783,7 +764,7 @@ EAPI Eina_Bool eolian_state_directory_add(Eolian_State *state, const char *dir);
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_state_system_directory_add(Eolian_State *state);
+EOLIAN_API Eina_Bool eolian_state_system_directory_add(Eolian_State *state);
/*
* @brief Get an iterator to all .eo file names with paths.
@@ -796,7 +777,7 @@ EAPI Eina_Bool eolian_state_system_directory_add(Eolian_State *state);
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_state_eo_file_paths_get(const Eolian_State *state);
+EOLIAN_API Eina_Iterator *eolian_state_eo_file_paths_get(const Eolian_State *state);
/*
* @brief Get an iterator to all .eot file names with paths.
@@ -809,7 +790,7 @@ EAPI Eina_Iterator *eolian_state_eo_file_paths_get(const Eolian_State *state);
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_state_eot_file_paths_get(const Eolian_State *state);
+EOLIAN_API Eina_Iterator *eolian_state_eot_file_paths_get(const Eolian_State *state);
/*
* @brief Get an iterator to all .eo file names (without paths).
@@ -822,7 +803,7 @@ EAPI Eina_Iterator *eolian_state_eot_file_paths_get(const Eolian_State *state);
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_state_eo_files_get(const Eolian_State *state);
+EOLIAN_API Eina_Iterator *eolian_state_eo_files_get(const Eolian_State *state);
/*
* @brief Get an iterator to all .eot file names (without paths).
@@ -835,7 +816,7 @@ EAPI Eina_Iterator *eolian_state_eo_files_get(const Eolian_State *state);
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_state_eot_files_get(const Eolian_State *state);
+EOLIAN_API Eina_Iterator *eolian_state_eot_files_get(const Eolian_State *state);
/*
* @brief Parse the given .eo or .eot file and fill the database.
@@ -852,7 +833,7 @@ EAPI Eina_Iterator *eolian_state_eot_files_get(const Eolian_State *state);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Unit *eolian_state_file_parse(Eolian_State *state, const char *filename);
+EOLIAN_API const Eolian_Unit *eolian_state_file_parse(Eolian_State *state, const char *filename);
/*
* @brief Parse the given .eo or .eot file and fill the database.
@@ -868,7 +849,7 @@ EAPI const Eolian_Unit *eolian_state_file_parse(Eolian_State *state, const char
*
* @ingroup Eolian
*/
-EAPI const Eolian_Unit *eolian_state_file_path_parse(Eolian_State *state, const char *filepath);
+EOLIAN_API const Eolian_Unit *eolian_state_file_path_parse(Eolian_State *state, const char *filepath);
/*
* @brief Parse all known eo files.
@@ -882,7 +863,7 @@ EAPI const Eolian_Unit *eolian_state_file_path_parse(Eolian_State *state, const
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_state_all_eo_files_parse(Eolian_State *state);
+EOLIAN_API Eina_Bool eolian_state_all_eo_files_parse(Eolian_State *state);
/*
* @brief Parse all known eot files.
@@ -896,12 +877,12 @@ EAPI Eina_Bool eolian_state_all_eo_files_parse(Eolian_State *state);
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_state_all_eot_files_parse(Eolian_State *state);
+EOLIAN_API Eina_Bool eolian_state_all_eot_files_parse(Eolian_State *state);
/*
* @brief Perform additional checks on the state.
*
- * This funciton performs additional checks that aren't crucial for the
+ * This function performs additional checks that aren't crucial for the
* database integrity (that's checked as a part of the regular parse process,
* so the database is guaranteed to be valid), but are important for proper
* correctness. It is recommended that all available .eot and .eo files are
@@ -913,7 +894,7 @@ EAPI Eina_Bool eolian_state_all_eot_files_parse(Eolian_State *state);
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_state_check(const Eolian_State *state);
+EOLIAN_API Eina_Bool eolian_state_check(const Eolian_State *state);
/*
* @brief Get an Eolian unit by file name.
@@ -931,7 +912,7 @@ EAPI Eina_Bool eolian_state_check(const Eolian_State *state);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Unit *eolian_state_unit_by_file_get(const Eolian_State *state, const char *file_name);
+EOLIAN_API const Eolian_Unit *eolian_state_unit_by_file_get(const Eolian_State *state, const char *file_name);
/*
* @brief Get an iterator to all Eolian units in a state.
@@ -942,7 +923,7 @@ EAPI const Eolian_Unit *eolian_state_unit_by_file_get(const Eolian_State *state,
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_state_units_get(const Eolian_State *state);
+EOLIAN_API Eina_Iterator *eolian_state_units_get(const Eolian_State *state);
/*
* @brief Get the state associated with the unit.
@@ -956,7 +937,7 @@ EAPI Eina_Iterator *eolian_state_units_get(const Eolian_State *state);
*
* @ingroup Eolian
*/
-EAPI const Eolian_State *eolian_unit_state_get(const Eolian_Unit *unit);
+EOLIAN_API const Eolian_State *eolian_unit_state_get(const Eolian_Unit *unit);
/*
* @brief Get the children (dependencies) of a unit.
@@ -967,7 +948,7 @@ EAPI const Eolian_State *eolian_unit_state_get(const Eolian_Unit *unit);
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_unit_children_get(const Eolian_Unit *unit);
+EOLIAN_API Eina_Iterator *eolian_unit_children_get(const Eolian_Unit *unit);
/*
* @brief Get the file name a unit is associated with.
@@ -981,7 +962,7 @@ EAPI Eina_Iterator *eolian_unit_children_get(const Eolian_Unit *unit);
*
* @ingroup Eolian
*/
-EAPI const char *eolian_unit_file_get(const Eolian_Unit *unit);
+EOLIAN_API const char *eolian_unit_file_get(const Eolian_Unit *unit);
/*
* @brief Get the full file path a unit is associated with.
@@ -995,7 +976,7 @@ EAPI const char *eolian_unit_file_get(const Eolian_Unit *unit);
*
* @ingroup Eolian
*/
-EAPI const char *eolian_unit_file_path_get(const Eolian_Unit *unit);
+EOLIAN_API const char *eolian_unit_file_path_get(const Eolian_Unit *unit);
/*
* @brief Get the version of the unit.
@@ -1007,7 +988,7 @@ EAPI const char *eolian_unit_file_path_get(const Eolian_Unit *unit);
*
* @ingroup Eolian
*/
-EAPI unsigned short eolian_unit_version_get(const Eolian_Unit *unit);
+EOLIAN_API unsigned short eolian_unit_version_get(const Eolian_Unit *unit);
/*
* @brief Get an object in a unit by name.
@@ -1020,7 +1001,7 @@ EAPI unsigned short eolian_unit_version_get(const Eolian_Unit *unit);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Object *eolian_unit_object_by_name_get(const Eolian_Unit *unit, const char *name);
+EOLIAN_API const Eolian_Object *eolian_unit_object_by_name_get(const Eolian_Unit *unit, const char *name);
/*
* @brief Get all objects in the unit.
@@ -1033,7 +1014,7 @@ EAPI const Eolian_Object *eolian_unit_object_by_name_get(const Eolian_Unit *unit
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_unit_objects_get(const Eolian_Unit *unit);
+EOLIAN_API Eina_Iterator *eolian_unit_objects_get(const Eolian_Unit *unit);
/*
* @brief Get a class within a unit by name.
@@ -1043,7 +1024,7 @@ EAPI Eina_Iterator *eolian_unit_objects_get(const Eolian_Unit *unit);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Class *eolian_unit_class_by_name_get(const Eolian_Unit *unit, const char *class_name);
+EOLIAN_API const Eolian_Class *eolian_unit_class_by_name_get(const Eolian_Unit *unit, const char *class_name);
/*
* @brief Get an iterator to all the classes stored into a unit.
@@ -1052,7 +1033,7 @@ EAPI const Eolian_Class *eolian_unit_class_by_name_get(const Eolian_Unit *unit,
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_unit_classes_get(const Eolian_Unit *unit);
+EOLIAN_API Eina_Iterator *eolian_unit_classes_get(const Eolian_Unit *unit);
/*
* @brief Get a constant in a unit by name.
@@ -1062,7 +1043,7 @@ EAPI Eina_Iterator *eolian_unit_classes_get(const Eolian_Unit *unit);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Constant *eolian_unit_constant_by_name_get(const Eolian_Unit *unit, const char *name);
+EOLIAN_API const Eolian_Constant *eolian_unit_constant_by_name_get(const Eolian_Unit *unit, const char *name);
/*
* @brief Get an error declaration in a unit by name.
@@ -1072,7 +1053,7 @@ EAPI const Eolian_Constant *eolian_unit_constant_by_name_get(const Eolian_Unit *
*
* @ingroup Eolian
*/
-EAPI const Eolian_Error *eolian_unit_error_by_name_get(const Eolian_Unit *unit, const char *name);
+EOLIAN_API const Eolian_Error *eolian_unit_error_by_name_get(const Eolian_Unit *unit, const char *name);
/*
* @brief Get an iterator to all constants in the Eolian database.
@@ -1083,7 +1064,7 @@ EAPI const Eolian_Error *eolian_unit_error_by_name_get(const Eolian_Unit *unit,
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_unit_constants_get(const Eolian_Unit *unit);
+EOLIAN_API Eina_Iterator *eolian_unit_constants_get(const Eolian_Unit *unit);
/*
* @brief Get an iterator to all error declarations in the Eolian database.
@@ -1094,7 +1075,7 @@ EAPI Eina_Iterator *eolian_unit_constants_get(const Eolian_Unit *unit);
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_unit_errors_get(const Eolian_Unit *unit);
+EOLIAN_API Eina_Iterator *eolian_unit_errors_get(const Eolian_Unit *unit);
/*
* @brief Get an alias type declaration within a unit by name.
@@ -1104,7 +1085,7 @@ EAPI Eina_Iterator *eolian_unit_errors_get(const Eolian_Unit *unit);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Typedecl *eolian_unit_alias_by_name_get(const Eolian_Unit *unit, const char *name);
+EOLIAN_API const Eolian_Typedecl *eolian_unit_alias_by_name_get(const Eolian_Unit *unit, const char *name);
/*
* @brief Get a struct declaration within a unit by name.
@@ -1114,7 +1095,7 @@ EAPI const Eolian_Typedecl *eolian_unit_alias_by_name_get(const Eolian_Unit *uni
*
* @ingroup Eolian
*/
-EAPI const Eolian_Typedecl *eolian_unit_struct_by_name_get(const Eolian_Unit *unit, const char *name);
+EOLIAN_API const Eolian_Typedecl *eolian_unit_struct_by_name_get(const Eolian_Unit *unit, const char *name);
/*
* @brief Get an enum declaration within a unit by name.
@@ -1124,7 +1105,7 @@ EAPI const Eolian_Typedecl *eolian_unit_struct_by_name_get(const Eolian_Unit *un
*
* @ingroup Eolian
*/
-EAPI const Eolian_Typedecl *eolian_unit_enum_by_name_get(const Eolian_Unit *unit, const char *name);
+EOLIAN_API const Eolian_Typedecl *eolian_unit_enum_by_name_get(const Eolian_Unit *unit, const char *name);
/*
* @brief Get an iterator to all aliases in the Eolian database.
@@ -1135,7 +1116,7 @@ EAPI const Eolian_Typedecl *eolian_unit_enum_by_name_get(const Eolian_Unit *unit
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_unit_aliases_get(const Eolian_Unit *unit);
+EOLIAN_API Eina_Iterator *eolian_unit_aliases_get(const Eolian_Unit *unit);
/*
* @brief Get an iterator to all structs in the Eolian database.
@@ -1146,7 +1127,7 @@ EAPI Eina_Iterator *eolian_unit_aliases_get(const Eolian_Unit *unit);
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_unit_structs_get(const Eolian_Unit *unit);
+EOLIAN_API Eina_Iterator *eolian_unit_structs_get(const Eolian_Unit *unit);
/*
* @brief Get an iterator to all enums in the Eolian database.
@@ -1157,7 +1138,7 @@ EAPI Eina_Iterator *eolian_unit_structs_get(const Eolian_Unit *unit);
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_unit_enums_get(const Eolian_Unit *unit);
+EOLIAN_API Eina_Iterator *eolian_unit_enums_get(const Eolian_Unit *unit);
/*
* @brief A helper function to get an object in a state by name.
@@ -1184,7 +1165,7 @@ eolian_state_object_by_name_get(const Eolian_State *state, const char *name)
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_state_objects_by_file_get(const Eolian_State *state, const char *file_name);
+EOLIAN_API Eina_Iterator *eolian_state_objects_by_file_get(const Eolian_State *state, const char *file_name);
/*
* @brief A helper function to get all objects in a state.
@@ -1220,7 +1201,7 @@ eolian_state_class_by_name_get(const Eolian_State *state, const char *class_name
*
* @ingroup Eolian
*/
-EAPI const Eolian_Class *eolian_state_class_by_file_get(const Eolian_State *state, const char *file_name);
+EOLIAN_API const Eolian_Class *eolian_state_class_by_file_get(const Eolian_State *state, const char *file_name);
/*
* @brief A helper function to get all classes in a state.
@@ -1272,7 +1253,7 @@ eolian_state_error_by_name_get(const Eolian_State *state, const char *name)
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_state_constants_by_file_get(const Eolian_State *state, const char *file_name);
+EOLIAN_API Eina_Iterator *eolian_state_constants_by_file_get(const Eolian_State *state, const char *file_name);
/*
* @brief Get an iterator to all error declarations contained in a file.
@@ -1285,7 +1266,7 @@ EAPI Eina_Iterator *eolian_state_constants_by_file_get(const Eolian_State *state
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_state_errors_by_file_get(const Eolian_State *state, const char *file_name);
+EOLIAN_API Eina_Iterator *eolian_state_errors_by_file_get(const Eolian_State *state, const char *file_name);
/*
* @brief A helper function to get all constants in a state.
@@ -1362,7 +1343,7 @@ eolian_state_enum_by_name_get(const Eolian_State *state, const char *name)
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_state_aliases_by_file_get(const Eolian_State *state, const char *file_name);
+EOLIAN_API Eina_Iterator *eolian_state_aliases_by_file_get(const Eolian_State *state, const char *file_name);
/*
* @brief Get an iterator to all named structs contained in a file.
@@ -1374,7 +1355,7 @@ EAPI Eina_Iterator *eolian_state_aliases_by_file_get(const Eolian_State *state,
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_state_structs_by_file_get(const Eolian_State *state, const char *file_name);
+EOLIAN_API Eina_Iterator *eolian_state_structs_by_file_get(const Eolian_State *state, const char *file_name);
/*
* @brief Get an iterator to all enums contained in a file.
@@ -1386,7 +1367,7 @@ EAPI Eina_Iterator *eolian_state_structs_by_file_get(const Eolian_State *state,
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_state_enums_by_file_get(const Eolian_State *state, const char *file_name);
+EOLIAN_API Eina_Iterator *eolian_state_enums_by_file_get(const Eolian_State *state, const char *file_name);
/*
* @brief A helper function to get all aliases in a state.
@@ -1487,7 +1468,7 @@ eolian_class_namespaces_get(const Eolian_Class *klass)
*
* @ingroup Eolian
*/
-EAPI Eolian_Class_Type eolian_class_type_get(const Eolian_Class *klass);
+EOLIAN_API Eolian_Class_Type eolian_class_type_get(const Eolian_Class *klass);
/*
* @brief Returns the documentation of a class.
@@ -1497,7 +1478,7 @@ EAPI Eolian_Class_Type eolian_class_type_get(const Eolian_Class *klass);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Documentation *eolian_class_documentation_get(const Eolian_Class *klass);
+EOLIAN_API const Eolian_Documentation *eolian_class_documentation_get(const Eolian_Class *klass);
/*
* @brief Returns the C function prefix of a class
@@ -1507,7 +1488,7 @@ EAPI const Eolian_Documentation *eolian_class_documentation_get(const Eolian_Cla
*
* @ingroup Eolian
*/
-EAPI const char *eolian_class_c_prefix_get(const Eolian_Class *klass);
+EOLIAN_API const char *eolian_class_c_prefix_get(const Eolian_Class *klass);
/*
* @brief Returns the C event prefix of a class
@@ -1517,7 +1498,7 @@ EAPI const char *eolian_class_c_prefix_get(const Eolian_Class *klass);
*
* @ingroup Eolian
*/
-EAPI const char *eolian_class_event_c_prefix_get(const Eolian_Class *klass);
+EOLIAN_API const char *eolian_class_event_c_prefix_get(const Eolian_Class *klass);
/*
* @brief Returns the data type of a class
@@ -1527,7 +1508,7 @@ EAPI const char *eolian_class_event_c_prefix_get(const Eolian_Class *klass);
*
* @ingroup Eolian
*/
-EAPI const char *eolian_class_data_type_get(const Eolian_Class *klass);
+EOLIAN_API const char *eolian_class_data_type_get(const Eolian_Class *klass);
/*
* @brief Get the parent class of a class
@@ -1543,12 +1524,12 @@ EAPI const char *eolian_class_data_type_get(const Eolian_Class *klass);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Class *eolian_class_parent_get(const Eolian_Class *klass);
+EOLIAN_API const Eolian_Class *eolian_class_parent_get(const Eolian_Class *klass);
/*
* @brief Returns an iterator to the required classes of this mixin
*
- * For none mixins this will return an empty iterator, for mixins this retuns a iterator that
+ * For none mixins this will return an empty iterator, for mixins this returns a iterator that
* carries all the classes that are required by this passed mixin.
*
* @param[in] klass the class
@@ -1556,7 +1537,7 @@ EAPI const Eolian_Class *eolian_class_parent_get(const Eolian_Class *klass);
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_class_requires_get(const Eolian_Class *klass);
+EOLIAN_API Eina_Iterator *eolian_class_requires_get(const Eolian_Class *klass);
/*
* @brief Returns an iterator to the class extensions
@@ -1572,7 +1553,7 @@ EAPI Eina_Iterator *eolian_class_requires_get(const Eolian_Class *klass);
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_class_extensions_get(const Eolian_Class *klass);
+EOLIAN_API Eina_Iterator *eolian_class_extensions_get(const Eolian_Class *klass);
/*
* @brief Returns an iterator to functions of a class.
@@ -1585,7 +1566,7 @@ EAPI Eina_Iterator *eolian_class_extensions_get(const Eolian_Class *klass);
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_class_functions_get(const Eolian_Class *klass, Eolian_Function_Type func_type);
+EOLIAN_API Eina_Iterator *eolian_class_functions_get(const Eolian_Class *klass, Eolian_Function_Type func_type);
/*
* @brief Returns the type of a function
@@ -1595,7 +1576,7 @@ EAPI Eina_Iterator *eolian_class_functions_get(const Eolian_Class *klass, Eolian
*
* @ingroup Eolian
*/
-EAPI Eolian_Function_Type eolian_function_type_get(const Eolian_Function *function_id);
+EOLIAN_API Eolian_Function_Type eolian_function_type_get(const Eolian_Function *function_id);
/*
* @brief Returns the scope of a function
@@ -1608,7 +1589,7 @@ EAPI Eolian_Function_Type eolian_function_type_get(const Eolian_Function *functi
*
* @ingroup Eolian
*/
-EAPI Eolian_Object_Scope eolian_function_scope_get(const Eolian_Function *function_id, Eolian_Function_Type ftype);
+EOLIAN_API Eolian_Object_Scope eolian_function_scope_get(const Eolian_Function *function_id, Eolian_Function_Type ftype);
/*
* @brief A helper function to get the name of a function.
@@ -1641,7 +1622,7 @@ eolian_function_name_get(const Eolian_Function *fid)
*
* @ingroup Eolian
*/
-EAPI Eina_Stringshare *eolian_function_full_c_name_get(const Eolian_Function *function_id, Eolian_Function_Type ftype);
+EOLIAN_API Eina_Stringshare *eolian_function_full_c_name_get(const Eolian_Function *function_id, Eolian_Function_Type ftype);
/*
* @brief Get a function in a class by its name and type
@@ -1657,7 +1638,7 @@ EAPI Eina_Stringshare *eolian_function_full_c_name_get(const Eolian_Function *fu
*
* @ingroup Eolian
*/
-EAPI const Eolian_Function *eolian_class_function_by_name_get(const Eolian_Class *klass, const char *func_name, Eolian_Function_Type f_type);
+EOLIAN_API const Eolian_Function *eolian_class_function_by_name_get(const Eolian_Class *klass, const char *func_name, Eolian_Function_Type f_type);
/*
* @brief Returns the implement for a function.
@@ -1667,7 +1648,7 @@ EAPI const Eolian_Function *eolian_class_function_by_name_get(const Eolian_Class
*
* @ingroup Eolian
*/
-EAPI const Eolian_Implement *eolian_function_implement_get(const Eolian_Function *function_id);
+EOLIAN_API const Eolian_Implement *eolian_function_implement_get(const Eolian_Function *function_id);
/*
* @brief Get whether a function is a static method/property.
@@ -1677,7 +1658,7 @@ EAPI const Eolian_Implement *eolian_function_implement_get(const Eolian_Function
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_function_is_static(const Eolian_Function *function_id);
+EOLIAN_API Eina_Bool eolian_function_is_static(const Eolian_Function *function_id);
/*
* @brief Get whether a function is beta.
@@ -1701,7 +1682,7 @@ eolian_function_is_beta(const Eolian_Function *function_id)
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_function_is_constructor(const Eolian_Function *function_id, const Eolian_Class *klass);
+EOLIAN_API Eina_Bool eolian_function_is_constructor(const Eolian_Function *function_id, const Eolian_Class *klass);
/*
* @brief Returns an iterator to the parameter handles for a method/ctor/dtor.
@@ -1711,7 +1692,7 @@ EAPI Eina_Bool eolian_function_is_constructor(const Eolian_Function *function_id
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_function_parameters_get(const Eolian_Function *function_id);
+EOLIAN_API Eina_Iterator *eolian_function_parameters_get(const Eolian_Function *function_id);
/*
* @brief Returns an iterator to the keys params of a given function.
@@ -1724,7 +1705,7 @@ EAPI Eina_Iterator *eolian_function_parameters_get(const Eolian_Function *functi
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_property_keys_get(const Eolian_Function *foo_id, Eolian_Function_Type ftype);
+EOLIAN_API Eina_Iterator *eolian_property_keys_get(const Eolian_Function *foo_id, Eolian_Function_Type ftype);
/*
* @brief Returns an iterator to the values params of a given function.
@@ -1737,7 +1718,7 @@ EAPI Eina_Iterator *eolian_property_keys_get(const Eolian_Function *foo_id, Eoli
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_property_values_get(const Eolian_Function *foo_id, Eolian_Function_Type ftype);
+EOLIAN_API Eina_Iterator *eolian_property_values_get(const Eolian_Function *foo_id, Eolian_Function_Type ftype);
/*
* @brief Get direction of a parameter
@@ -1747,7 +1728,7 @@ EAPI Eina_Iterator *eolian_property_values_get(const Eolian_Function *foo_id, Eo
*
* @ingroup Eolian
*/
-EAPI Eolian_Parameter_Direction eolian_parameter_direction_get(const Eolian_Function_Parameter *param);
+EOLIAN_API Eolian_Parameter_Direction eolian_parameter_direction_get(const Eolian_Function_Parameter *param);
/*
* @brief Get type of a parameter
@@ -1757,7 +1738,7 @@ EAPI Eolian_Parameter_Direction eolian_parameter_direction_get(const Eolian_Func
*
* @ingroup Eolian
*/
-EAPI const Eolian_Type *eolian_parameter_type_get(const Eolian_Function_Parameter *param);
+EOLIAN_API const Eolian_Type *eolian_parameter_type_get(const Eolian_Function_Parameter *param);
/*
* @brief Get the default value of a parameter
@@ -1767,7 +1748,7 @@ EAPI const Eolian_Type *eolian_parameter_type_get(const Eolian_Function_Paramete
*
* @ingroup Eolian
*/
-EAPI const Eolian_Expression *eolian_parameter_default_value_get(const Eolian_Function_Parameter *param);
+EOLIAN_API const Eolian_Expression *eolian_parameter_default_value_get(const Eolian_Function_Parameter *param);
/*
* @brief A helper function to get the name of a function parameter.
@@ -1790,7 +1771,7 @@ eolian_parameter_name_get(const Eolian_Function_Parameter *param)
*
* @ingroup Eolian
*/
-EAPI const Eolian_Documentation *eolian_parameter_documentation_get(const Eolian_Function_Parameter *param);
+EOLIAN_API const Eolian_Documentation *eolian_parameter_documentation_get(const Eolian_Function_Parameter *param);
/*
* @brief Indicates if a parameter is optional.
@@ -1800,7 +1781,7 @@ EAPI const Eolian_Documentation *eolian_parameter_documentation_get(const Eolian
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_parameter_is_optional(const Eolian_Function_Parameter *param_desc);
+EOLIAN_API Eina_Bool eolian_parameter_is_optional(const Eolian_Function_Parameter *param_desc);
/*
* @brief Get whether a parameter is by reference.
@@ -1810,7 +1791,7 @@ EAPI Eina_Bool eolian_parameter_is_optional(const Eolian_Function_Parameter *par
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_parameter_is_by_ref(const Eolian_Function_Parameter *param_desc);
+EOLIAN_API Eina_Bool eolian_parameter_is_by_ref(const Eolian_Function_Parameter *param_desc);
/*
* @brief Get whether a parameter is moved into the callee.
@@ -1820,7 +1801,7 @@ EAPI Eina_Bool eolian_parameter_is_by_ref(const Eolian_Function_Parameter *param
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_parameter_is_move(const Eolian_Function_Parameter *param_desc);
+EOLIAN_API Eina_Bool eolian_parameter_is_move(const Eolian_Function_Parameter *param_desc);
/*
* @brief Get the full C type name of the given parameter.
@@ -1837,7 +1818,7 @@ EAPI Eina_Bool eolian_parameter_is_move(const Eolian_Function_Parameter *param_d
*
* @ingroup Eolian
*/
-EAPI Eina_Stringshare *eolian_parameter_c_type_get(const Eolian_Function_Parameter *param_desc, Eina_Bool as_return);
+EOLIAN_API Eina_Stringshare *eolian_parameter_c_type_get(const Eolian_Function_Parameter *param_desc, Eina_Bool as_return);
/*
* @brief Get the return type of a function.
@@ -1853,7 +1834,7 @@ EAPI Eina_Stringshare *eolian_parameter_c_type_get(const Eolian_Function_Paramet
*
* @ingroup Eolian
*/
-EAPI const Eolian_Type *eolian_function_return_type_get(const Eolian_Function *function_id, Eolian_Function_Type ftype);
+EOLIAN_API const Eolian_Type *eolian_function_return_type_get(const Eolian_Function *function_id, Eolian_Function_Type ftype);
/*
* @brief Get the return default value of a function.
@@ -1870,7 +1851,7 @@ EAPI const Eolian_Type *eolian_function_return_type_get(const Eolian_Function *f
*
* @ingroup Eolian
*/
-EAPI const Eolian_Expression *
+EOLIAN_API const Eolian_Expression *
eolian_function_return_default_value_get(const Eolian_Function *foo_id, Eolian_Function_Type ftype);
/*
@@ -1887,7 +1868,7 @@ eolian_function_return_default_value_get(const Eolian_Function *foo_id, Eolian_F
*
* @ingroup Eolian
*/
-EAPI const Eolian_Documentation *eolian_function_return_documentation_get(const Eolian_Function *foo_id, Eolian_Function_Type ftype);
+EOLIAN_API const Eolian_Documentation *eolian_function_return_documentation_get(const Eolian_Function *foo_id, Eolian_Function_Type ftype);
/*
* @brief Indicates if a function return should allow being unused.
@@ -1903,7 +1884,7 @@ EAPI const Eolian_Documentation *eolian_function_return_documentation_get(const
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_function_return_allow_unused(const Eolian_Function *foo_id, Eolian_Function_Type ftype);
+EOLIAN_API Eina_Bool eolian_function_return_allow_unused(const Eolian_Function *foo_id, Eolian_Function_Type ftype);
/*
* @brief Get whether a parameter is by reference.
@@ -1919,7 +1900,7 @@ EAPI Eina_Bool eolian_function_return_allow_unused(const Eolian_Function *foo_id
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_function_return_is_by_ref(const Eolian_Function *foo_id, Eolian_Function_Type ftype);
+EOLIAN_API Eina_Bool eolian_function_return_is_by_ref(const Eolian_Function *foo_id, Eolian_Function_Type ftype);
/*
* @brief Get whether a parameter is moved into the callee.
@@ -1935,7 +1916,7 @@ EAPI Eina_Bool eolian_function_return_is_by_ref(const Eolian_Function *foo_id, E
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_function_return_is_move(const Eolian_Function *foo_id, Eolian_Function_Type ftype);
+EOLIAN_API Eina_Bool eolian_function_return_is_move(const Eolian_Function *foo_id, Eolian_Function_Type ftype);
/*
* @brief Get the full C type name of the return value.
@@ -1950,7 +1931,7 @@ EAPI Eina_Bool eolian_function_return_is_move(const Eolian_Function *foo_id, Eol
*
* @ingroup Eolian
*/
-EAPI Eina_Stringshare *eolian_function_return_c_type_get(const Eolian_Function *foo_id, Eolian_Function_Type ftype);
+EOLIAN_API Eina_Stringshare *eolian_function_return_c_type_get(const Eolian_Function *foo_id, Eolian_Function_Type ftype);
/*
* @brief Indicates if a function object is const.
@@ -1960,7 +1941,7 @@ EAPI Eina_Stringshare *eolian_function_return_c_type_get(const Eolian_Function *
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_function_object_is_const(const Eolian_Function *function_id);
+EOLIAN_API Eina_Bool eolian_function_object_is_const(const Eolian_Function *function_id);
/*
* @brief Return the Eolian class associated to the function.
@@ -1970,7 +1951,7 @@ EAPI Eina_Bool eolian_function_object_is_const(const Eolian_Function *function_i
*
* @ingroup Eolian
*/
-EAPI const Eolian_Class *eolian_function_class_get(const Eolian_Function *function_id);
+EOLIAN_API const Eolian_Class *eolian_function_class_get(const Eolian_Function *function_id);
/*
* @brief A helper function to get the full name of an implement.
@@ -1999,7 +1980,7 @@ eolian_implement_name_get(const Eolian_Implement *impl)
*
* @ingroup Eolian
*/
-EAPI const Eolian_Class *eolian_implement_class_get(const Eolian_Implement *impl);
+EOLIAN_API const Eolian_Class *eolian_implement_class_get(const Eolian_Implement *impl);
/*
* @brief Get the implementing class of an overriding function (implement).
@@ -2015,7 +1996,7 @@ EAPI const Eolian_Class *eolian_implement_class_get(const Eolian_Implement *impl
*
* @ingroup Eolian
*/
-EAPI const Eolian_Class *eolian_implement_implementing_class_get(const Eolian_Implement *impl);
+EOLIAN_API const Eolian_Class *eolian_implement_implementing_class_get(const Eolian_Implement *impl);
/*
* @brief Get the function of an implement.
@@ -2026,7 +2007,7 @@ EAPI const Eolian_Class *eolian_implement_implementing_class_get(const Eolian_Im
*
* @ingroup Eolian
*/
-EAPI const Eolian_Function *eolian_implement_function_get(const Eolian_Implement *impl, Eolian_Function_Type *func_type);
+EOLIAN_API const Eolian_Function *eolian_implement_function_get(const Eolian_Implement *impl, Eolian_Function_Type *func_type);
/*
* @brief Returns a documentation for an implement.
@@ -2039,7 +2020,7 @@ EAPI const Eolian_Function *eolian_implement_function_get(const Eolian_Implement
*
* @ingroup Eolian
*/
-EAPI const Eolian_Documentation *eolian_implement_documentation_get(const Eolian_Implement *impl, Eolian_Function_Type f_type);
+EOLIAN_API const Eolian_Documentation *eolian_implement_documentation_get(const Eolian_Implement *impl, Eolian_Function_Type f_type);
/*
* @brief Get whether an implement is tagged with @auto.
@@ -2052,7 +2033,7 @@ EAPI const Eolian_Documentation *eolian_implement_documentation_get(const Eolian
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_implement_is_auto(const Eolian_Implement *impl, Eolian_Function_Type f_type);
+EOLIAN_API Eina_Bool eolian_implement_is_auto(const Eolian_Implement *impl, Eolian_Function_Type f_type);
/*
* @brief Get whether an implement is tagged with @empty.
@@ -2065,7 +2046,7 @@ EAPI Eina_Bool eolian_implement_is_auto(const Eolian_Implement *impl, Eolian_Fun
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_implement_is_empty(const Eolian_Implement *impl, Eolian_Function_Type f_type);
+EOLIAN_API Eina_Bool eolian_implement_is_empty(const Eolian_Implement *impl, Eolian_Function_Type f_type);
/*
* @brief Get whether an implement is pure virtual.
@@ -2078,7 +2059,7 @@ EAPI Eina_Bool eolian_implement_is_empty(const Eolian_Implement *impl, Eolian_Fu
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_implement_is_pure_virtual(const Eolian_Implement *impl, Eolian_Function_Type f_type);
+EOLIAN_API Eina_Bool eolian_implement_is_pure_virtual(const Eolian_Implement *impl, Eolian_Function_Type f_type);
/*
* @brief Get whether an implement references a property getter.
@@ -2088,7 +2069,7 @@ EAPI Eina_Bool eolian_implement_is_pure_virtual(const Eolian_Implement *impl, Eo
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_implement_is_prop_get(const Eolian_Implement *impl);
+EOLIAN_API Eina_Bool eolian_implement_is_prop_get(const Eolian_Implement *impl);
/*
* @brief Get whether an implement references a property setter.
@@ -2098,7 +2079,7 @@ EAPI Eina_Bool eolian_implement_is_prop_get(const Eolian_Implement *impl);
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_implement_is_prop_set(const Eolian_Implement *impl);
+EOLIAN_API Eina_Bool eolian_implement_is_prop_set(const Eolian_Implement *impl);
/*
* @brief Get an iterator to implements of a class.
@@ -2113,7 +2094,7 @@ EAPI Eina_Bool eolian_implement_is_prop_set(const Eolian_Implement *impl);
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_class_implements_get(const Eolian_Class *klass);
+EOLIAN_API Eina_Iterator *eolian_class_implements_get(const Eolian_Class *klass);
/*
* @brief A helper function to get the full name of a constructor.
@@ -2136,7 +2117,7 @@ eolian_constructor_name_get(const Eolian_Constructor *ctor)
*
* @ingroup Eolian
*/
-EAPI const Eolian_Class *eolian_constructor_class_get(const Eolian_Constructor *ctor);
+EOLIAN_API const Eolian_Class *eolian_constructor_class_get(const Eolian_Constructor *ctor);
/*
* @brief Get the function of a constructing function.
@@ -2146,7 +2127,7 @@ EAPI const Eolian_Class *eolian_constructor_class_get(const Eolian_Constructor *
*
* @ingroup Eolian
*/
-EAPI const Eolian_Function *eolian_constructor_function_get(const Eolian_Constructor *ctor);
+EOLIAN_API const Eolian_Function *eolian_constructor_function_get(const Eolian_Constructor *ctor);
/*
* @brief Checks if a constructor is tagged optional.
@@ -2156,7 +2137,7 @@ EAPI const Eolian_Function *eolian_constructor_function_get(const Eolian_Constru
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_constructor_is_optional(const Eolian_Constructor *ctor);
+EOLIAN_API Eina_Bool eolian_constructor_is_optional(const Eolian_Constructor *ctor);
/*
* @brief Get an iterator to the constructing functions defined in a class.
@@ -2166,7 +2147,7 @@ EAPI Eina_Bool eolian_constructor_is_optional(const Eolian_Constructor *ctor);
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_class_constructors_get(const Eolian_Class *klass);
+EOLIAN_API Eina_Iterator *eolian_class_constructors_get(const Eolian_Class *klass);
/*
* @brief Get an iterator to the events defined in a class.
@@ -2176,7 +2157,7 @@ EAPI Eina_Iterator *eolian_class_constructors_get(const Eolian_Class *klass);
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_class_events_get(const Eolian_Class *klass);
+EOLIAN_API Eina_Iterator *eolian_class_events_get(const Eolian_Class *klass);
/*
* @brief A helper function to get the name of an event.
@@ -2199,7 +2180,7 @@ eolian_event_name_get(const Eolian_Event *event)
*
* @ingroup Eolian
*/
-EAPI const Eolian_Type *eolian_event_type_get(const Eolian_Event *event);
+EOLIAN_API const Eolian_Type *eolian_event_type_get(const Eolian_Event *event);
/*
* @brief Get the class of an event.
@@ -2209,7 +2190,7 @@ EAPI const Eolian_Type *eolian_event_type_get(const Eolian_Event *event);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Class *eolian_event_class_get(const Eolian_Event *event);
+EOLIAN_API const Eolian_Class *eolian_event_class_get(const Eolian_Event *event);
/*
* @brief Get the documentation of an event.
@@ -2219,7 +2200,7 @@ EAPI const Eolian_Class *eolian_event_class_get(const Eolian_Event *event);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Documentation *eolian_event_documentation_get(const Eolian_Event *event);
+EOLIAN_API const Eolian_Documentation *eolian_event_documentation_get(const Eolian_Event *event);
/*
* @brief Returns the scope of an event
@@ -2229,7 +2210,7 @@ EAPI const Eolian_Documentation *eolian_event_documentation_get(const Eolian_Eve
*
* @ingroup Eolian
*/
-EAPI Eolian_Object_Scope eolian_event_scope_get(const Eolian_Event *event);
+EOLIAN_API Eolian_Object_Scope eolian_event_scope_get(const Eolian_Event *event);
/*
* @brief Get whether an event is beta.
@@ -2252,7 +2233,7 @@ eolian_event_is_beta(const Eolian_Event *event)
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_event_is_hot(const Eolian_Event *event);
+EOLIAN_API Eina_Bool eolian_event_is_hot(const Eolian_Event *event);
/*
* @brief Get whether an event is a restartable event.
@@ -2266,7 +2247,7 @@ EAPI Eina_Bool eolian_event_is_hot(const Eolian_Event *event);
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_event_is_restart(const Eolian_Event *event);
+EOLIAN_API Eina_Bool eolian_event_is_restart(const Eolian_Event *event);
/*
* @brief Get an iterator to the parts defined in a class.
@@ -2276,7 +2257,7 @@ EAPI Eina_Bool eolian_event_is_restart(const Eolian_Event *event);
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_class_parts_get(const Eolian_Class *klass);
+EOLIAN_API Eina_Iterator *eolian_class_parts_get(const Eolian_Class *klass);
/*
* @brief Returns the C macro name used to refer to an event
@@ -2288,7 +2269,7 @@ EAPI Eina_Iterator *eolian_class_parts_get(const Eolian_Class *klass);
*
* @ingroup Eolian
*/
-EAPI Eina_Stringshare *eolian_event_c_macro_get(const Eolian_Event *event);
+EOLIAN_API Eina_Stringshare *eolian_event_c_macro_get(const Eolian_Event *event);
/*
* @brief A helper function to get the name of a part.
@@ -2311,7 +2292,7 @@ eolian_part_name_get(const Eolian_Part *part)
*
* @ingroup Eolian
*/
-EAPI const Eolian_Class *eolian_part_class_get(const Eolian_Part *part);
+EOLIAN_API const Eolian_Class *eolian_part_class_get(const Eolian_Part *part);
/*
* @brief Get the documentation of an part.
@@ -2321,7 +2302,7 @@ EAPI const Eolian_Class *eolian_part_class_get(const Eolian_Part *part);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Documentation *eolian_part_documentation_get(const Eolian_Part *part);
+EOLIAN_API const Eolian_Documentation *eolian_part_documentation_get(const Eolian_Part *part);
/*
* @brief Get whether a part is beta.
@@ -2345,7 +2326,7 @@ eolian_part_is_beta(const Eolian_Part *part)
*
* @ingroup Eolian
*/
-EAPI const Eolian_Event *eolian_class_event_by_name_get(const Eolian_Class *klass, const char *event_name);
+EOLIAN_API const Eolian_Event *eolian_class_event_by_name_get(const Eolian_Class *klass, const char *event_name);
/*
* @brief Indicates if the class constructor has to invoke
@@ -2356,7 +2337,7 @@ EAPI const Eolian_Event *eolian_class_event_by_name_get(const Eolian_Class *klas
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_class_ctor_enable_get(const Eolian_Class *klass);
+EOLIAN_API Eina_Bool eolian_class_ctor_enable_get(const Eolian_Class *klass);
/*
* @brief Indicates if the class destructor has to invoke
@@ -2367,7 +2348,7 @@ EAPI Eina_Bool eolian_class_ctor_enable_get(const Eolian_Class *klass);
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_class_dtor_enable_get(const Eolian_Class *klass);
+EOLIAN_API Eina_Bool eolian_class_dtor_enable_get(const Eolian_Class *klass);
/*
* @brief Returns the name of the C function used to get the Efl_Class pointer.
@@ -2381,7 +2362,7 @@ EAPI Eina_Bool eolian_class_dtor_enable_get(const Eolian_Class *klass);
*
* @ingroup Eolian
*/
-EAPI Eina_Stringshare *eolian_class_c_get_function_name_get(const Eolian_Class *klass);
+EOLIAN_API Eina_Stringshare *eolian_class_c_get_function_name_get(const Eolian_Class *klass);
/*
* @brief Get the C macro of the class.
@@ -2397,7 +2378,7 @@ EAPI Eina_Stringshare *eolian_class_c_get_function_name_get(const Eolian_Class *
*
* @ingroup Eolian
*/
-EAPI Eina_Stringshare *eolian_class_c_macro_get(const Eolian_Class *klass);
+EOLIAN_API Eina_Stringshare *eolian_class_c_macro_get(const Eolian_Class *klass);
/*
* @brief Get the C data type of the class.
@@ -2415,7 +2396,7 @@ EAPI Eina_Stringshare *eolian_class_c_macro_get(const Eolian_Class *klass);
*
* @ingroup Eolian
*/
-EAPI Eina_Stringshare *eolian_class_c_data_type_get(const Eolian_Class *klass);
+EOLIAN_API Eina_Stringshare *eolian_class_c_data_type_get(const Eolian_Class *klass);
/*
* @brief Get whether a class is beta.
@@ -2438,7 +2419,7 @@ eolian_class_is_beta(const Eolian_Class *klass)
*
* @ingroup Eolian
*/
-EAPI Eolian_Typedecl_Type eolian_typedecl_type_get(const Eolian_Typedecl *tp);
+EOLIAN_API Eolian_Typedecl_Type eolian_typedecl_type_get(const Eolian_Typedecl *tp);
/*
* @brief Get an iterator to all fields of a struct type.
@@ -2448,7 +2429,7 @@ EAPI Eolian_Typedecl_Type eolian_typedecl_type_get(const Eolian_Typedecl *tp);
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_typedecl_struct_fields_get(const Eolian_Typedecl *tp);
+EOLIAN_API Eina_Iterator *eolian_typedecl_struct_fields_get(const Eolian_Typedecl *tp);
/*
* @brief Get a field of a struct type.
@@ -2460,7 +2441,7 @@ EAPI Eina_Iterator *eolian_typedecl_struct_fields_get(const Eolian_Typedecl *tp)
*
* @ingroup Eolian
*/
-EAPI const Eolian_Struct_Type_Field *eolian_typedecl_struct_field_get(const Eolian_Typedecl *tp, const char *field);
+EOLIAN_API const Eolian_Struct_Type_Field *eolian_typedecl_struct_field_get(const Eolian_Typedecl *tp, const char *field);
/*
* @brief A helper function to get the name of a struct field.
@@ -2483,7 +2464,7 @@ eolian_typedecl_struct_field_name_get(const Eolian_Struct_Type_Field *field)
*
* @ingroup Eolian
*/
-EAPI const Eolian_Documentation *eolian_typedecl_struct_field_documentation_get(const Eolian_Struct_Type_Field *fl);
+EOLIAN_API const Eolian_Documentation *eolian_typedecl_struct_field_documentation_get(const Eolian_Struct_Type_Field *fl);
/*
* @brief Get the type of a field of a struct type.
@@ -2493,7 +2474,7 @@ EAPI const Eolian_Documentation *eolian_typedecl_struct_field_documentation_get(
*
* @ingroup Eolian
*/
-EAPI const Eolian_Type *eolian_typedecl_struct_field_type_get(const Eolian_Struct_Type_Field *fl);
+EOLIAN_API const Eolian_Type *eolian_typedecl_struct_field_type_get(const Eolian_Struct_Type_Field *fl);
/*
* @brief Get whether a struct field is by reference.
@@ -2503,7 +2484,7 @@ EAPI const Eolian_Type *eolian_typedecl_struct_field_type_get(const Eolian_Struc
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_typedecl_struct_field_is_by_ref(const Eolian_Struct_Type_Field *fl);
+EOLIAN_API Eina_Bool eolian_typedecl_struct_field_is_by_ref(const Eolian_Struct_Type_Field *fl);
/*
* @brief Get whether a struct field is moved with the struct.
@@ -2513,7 +2494,7 @@ EAPI Eina_Bool eolian_typedecl_struct_field_is_by_ref(const Eolian_Struct_Type_F
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_typedecl_struct_field_is_move(const Eolian_Struct_Type_Field *fl);
+EOLIAN_API Eina_Bool eolian_typedecl_struct_field_is_move(const Eolian_Struct_Type_Field *fl);
/*
* @brief Get the full C type name of the struct field.
@@ -2527,7 +2508,7 @@ EAPI Eina_Bool eolian_typedecl_struct_field_is_move(const Eolian_Struct_Type_Fie
*
* @ingroup Eolian
*/
-EAPI Eina_Stringshare *eolian_typedecl_struct_field_c_type_get(const Eolian_Struct_Type_Field *fl);
+EOLIAN_API Eina_Stringshare *eolian_typedecl_struct_field_c_type_get(const Eolian_Struct_Type_Field *fl);
/*
* @brief Get an iterator to all fields of an enum type.
@@ -2537,7 +2518,7 @@ EAPI Eina_Stringshare *eolian_typedecl_struct_field_c_type_get(const Eolian_Stru
*
* @ingroup Eolian
*/
-EAPI Eina_Iterator *eolian_typedecl_enum_fields_get(const Eolian_Typedecl *tp);
+EOLIAN_API Eina_Iterator *eolian_typedecl_enum_fields_get(const Eolian_Typedecl *tp);
/*
* @brief Get a field of an enum type.
@@ -2552,7 +2533,7 @@ EAPI Eina_Iterator *eolian_typedecl_enum_fields_get(const Eolian_Typedecl *tp);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Enum_Type_Field *eolian_typedecl_enum_field_get(const Eolian_Typedecl *tp, const char *field);
+EOLIAN_API const Eolian_Enum_Type_Field *eolian_typedecl_enum_field_get(const Eolian_Typedecl *tp, const char *field);
/*
* @brief A helper function to get the name of an enum field.
@@ -2577,7 +2558,7 @@ eolian_typedecl_enum_field_name_get(const Eolian_Enum_Type_Field *field)
*
* @ingroup Eolian
*/
-EAPI Eina_Stringshare *eolian_typedecl_enum_field_c_constant_get(const Eolian_Enum_Type_Field *fl);
+EOLIAN_API Eina_Stringshare *eolian_typedecl_enum_field_c_constant_get(const Eolian_Enum_Type_Field *fl);
/*
* @brief Get the documentation of a field of an enum type.
@@ -2587,7 +2568,7 @@ EAPI Eina_Stringshare *eolian_typedecl_enum_field_c_constant_get(const Eolian_En
*
* @ingroup Eolian
*/
-EAPI const Eolian_Documentation *eolian_typedecl_enum_field_documentation_get(const Eolian_Enum_Type_Field *fl);
+EOLIAN_API const Eolian_Documentation *eolian_typedecl_enum_field_documentation_get(const Eolian_Enum_Type_Field *fl);
/*
* @brief Get the value of a field of an enum type.
@@ -2602,7 +2583,7 @@ EAPI const Eolian_Documentation *eolian_typedecl_enum_field_documentation_get(co
*
* @ingroup Eolian
*/
-EAPI const Eolian_Expression *eolian_typedecl_enum_field_value_get(const Eolian_Enum_Type_Field *fl, Eina_Bool force);
+EOLIAN_API const Eolian_Expression *eolian_typedecl_enum_field_value_get(const Eolian_Enum_Type_Field *fl, Eina_Bool force);
/*
* @brief Get the documentation of a struct/alias type.
@@ -2613,7 +2594,7 @@ EAPI const Eolian_Expression *eolian_typedecl_enum_field_value_get(const Eolian_
*
* @ingroup Eolian
*/
-EAPI const Eolian_Documentation *eolian_typedecl_documentation_get(const Eolian_Typedecl *tp);
+EOLIAN_API const Eolian_Documentation *eolian_typedecl_documentation_get(const Eolian_Typedecl *tp);
/*
* @brief Get the base type of an alias declaration.
@@ -2623,7 +2604,7 @@ EAPI const Eolian_Documentation *eolian_typedecl_documentation_get(const Eolian_
*
* @ingroup Eolian
*/
-EAPI const Eolian_Type *eolian_typedecl_base_type_get(const Eolian_Typedecl *tp);
+EOLIAN_API const Eolian_Type *eolian_typedecl_base_type_get(const Eolian_Typedecl *tp);
/*
* @brief Get the lowest base type of an alias stack.
@@ -2636,7 +2617,7 @@ EAPI const Eolian_Type *eolian_typedecl_base_type_get(const Eolian_Typedecl *tp)
*
* @ingroup Eolian
*/
-EAPI const Eolian_Type *eolian_typedecl_aliased_base_get(const Eolian_Typedecl *tp);
+EOLIAN_API const Eolian_Type *eolian_typedecl_aliased_base_get(const Eolian_Typedecl *tp);
/*
* @brief Check if a struct or alias type declaration is extern.
@@ -2646,7 +2627,7 @@ EAPI const Eolian_Type *eolian_typedecl_aliased_base_get(const Eolian_Typedecl *
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_typedecl_is_extern(const Eolian_Typedecl *tp);
+EOLIAN_API Eina_Bool eolian_typedecl_is_extern(const Eolian_Typedecl *tp);
/*
* @brief Get whether a typedecl is beta.
@@ -2673,7 +2654,7 @@ eolian_typedecl_is_beta(const Eolian_Typedecl *tp)
*
* @ingroup Eolian
*/
-EAPI Eina_Stringshare *eolian_typedecl_c_type_get(const Eolian_Typedecl *tp);
+EOLIAN_API Eina_Stringshare *eolian_typedecl_c_type_get(const Eolian_Typedecl *tp);
/*
* @brief A helper function to get the full name of a typedecl.
@@ -2735,7 +2716,7 @@ eolian_typedecl_namespaces_get(const Eolian_Typedecl *tp)
*
* @ingroup Eolian
*/
-EAPI const char *eolian_typedecl_free_func_get(const Eolian_Typedecl *tp);
+EOLIAN_API const char *eolian_typedecl_free_func_get(const Eolian_Typedecl *tp);
/*
* @brief Get the function object for this function pointer type.
@@ -2745,7 +2726,7 @@ EAPI const char *eolian_typedecl_free_func_get(const Eolian_Typedecl *tp);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Function *eolian_typedecl_function_pointer_get(const Eolian_Typedecl *tp);
+EOLIAN_API const Eolian_Function *eolian_typedecl_function_pointer_get(const Eolian_Typedecl *tp);
/*
* @brief Get the type of a type.
@@ -2755,7 +2736,7 @@ EAPI const Eolian_Function *eolian_typedecl_function_pointer_get(const Eolian_Ty
*
* @ingroup Eolian
*/
-EAPI Eolian_Type_Type eolian_type_type_get(const Eolian_Type *tp);
+EOLIAN_API Eolian_Type_Type eolian_type_type_get(const Eolian_Type *tp);
/*
* @brief Get the builtin type of a type.
@@ -2768,7 +2749,7 @@ EAPI Eolian_Type_Type eolian_type_type_get(const Eolian_Type *tp);
*
* @ingroup Eolian
*/
-EAPI Eolian_Type_Builtin_Type eolian_type_builtin_type_get(const Eolian_Type *tp);
+EOLIAN_API Eolian_Type_Builtin_Type eolian_type_builtin_type_get(const Eolian_Type *tp);
/*
* @brief Get the base type of a type.
@@ -2781,7 +2762,7 @@ EAPI Eolian_Type_Builtin_Type eolian_type_builtin_type_get(const Eolian_Type *tp
*
* @ingroup Eolian
*/
-EAPI const Eolian_Type *eolian_type_base_type_get(const Eolian_Type *tp);
+EOLIAN_API const Eolian_Type *eolian_type_base_type_get(const Eolian_Type *tp);
/*
* @brief Get the next inner type of a complex type.
@@ -2796,7 +2777,7 @@ EAPI const Eolian_Type *eolian_type_base_type_get(const Eolian_Type *tp);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Type *eolian_type_next_type_get(const Eolian_Type *tp);
+EOLIAN_API const Eolian_Type *eolian_type_next_type_get(const Eolian_Type *tp);
/*
* @brief Get the declaration a regular type points to.
@@ -2808,7 +2789,7 @@ EAPI const Eolian_Type *eolian_type_next_type_get(const Eolian_Type *tp);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Typedecl *eolian_type_typedecl_get(const Eolian_Type *tp);
+EOLIAN_API const Eolian_Typedecl *eolian_type_typedecl_get(const Eolian_Type *tp);
/*
* @brief Get the lowest base type of an alias stack.
@@ -2825,7 +2806,7 @@ EAPI const Eolian_Typedecl *eolian_type_typedecl_get(const Eolian_Type *tp);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Type *eolian_type_aliased_base_get(const Eolian_Type *tp);
+EOLIAN_API const Eolian_Type *eolian_type_aliased_base_get(const Eolian_Type *tp);
/*
* @brief Get the class associated with an EOLIAN_TYPE_CLASS type.
@@ -2835,7 +2816,7 @@ EAPI const Eolian_Type *eolian_type_aliased_base_get(const Eolian_Type *tp);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Class *eolian_type_class_get(const Eolian_Type *tp);
+EOLIAN_API const Eolian_Class *eolian_type_class_get(const Eolian_Type *tp);
/*
* @brief Get the error declaration associated with an EOLIAN_TYPE_ERROR type.
@@ -2845,22 +2826,22 @@ EAPI const Eolian_Class *eolian_type_class_get(const Eolian_Type *tp);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Error *eolian_type_error_get(const Eolian_Type *tp);
+EOLIAN_API const Eolian_Error *eolian_type_error_get(const Eolian_Type *tp);
/*
* @brief Get whether the given type is moved with its parent type.
*
- * This is only used for inner types of complex types, i.e. the types
- * inside the brackets of lists, arrays, hashes and so on. You can use
- * this to tell whether they belong to their parent type (i.e. whether
- * they are marked @move).
+ * This is only used for inner types of owning containers, i.e. arrays,
+ * lists, hashes and futures. View containers (accessors and iterators)
+ * are not allowed to own their contents (the Eolian syntax will not let
+ * you use the <tt>@move</tt> tag there).
*
* @param[in] tp the type.
* @return EINA_TRUE when the type is marked move, EINA_FALSE otherwise.
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_type_is_move(const Eolian_Type *tp);
+EOLIAN_API Eina_Bool eolian_type_is_move(const Eolian_Type *tp);
/*
* @brief Get whether the given type is const.
@@ -2870,7 +2851,7 @@ EAPI Eina_Bool eolian_type_is_move(const Eolian_Type *tp);
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_type_is_const(const Eolian_Type *tp);
+EOLIAN_API Eina_Bool eolian_type_is_const(const Eolian_Type *tp);
/*
* @brief Get the full C type name of the given type.
@@ -2884,7 +2865,7 @@ EAPI Eina_Bool eolian_type_is_const(const Eolian_Type *tp);
*
* @ingroup Eolian
*/
-EAPI Eina_Stringshare *eolian_type_c_type_get(const Eolian_Type *tp);
+EOLIAN_API Eina_Stringshare *eolian_type_c_type_get(const Eolian_Type *tp);
/*
* @brief A helper function to get the full name of a type.
@@ -2950,7 +2931,25 @@ eolian_type_namespaces_get(const Eolian_Type *tp)
*
* @ingroup Eolian
*/
-EAPI Eolian_Value eolian_expression_eval(const Eolian_Expression *expr, Eolian_Expression_Mask m);
+EOLIAN_API Eolian_Value eolian_expression_eval(const Eolian_Expression *expr, Eolian_Expression_Mask m);
+
+/*
+ * @brief Evaluate an Eolian expression into an out-param.
+ *
+ * @param[in] expr the expression.
+ * @param[in] mask the mask of allowed values (can combine with bitwise OR).
+ * @param[out] the value to fill
+ * @return EINA_TRUE on success, EINA_FALSE on failure
+ *
+ * This is like eolian_expression_eval, except it writes into an out-param
+ * and returns whether it succeeded or failed. On failure, no write is
+ * guaranteed.
+ *
+ * @since 1.25
+ *
+ * @ingroup Eolian
+ */
+EOLIAN_API Eina_Bool eolian_expression_eval_fill(const Eolian_Expression *expr, Eolian_Expression_Mask m, Eolian_Value *val);
/*
* @brief Convert the result of expression evaluation to a literal as in how
@@ -2968,7 +2967,7 @@ EAPI Eolian_Value eolian_expression_eval(const Eolian_Expression *expr, Eolian_E
*
* @ingroup Eolian
*/
-EAPI Eina_Stringshare *eolian_expression_value_to_literal(const Eolian_Value *v);
+EOLIAN_API Eina_Stringshare *eolian_expression_value_to_literal(const Eolian_Value *v);
/*
* @brief Serialize an expression.
@@ -2984,7 +2983,7 @@ EAPI Eina_Stringshare *eolian_expression_value_to_literal(const Eolian_Value *v)
*
* @ingroup Eolian
*/
-EAPI Eina_Stringshare *eolian_expression_serialize(const Eolian_Expression *expr);
+EOLIAN_API Eina_Stringshare *eolian_expression_serialize(const Eolian_Expression *expr);
/*
* @brief Get the type of an expression.
@@ -2994,7 +2993,7 @@ EAPI Eina_Stringshare *eolian_expression_serialize(const Eolian_Expression *expr
*
* @ingroup Eolian
*/
-EAPI Eolian_Expression_Type eolian_expression_type_get(const Eolian_Expression *expr);
+EOLIAN_API Eolian_Expression_Type eolian_expression_type_get(const Eolian_Expression *expr);
/*
* @brief Get the binary operator of an expression.
@@ -3007,7 +3006,7 @@ EAPI Eolian_Expression_Type eolian_expression_type_get(const Eolian_Expression *
*
* @ingroup Eolian
*/
-EAPI Eolian_Binary_Operator eolian_expression_binary_operator_get(const Eolian_Expression *expr);
+EOLIAN_API Eolian_Binary_Operator eolian_expression_binary_operator_get(const Eolian_Expression *expr);
/*
* @brief Get the lhs (left hand side) of a binary expression.
@@ -3019,7 +3018,7 @@ EAPI Eolian_Binary_Operator eolian_expression_binary_operator_get(const Eolian_E
*
* @ingroup Eolian
*/
-EAPI const Eolian_Expression *eolian_expression_binary_lhs_get(const Eolian_Expression *expr);
+EOLIAN_API const Eolian_Expression *eolian_expression_binary_lhs_get(const Eolian_Expression *expr);
/*
* @brief Get the rhs (right hand side) of a binary expression.
@@ -3031,7 +3030,7 @@ EAPI const Eolian_Expression *eolian_expression_binary_lhs_get(const Eolian_Expr
*
* @ingroup Eolian
*/
-EAPI const Eolian_Expression *eolian_expression_binary_rhs_get(const Eolian_Expression *expr);
+EOLIAN_API const Eolian_Expression *eolian_expression_binary_rhs_get(const Eolian_Expression *expr);
/*
* @brief Get the unary operator of an expression.
@@ -3044,7 +3043,7 @@ EAPI const Eolian_Expression *eolian_expression_binary_rhs_get(const Eolian_Expr
*
* @ingroup Eolian
*/
-EAPI Eolian_Unary_Operator eolian_expression_unary_operator_get(const Eolian_Expression *expr);
+EOLIAN_API Eolian_Unary_Operator eolian_expression_unary_operator_get(const Eolian_Expression *expr);
/*
* @brief Get the expression of an unary expression.
@@ -3056,7 +3055,7 @@ EAPI Eolian_Unary_Operator eolian_expression_unary_operator_get(const Eolian_Exp
*
* @ingroup Eolian
*/
-EAPI const Eolian_Expression *eolian_expression_unary_expression_get(const Eolian_Expression *expr);
+EOLIAN_API const Eolian_Expression *eolian_expression_unary_expression_get(const Eolian_Expression *expr);
/*
* @brief Get the value of an expression.
@@ -3072,7 +3071,23 @@ EAPI const Eolian_Expression *eolian_expression_unary_expression_get(const Eolia
*
* @ingroup Eolian
*/
-EAPI Eolian_Value eolian_expression_value_get(const Eolian_Expression *expr);
+EOLIAN_API Eolian_Value eolian_expression_value_get(const Eolian_Expression *expr);
+
+/*
+ * @brief Get the value of an expression into an out-param.
+ *
+ * @param[in] expr the expression.
+ * @param[out] val the value to fill.
+ * @return EINA_TRUE on success, EINA_FALSE on failure
+ *
+ * This is like eolian_expression_value_get, but it fills an out-param. On
+ * failure, nothing is guaranteed to be filled.
+ *
+ * @since 1.25
+ *
+ * @ingroup Eolian
+ */
+EOLIAN_API Eina_Bool eolian_expression_value_get_fill(const Eolian_Expression *expr, Eolian_Value *val);
/*
* @brief Get the documentation of a constant.
@@ -3082,7 +3097,7 @@ EAPI Eolian_Value eolian_expression_value_get(const Eolian_Expression *expr);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Documentation *eolian_constant_documentation_get(const Eolian_Constant *var);
+EOLIAN_API const Eolian_Documentation *eolian_constant_documentation_get(const Eolian_Constant *var);
/*
* @brief Get the base type of a constant.
@@ -3092,7 +3107,7 @@ EAPI const Eolian_Documentation *eolian_constant_documentation_get(const Eolian_
*
* @ingroup Eolian
*/
-EAPI const Eolian_Type *eolian_constant_type_get(const Eolian_Constant *var);
+EOLIAN_API const Eolian_Type *eolian_constant_type_get(const Eolian_Constant *var);
/*
* @brief Get the value of a constant.
@@ -3102,7 +3117,7 @@ EAPI const Eolian_Type *eolian_constant_type_get(const Eolian_Constant *var);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Expression *eolian_constant_value_get(const Eolian_Constant *var);
+EOLIAN_API const Eolian_Expression *eolian_constant_value_get(const Eolian_Constant *var);
/*
* @brief A helper function to get the full name of a constant.
@@ -3164,7 +3179,7 @@ eolian_constant_namespaces_get(const Eolian_Constant *tp)
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_constant_is_extern(const Eolian_Constant *var);
+EOLIAN_API Eina_Bool eolian_constant_is_extern(const Eolian_Constant *var);
/*
* @brief Get whether a constant is beta.
@@ -3187,7 +3202,7 @@ eolian_constant_is_beta(const Eolian_Constant *var)
*
* @ingroup Eolian
*/
-EAPI const char *eolian_error_message_get(const Eolian_Error *err);
+EOLIAN_API const char *eolian_error_message_get(const Eolian_Error *err);
/*
* @brief Get the documentation of an error declaration.
@@ -3197,7 +3212,7 @@ EAPI const char *eolian_error_message_get(const Eolian_Error *err);
*
* @ingroup Eolian
*/
-EAPI const Eolian_Documentation *eolian_error_documentation_get(const Eolian_Error *err);
+EOLIAN_API const Eolian_Documentation *eolian_error_documentation_get(const Eolian_Error *err);
/*
* @brief A helper function to get the full name of an error declaration.
@@ -3272,7 +3287,7 @@ eolian_error_is_beta(const Eolian_Error *err)
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_error_is_extern(const Eolian_Error *err);
+EOLIAN_API Eina_Bool eolian_error_is_extern(const Eolian_Error *err);
/*
* @brief Get the summary of the documentation.
@@ -3284,7 +3299,7 @@ EAPI Eina_Bool eolian_error_is_extern(const Eolian_Error *err);
*
* @ingroup Eolian
*/
-EAPI const char *eolian_documentation_summary_get(const Eolian_Documentation *doc);
+EOLIAN_API const char *eolian_documentation_summary_get(const Eolian_Documentation *doc);
/*
* @brief Get the description of the documentation.
@@ -3297,7 +3312,7 @@ EAPI const char *eolian_documentation_summary_get(const Eolian_Documentation *do
*
* @ingroup Eolian
*/
-EAPI const char *eolian_documentation_description_get(const Eolian_Documentation *doc);
+EOLIAN_API const char *eolian_documentation_description_get(const Eolian_Documentation *doc);
/*
* @brief Get the "since" tag of the documentation.
@@ -3310,7 +3325,7 @@ EAPI const char *eolian_documentation_description_get(const Eolian_Documentation
*
* @ingroup Eolian
*/
-EAPI const char *eolian_documentation_since_get(const Eolian_Documentation *doc);
+EOLIAN_API const char *eolian_documentation_since_get(const Eolian_Documentation *doc);
/*
* @brief Split a documentation string into individual paragraphs.
@@ -3322,7 +3337,7 @@ EAPI const char *eolian_documentation_since_get(const Eolian_Documentation *doc)
*
* @ingroup Eolian
*/
-EAPI Eina_List *eolian_documentation_string_split(const char *doc);
+EOLIAN_API Eina_List *eolian_documentation_string_split(const char *doc);
/*
* @brief Tokenize a documentation paragraph.
@@ -3347,7 +3362,7 @@ EAPI Eina_List *eolian_documentation_string_split(const char *doc);
*
* @ingroup Eolian
*/
-EAPI const char *eolian_documentation_tokenize(const char *doc, Eolian_Doc_Token *ret);
+EOLIAN_API const char *eolian_documentation_tokenize(const char *doc, Eolian_Doc_Token *ret);
/*
* @brief Initialize a documentation token into an empty state.
@@ -3355,7 +3370,7 @@ EAPI const char *eolian_documentation_tokenize(const char *doc, Eolian_Doc_Token
* @param[in] tok the token
* @return the token type
*/
-EAPI void eolian_doc_token_init(Eolian_Doc_Token *tok);
+EOLIAN_API void eolian_doc_token_init(Eolian_Doc_Token *tok);
/*
* @brief Get the type of a documentation token.
@@ -3363,7 +3378,7 @@ EAPI void eolian_doc_token_init(Eolian_Doc_Token *tok);
* @param[in] tok the token
* @return the token type
*/
-EAPI Eolian_Doc_Token_Type eolian_doc_token_type_get(const Eolian_Doc_Token *tok);
+EOLIAN_API Eolian_Doc_Token_Type eolian_doc_token_type_get(const Eolian_Doc_Token *tok);
/*
* @brief Get the text of a documentation token.
@@ -3376,7 +3391,7 @@ EAPI Eolian_Doc_Token_Type eolian_doc_token_type_get(const Eolian_Doc_Token *tok
* @param[in] tok the token
* @return the token text
*/
-EAPI char *eolian_doc_token_text_get(const Eolian_Doc_Token *tok);
+EOLIAN_API char *eolian_doc_token_text_get(const Eolian_Doc_Token *tok);
/*
* @brief Get the thing that a reference token references.
@@ -3396,7 +3411,7 @@ EAPI char *eolian_doc_token_text_get(const Eolian_Doc_Token *tok);
* @param[out] data2 the secondary data
* @return the kind of reference this is
*/
-EAPI Eolian_Object_Type eolian_doc_token_ref_resolve(const Eolian_Doc_Token *tok, const Eolian_State *state, const Eolian_Object **data, const Eolian_Object **data2);
+EOLIAN_API Eolian_Object_Type eolian_doc_token_ref_resolve(const Eolian_Doc_Token *tok, const Eolian_State *state, const Eolian_Object **data, const Eolian_Object **data2);
#ifdef EFL_BETA_API_SUPPORT
@@ -3409,7 +3424,7 @@ EAPI Eolian_Object_Type eolian_doc_token_ref_resolve(const Eolian_Doc_Token *tok
*
* @ingroup Eolian
*/
-EAPI const char *eolian_typedecl_enum_legacy_prefix_get(const Eolian_Typedecl *tp);
+EOLIAN_API const char *eolian_typedecl_enum_legacy_prefix_get(const Eolian_Typedecl *tp);
/*
* @brief Get whether the given type is a reference.
@@ -3419,7 +3434,7 @@ EAPI const char *eolian_typedecl_enum_legacy_prefix_get(const Eolian_Typedecl *t
*
* @ingroup Eolian
*/
-EAPI Eina_Bool eolian_type_is_ptr(const Eolian_Type *tp);
+EOLIAN_API Eina_Bool eolian_type_is_ptr(const Eolian_Type *tp);
#endif /* EFL_BETA_API_SUPPORT */
@@ -3431,7 +3446,4 @@ EAPI Eina_Bool eolian_type_is_ptr(const Eolian_Type *tp);
} // extern "C" {
#endif
-#undef EAPI
-#define EAPI
-
#endif
diff --git a/src/lib/eolian/Eolian_Aux.h b/src/lib/eolian/Eolian_Aux.h
index 3c025ccd6a..ea83d39814 100644
--- a/src/lib/eolian/Eolian_Aux.h
+++ b/src/lib/eolian/Eolian_Aux.h
@@ -3,32 +3,6 @@
#include <Eolian.h>
-#ifdef EAPI
-# undef EAPI
-#endif
-
-#ifdef _WIN32
-# ifdef EFL_BUILD
-# ifdef DLL_EXPORT
-# define EAPI __declspec(dllexport)
-# else
-# define EAPI
-# endif
-# else
-# define EAPI __declspec(dllimport)
-# endif
-#else
-# ifdef __GNUC__
-# if __GNUC__ >= 4
-# define EAPI __attribute__ ((visibility("default")))
-# else
-# define EAPI
-# endif
-# else
-# define EAPI
-# endif
-#endif
-
#ifdef __cplusplus
extern "C" {
#endif
@@ -38,11 +12,11 @@ extern "C" {
*
* @date 2018 (created)
*
- * @section toc Table of Contents
+ * @section eolian_aux_toc Table of Contents
*
* @li @ref eolian_aux_main_intro
*
- * @section eolian_main_intro Introduction
+ * @section eolian_aux_main_intro Introduction
*
* This is the Eolian auxiliary library, providing API to support generators
* and other utilities which do not fit into the primary Eolian library. All
@@ -73,7 +47,7 @@ extern "C" {
*
* @ingroup Eolian
*/
-EAPI Eina_Hash *eolian_aux_state_class_children_find(const Eolian_State *state);
+EOLIAN_API Eina_Hash *eolian_aux_state_class_children_find(const Eolian_State *state);
/**
* @brief Get all APIs that are usable on the class.
@@ -100,7 +74,7 @@ EAPI Eina_Hash *eolian_aux_state_class_children_find(const Eolian_State *state);
*
* @ingroup Eolian
*/
-EAPI size_t eolian_aux_class_callables_get(const Eolian_Class *klass, Eina_List **funcs, Eina_List **events, size_t *ownfuncs, size_t *ownevs);
+EOLIAN_API size_t eolian_aux_class_callables_get(const Eolian_Class *klass, Eina_List **funcs, Eina_List **events, size_t *ownfuncs, size_t *ownevs);
/**
* @brief Get all implementations of a function in a state.
@@ -117,7 +91,7 @@ EAPI size_t eolian_aux_class_callables_get(const Eolian_Class *klass, Eina_List
*
* @ingroup Eolian
*/
-EAPI Eina_List *eolian_aux_function_all_implements_get(const Eolian_Function *func, Eina_Hash *class_children);
+EOLIAN_API Eina_List *eolian_aux_function_all_implements_get(const Eolian_Function *func, Eina_Hash *class_children);
/**
* @brief Get previous implementation in the inheritance hierarchy.
@@ -131,7 +105,7 @@ EAPI Eina_List *eolian_aux_function_all_implements_get(const Eolian_Function *fu
*
* @ingroup Eolian
*/
-EAPI const Eolian_Implement *eolian_aux_implement_parent_get(const Eolian_Implement *impl);
+EOLIAN_API const Eolian_Implement *eolian_aux_implement_parent_get(const Eolian_Implement *impl);
/**
* @brief Get documentation for an implementation.
@@ -147,7 +121,7 @@ EAPI const Eolian_Implement *eolian_aux_implement_parent_get(const Eolian_Implem
*
* @ingroup Eolian
*/
-EAPI const Eolian_Documentation *eolian_aux_implement_documentation_get(const Eolian_Implement *impl, Eolian_Function_Type ftype);
+EOLIAN_API const Eolian_Documentation *eolian_aux_implement_documentation_get(const Eolian_Implement *impl, Eolian_Function_Type ftype);
/**
* @brief Get documentation fallback for an implementation.
@@ -162,7 +136,7 @@ EAPI const Eolian_Documentation *eolian_aux_implement_documentation_get(const Eo
*
* @ingroup Eolian
*/
-EAPI const Eolian_Documentation *eolian_aux_implement_documentation_fallback_get(const Eolian_Implement *impl);
+EOLIAN_API const Eolian_Documentation *eolian_aux_implement_documentation_fallback_get(const Eolian_Implement *impl);
#endif
@@ -174,7 +148,4 @@ EAPI const Eolian_Documentation *eolian_aux_implement_documentation_fallback_get
} // extern "C" {
#endif
-#undef EAPI
-#define EAPI
-
#endif
diff --git a/src/lib/eolian/database_check.c b/src/lib/eolian/database_check.c
index 0626512076..96ea24d984 100644
--- a/src/lib/eolian/database_check.c
+++ b/src/lib/eolian/database_check.c
@@ -130,6 +130,11 @@ _check_class(const Eolian_Class *cl, Eina_Hash *depset, Eina_Hash *chash)
_add_dep(depset, icl->base.unit);
eina_iterator_free(itr);
+ itr = eina_list_iterator_new(cl->composite);
+ EINA_ITERATOR_FOREACH(itr, icl)
+ _add_dep(depset, icl->base.unit);
+ eina_iterator_free(itr);
+
const Eolian_Function *fid;
itr = eina_list_iterator_new(cl->properties);
EINA_ITERATOR_FOREACH(itr, fid)
@@ -207,10 +212,9 @@ _check_constant(const Eolian_Constant *v, Eina_Hash *depset, Eina_Hash *chash)
_check_expr(v->value, depset);
}
-static Eina_Bool
+static void
_check_unit(const Eolian_Unit *unit)
{
- Eina_Bool ret = EINA_TRUE;
Eina_Hash *depset = eina_hash_pointer_new(NULL);
/* collect all real dependencies of the unit */
@@ -248,13 +252,11 @@ _check_unit(const Eolian_Unit *unit)
{
eolian_state_log(unit->state, "%s: unused dependency %s",
unit->file, cunit->file);
- ret = EINA_FALSE;
}
}
eina_iterator_free(citr);
eina_hash_free(depset);
- return ret;
}
static Eina_Bool
@@ -263,6 +265,9 @@ _check_namespaces(const Eolian_Unit *src)
Eina_Bool ret = EINA_TRUE;
Eina_Iterator *itr = eina_hash_iterator_data_new(src->objects);
const Eolian_Object *obj;
+
+ Eina_Bool check_beta = !!getenv("EOLIAN_CHECK_NAMESPACES_BETA");
+
EINA_ITERATOR_FOREACH(itr, obj)
{
char const *dot = strrchr(obj->name, '.');
@@ -272,7 +277,7 @@ _check_namespaces(const Eolian_Unit *src)
dot - obj->name);
const Eolian_Object *cobj = eina_hash_find(src->objects, ssr);
eina_stringshare_del(ssr);
- if (cobj)
+ if (cobj && (check_beta || !eolian_object_is_beta(cobj)))
{
eolian_state_log_obj(src->state, obj,
"the namespace of object '%s' conflicts with %s:%d:%d",
@@ -293,10 +298,7 @@ database_check(const Eolian_State *state)
Eina_Iterator *itr = eolian_state_units_get(state);
const Eolian_Unit *unit;
EINA_ITERATOR_FOREACH(itr, unit)
- {
- if (!_check_unit(unit))
- ret = EINA_FALSE;
- }
+ _check_unit(unit);
eina_iterator_free(itr);
/* namespace checks */
diff --git a/src/lib/eolian/database_class_api.c b/src/lib/eolian/database_class_api.c
index 971c0bacb1..2860eaf49c 100644
--- a/src/lib/eolian/database_class_api.c
+++ b/src/lib/eolian/database_class_api.c
@@ -6,76 +6,76 @@
#include "eolian_database.h"
#include "eolian_priv.h"
-EAPI Eolian_Class_Type
+EOLIAN_API Eolian_Class_Type
eolian_class_type_get(const Eolian_Class *cl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, EOLIAN_CLASS_UNKNOWN_TYPE);
return cl->type;
}
-EAPI const Eolian_Documentation *
+EOLIAN_API const Eolian_Documentation *
eolian_class_documentation_get(const Eolian_Class *cl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
return cl->doc;
}
-EAPI const char *
+EOLIAN_API const char *
eolian_class_c_prefix_get(const Eolian_Class *cl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
return cl->c_prefix;
}
-EAPI const char *
+EOLIAN_API const char *
eolian_class_event_c_prefix_get(const Eolian_Class *cl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
return cl->ev_prefix;
}
-EAPI const char *
+EOLIAN_API const char *
eolian_class_data_type_get(const Eolian_Class *cl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
return cl->data_type;
}
-EAPI const Eolian_Class *
+EOLIAN_API const Eolian_Class *
eolian_class_parent_get(const Eolian_Class *cl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
return cl->parent;
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_class_requires_get(const Eolian_Class *cl)
{
return eina_list_iterator_new(cl->requires);
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_class_extensions_get(const Eolian_Class *cl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
return (cl->extends ? eina_list_iterator_new(cl->extends) : NULL);
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_class_implements_get(const Eolian_Class *cl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
return (cl->implements ? eina_list_iterator_new(cl->implements) : NULL);
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_class_constructors_get(const Eolian_Class *cl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
return (cl->constructors ? eina_list_iterator_new(cl->constructors) : NULL);
}
-EAPI const Eolian_Function *
+EOLIAN_API const Eolian_Function *
eolian_class_function_by_name_get(const Eolian_Class *cl, const char *func_name, Eolian_Function_Type f_type)
{
Eina_List *itr;
@@ -106,7 +106,7 @@ eolian_class_function_by_name_get(const Eolian_Class *cl, const char *func_name,
return NULL;
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_class_functions_get(const Eolian_Class *cl, Eolian_Function_Type foo_type)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
@@ -120,35 +120,35 @@ eolian_class_functions_get(const Eolian_Class *cl, Eolian_Function_Type foo_type
}
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_class_events_get(const Eolian_Class *cl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
return (cl->events ? eina_list_iterator_new(cl->events) : NULL);
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_class_parts_get(const Eolian_Class *cl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
return (cl->parts ? eina_list_iterator_new(cl->parts) : NULL);
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_class_ctor_enable_get(const Eolian_Class *cl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, EINA_FALSE);
return cl->class_ctor_enable;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_class_dtor_enable_get(const Eolian_Class *cl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, EINA_FALSE);
return cl->class_dtor_enable;
}
-EAPI Eina_Stringshare *
+EOLIAN_API Eina_Stringshare *
eolian_class_c_get_function_name_get(const Eolian_Class *cl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
@@ -176,7 +176,7 @@ eolian_class_c_get_function_name_get(const Eolian_Class *cl)
return ret;
}
-EAPI Eina_Stringshare *
+EOLIAN_API Eina_Stringshare *
eolian_class_c_macro_get(const Eolian_Class *cl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(cl, NULL);
@@ -204,7 +204,7 @@ eolian_class_c_macro_get(const Eolian_Class *cl)
return ret;
}
-EAPI Eina_Stringshare *
+EOLIAN_API Eina_Stringshare *
eolian_class_c_data_type_get(const Eolian_Class *cl)
{
char buf[512];
diff --git a/src/lib/eolian/database_constructor_api.c b/src/lib/eolian/database_constructor_api.c
index bedf9ab7da..f1794df409 100644
--- a/src/lib/eolian/database_constructor_api.c
+++ b/src/lib/eolian/database_constructor_api.c
@@ -5,14 +5,14 @@
#include <Eina.h>
#include "eolian_database.h"
-EAPI const Eolian_Class *
+EOLIAN_API const Eolian_Class *
eolian_constructor_class_get(const Eolian_Constructor *ctor)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(ctor, NULL);
return ctor->klass;
}
-EAPI const Eolian_Function *
+EOLIAN_API const Eolian_Function *
eolian_constructor_function_get(const Eolian_Constructor *ctor)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(ctor, NULL);
@@ -23,7 +23,7 @@ eolian_constructor_function_get(const Eolian_Constructor *ctor)
ctor->base.name + strlen(klass->base.name) + 1, EOLIAN_UNRESOLVED);
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_constructor_is_optional(const Eolian_Constructor *ctor)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(ctor, EINA_FALSE);
diff --git a/src/lib/eolian/database_event_api.c b/src/lib/eolian/database_event_api.c
index 2c0647d5c9..cde812fdc8 100644
--- a/src/lib/eolian/database_event_api.c
+++ b/src/lib/eolian/database_event_api.c
@@ -5,7 +5,7 @@
#include <Eina.h>
#include "eolian_database.h"
-EAPI const Eolian_Type *
+EOLIAN_API const Eolian_Type *
eolian_event_type_get(const Eolian_Event *event)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(event, NULL);
@@ -14,42 +14,42 @@ eolian_event_type_get(const Eolian_Event *event)
return event->type;
}
-EAPI const Eolian_Class *
+EOLIAN_API const Eolian_Class *
eolian_event_class_get(const Eolian_Event *event)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(event, NULL);
return event->klass;
}
-EAPI const Eolian_Documentation *
+EOLIAN_API const Eolian_Documentation *
eolian_event_documentation_get(const Eolian_Event *event)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(event, NULL);
return event->doc;
}
-EAPI Eolian_Object_Scope
+EOLIAN_API Eolian_Object_Scope
eolian_event_scope_get(const Eolian_Event *event)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(event, EOLIAN_SCOPE_UNKNOWN);
return event->scope;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_event_is_hot(const Eolian_Event *event)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(event, EINA_FALSE);
return event->is_hot;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_event_is_restart(const Eolian_Event *event)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(event, EINA_FALSE);
return event->is_restart;
}
-EAPI Eina_Stringshare *
+EOLIAN_API Eina_Stringshare *
eolian_event_c_macro_get(const Eolian_Event *event)
{
char buf[512];
@@ -63,7 +63,7 @@ eolian_event_c_macro_get(const Eolian_Event *event)
return eina_stringshare_add(buf);
}
-EAPI const Eolian_Event *
+EOLIAN_API const Eolian_Event *
eolian_class_event_by_name_get(const Eolian_Class *klass, const char *event_name)
{
Eina_List *itr;
diff --git a/src/lib/eolian/database_expr.c b/src/lib/eolian/database_expr.c
index 38794a2f3c..b6d79bb19c 100644
--- a/src/lib/eolian/database_expr.c
+++ b/src/lib/eolian/database_expr.c
@@ -529,7 +529,10 @@ eval_exp(const Eolian_Unit *unit, Eolian_Expression *expr,
/* assert int here, as we're clearly dealing with enum */
if (!(mask & EOLIAN_MASK_INT))
- return expr_type_error(expr, EOLIAN_MASK_INT, mask);
+ {
+ free(fulln);
+ return expr_type_error(expr, EOLIAN_MASK_INT, mask);
+ }
etpd = eolian_unit_alias_by_name_get(unit, fulln);
if (etpd && cb) cb((const Eolian_Object *)etpd, data);
diff --git a/src/lib/eolian/database_expr_api.c b/src/lib/eolian/database_expr_api.c
index 2d3f81c73d..2917107c6d 100644
--- a/src/lib/eolian/database_expr_api.c
+++ b/src/lib/eolian/database_expr_api.c
@@ -6,7 +6,7 @@
#include "eolian_database.h"
-EAPI Eolian_Value
+EOLIAN_API Eolian_Value
eolian_expression_eval(const Eolian_Expression *expr, Eolian_Expression_Mask m)
{
Eolian_Value err;
@@ -15,6 +15,19 @@ eolian_expression_eval(const Eolian_Expression *expr, Eolian_Expression_Mask m)
return database_expr_eval(NULL, (Eolian_Expression *)expr, m, NULL, NULL);
}
+EOLIAN_API Eina_Bool
+eolian_expression_eval_fill(const Eolian_Expression *expr,
+ Eolian_Expression_Mask m, Eolian_Value *val)
+{
+ EINA_SAFETY_ON_NULL_RETURN_VAL(expr, EINA_FALSE);
+ Eolian_Value ret = database_expr_eval(NULL, (Eolian_Expression *)expr, m,
+ NULL, NULL);
+ if (ret.type == EOLIAN_EXPR_UNKNOWN)
+ return EINA_FALSE;
+ *val = ret;
+ return EINA_TRUE;
+}
+
static void
_append_char_escaped(Eina_Strbuf *buf, char c)
{
@@ -67,7 +80,7 @@ _number_to_str(const Eolian_Value *v, Eina_Strbuf *buf)
}
}
-EAPI Eina_Stringshare *
+EOLIAN_API Eina_Stringshare *
eolian_expression_value_to_literal(const Eolian_Value *val)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(val, NULL);
@@ -192,7 +205,7 @@ _expr_serialize(const Eolian_Expression *expr, Eina_Strbuf *buf, Eina_Bool outer
return EINA_TRUE;
}
-EAPI Eina_Stringshare *
+EOLIAN_API Eina_Stringshare *
eolian_expression_serialize(const Eolian_Expression *expr)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(expr, NULL);
@@ -207,14 +220,14 @@ eolian_expression_serialize(const Eolian_Expression *expr)
return ret;
}
-EAPI Eolian_Expression_Type
+EOLIAN_API Eolian_Expression_Type
eolian_expression_type_get(const Eolian_Expression *expr)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(expr, EOLIAN_EXPR_UNKNOWN);
return expr->type;
}
-EAPI Eolian_Binary_Operator
+EOLIAN_API Eolian_Binary_Operator
eolian_expression_binary_operator_get(const Eolian_Expression *expr)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(expr, EOLIAN_BINOP_INVALID);
@@ -223,7 +236,7 @@ eolian_expression_binary_operator_get(const Eolian_Expression *expr)
return expr->binop;
}
-EAPI const Eolian_Expression *
+EOLIAN_API const Eolian_Expression *
eolian_expression_binary_lhs_get(const Eolian_Expression *expr)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(expr, NULL);
@@ -231,7 +244,7 @@ eolian_expression_binary_lhs_get(const Eolian_Expression *expr)
return expr->lhs;
}
-EAPI const Eolian_Expression *
+EOLIAN_API const Eolian_Expression *
eolian_expression_binary_rhs_get(const Eolian_Expression *expr)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(expr, NULL);
@@ -239,7 +252,7 @@ eolian_expression_binary_rhs_get(const Eolian_Expression *expr)
return expr->rhs;
}
-EAPI Eolian_Unary_Operator
+EOLIAN_API Eolian_Unary_Operator
eolian_expression_unary_operator_get(const Eolian_Expression *expr)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(expr, EOLIAN_UNOP_INVALID);
@@ -248,7 +261,7 @@ eolian_expression_unary_operator_get(const Eolian_Expression *expr)
return expr->unop;
}
-EAPI const Eolian_Expression *
+EOLIAN_API const Eolian_Expression *
eolian_expression_unary_expression_get(const Eolian_Expression *expr)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(expr, NULL);
@@ -256,7 +269,7 @@ eolian_expression_unary_expression_get(const Eolian_Expression *expr)
return expr->expr;
}
-EAPI Eolian_Value
+EOLIAN_API Eolian_Value
eolian_expression_value_get(const Eolian_Expression *expr)
{
Eolian_Value v;
@@ -269,3 +282,15 @@ eolian_expression_value_get(const Eolian_Expression *expr)
v.value = expr->value;
return v;
}
+
+EOLIAN_API Eina_Bool
+eolian_expression_value_get_fill(const Eolian_Expression *expr, Eolian_Value *val)
+{
+ EINA_SAFETY_ON_NULL_RETURN_VAL(expr, EINA_FALSE);
+ EINA_SAFETY_ON_FALSE_RETURN_VAL(expr->type != EOLIAN_EXPR_UNKNOWN
+ && expr->type != EOLIAN_EXPR_BINARY
+ && expr->type != EOLIAN_EXPR_UNARY, EINA_FALSE);
+ val->type = expr->type;
+ val->value = expr->value;
+ return EINA_TRUE;
+}
diff --git a/src/lib/eolian/database_function_api.c b/src/lib/eolian/database_function_api.c
index ca9454449b..9fa41bf73b 100644
--- a/src/lib/eolian/database_function_api.c
+++ b/src/lib/eolian/database_function_api.c
@@ -5,7 +5,7 @@
#include <Eina.h>
#include "eolian_database.h"
-EAPI Eolian_Object_Scope
+EOLIAN_API Eolian_Object_Scope
eolian_function_scope_get(const Eolian_Function *fid, Eolian_Function_Type ftype)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fid, EOLIAN_SCOPE_UNKNOWN);
@@ -30,7 +30,7 @@ eolian_function_scope_get(const Eolian_Function *fid, Eolian_Function_Type ftype
}
}
-EAPI Eolian_Function_Type
+EOLIAN_API Eolian_Function_Type
eolian_function_type_get(const Eolian_Function *fid)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fid, EOLIAN_UNRESOLVED);
@@ -80,7 +80,7 @@ _get_abbreviated_name(const char *prefix, const char *fname)
return ret;
}
-EAPI Eina_Stringshare *
+EOLIAN_API Eina_Stringshare *
eolian_function_full_c_name_get(const Eolian_Function *foo_id,
Eolian_Function_Type ftype)
{
@@ -109,21 +109,21 @@ eolian_function_full_c_name_get(const Eolian_Function *foo_id,
return ret;
}
-EAPI const Eolian_Implement *
+EOLIAN_API const Eolian_Implement *
eolian_function_implement_get(const Eolian_Function *fid)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fid, NULL);
return fid->impl;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_function_is_static(const Eolian_Function *fid)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fid, EINA_FALSE);
return fid->is_static;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_function_is_constructor(const Eolian_Function *fid, const Eolian_Class *klass)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fid, EINA_FALSE);
@@ -152,7 +152,7 @@ _get_prop_values(const Eolian_Function *fid, Eolian_Function_Type ftype)
return l;
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_property_keys_get(const Eolian_Function *fid, Eolian_Function_Type ftype)
{
Eina_List *l = NULL;
@@ -163,7 +163,7 @@ eolian_property_keys_get(const Eolian_Function *fid, Eolian_Function_Type ftype)
return (l ? eina_list_iterator_new(l) : NULL);
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_property_values_get(const Eolian_Function *fid, Eolian_Function_Type ftype)
{
Eina_List *l = NULL;
@@ -174,7 +174,7 @@ eolian_property_values_get(const Eolian_Function *fid, Eolian_Function_Type ftyp
return (l ? eina_list_iterator_new(l) : NULL);
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_function_parameters_get(const Eolian_Function *fid)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fid, NULL);
@@ -183,7 +183,7 @@ eolian_function_parameters_get(const Eolian_Function *fid)
return (fid->params ? eina_list_iterator_new(fid->params) : NULL);
}
-EAPI const Eolian_Type *
+EOLIAN_API const Eolian_Type *
eolian_function_return_type_get(const Eolian_Function *fid, Eolian_Function_Type ftype)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fid, NULL);
@@ -209,7 +209,7 @@ eolian_function_return_type_get(const Eolian_Function *fid, Eolian_Function_Type
}
}
-EAPI const Eolian_Expression *
+EOLIAN_API const Eolian_Expression *
eolian_function_return_default_value_get(const Eolian_Function *fid, Eolian_Function_Type ftype)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fid, NULL);
@@ -235,7 +235,7 @@ eolian_function_return_default_value_get(const Eolian_Function *fid, Eolian_Func
}
}
-EAPI const Eolian_Documentation *
+EOLIAN_API const Eolian_Documentation *
eolian_function_return_documentation_get(const Eolian_Function *fid, Eolian_Function_Type ftype)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fid, NULL);
@@ -261,7 +261,7 @@ eolian_function_return_documentation_get(const Eolian_Function *fid, Eolian_Func
}
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_function_return_allow_unused(const Eolian_Function *fid,
Eolian_Function_Type ftype)
{
@@ -288,7 +288,7 @@ eolian_function_return_allow_unused(const Eolian_Function *fid,
}
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_function_return_is_by_ref(const Eolian_Function *fid,
Eolian_Function_Type ftype)
{
@@ -315,7 +315,7 @@ eolian_function_return_is_by_ref(const Eolian_Function *fid,
}
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_function_return_is_move(const Eolian_Function *fid,
Eolian_Function_Type ftype)
{
@@ -342,7 +342,7 @@ eolian_function_return_is_move(const Eolian_Function *fid,
}
}
-EAPI Eina_Stringshare *
+EOLIAN_API Eina_Stringshare *
eolian_function_return_c_type_get(const Eolian_Function *fid,
Eolian_Function_Type ftype)
{
@@ -382,14 +382,14 @@ eolian_function_return_c_type_get(const Eolian_Function *fid,
return ret;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_function_object_is_const(const Eolian_Function *fid)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fid, EINA_FALSE);
return fid->obj_is_const;
}
-EAPI const Eolian_Class *
+EOLIAN_API const Eolian_Class *
eolian_function_class_get(const Eolian_Function *fid)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fid, NULL);
diff --git a/src/lib/eolian/database_function_parameter_api.c b/src/lib/eolian/database_function_parameter_api.c
index f3b03388d8..80d7dbf7f3 100644
--- a/src/lib/eolian/database_function_parameter_api.c
+++ b/src/lib/eolian/database_function_parameter_api.c
@@ -5,56 +5,56 @@
#include <Eina.h>
#include "eolian_database.h"
-EAPI Eolian_Parameter_Direction
+EOLIAN_API Eolian_Parameter_Direction
eolian_parameter_direction_get(const Eolian_Function_Parameter *param)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(param, EOLIAN_PARAMETER_UNKNOWN);
return param->param_dir;
}
-EAPI const Eolian_Type *
+EOLIAN_API const Eolian_Type *
eolian_parameter_type_get(const Eolian_Function_Parameter *param)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(param, NULL);
return param->type;
}
-EAPI const Eolian_Expression *
+EOLIAN_API const Eolian_Expression *
eolian_parameter_default_value_get(const Eolian_Function_Parameter *param)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(param, NULL);
return param->value;
}
-EAPI const Eolian_Documentation *
+EOLIAN_API const Eolian_Documentation *
eolian_parameter_documentation_get(const Eolian_Function_Parameter *param)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(param, NULL);
return param->doc;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_parameter_is_optional(const Eolian_Function_Parameter *param)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(param, EINA_FALSE);
return param->optional;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_parameter_is_move(const Eolian_Function_Parameter *param)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(param, EINA_FALSE);
return param->move;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_parameter_is_by_ref(const Eolian_Function_Parameter *param)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(param, EINA_FALSE);
return param->by_ref;
}
-EAPI Eina_Stringshare *
+EOLIAN_API Eina_Stringshare *
eolian_parameter_c_type_get(const Eolian_Function_Parameter *param_desc,
Eina_Bool as_return)
{
diff --git a/src/lib/eolian/database_implement_api.c b/src/lib/eolian/database_implement_api.c
index a373a77911..6f7ce79f0a 100644
--- a/src/lib/eolian/database_implement_api.c
+++ b/src/lib/eolian/database_implement_api.c
@@ -5,21 +5,21 @@
#include <Eina.h>
#include "eolian_database.h"
-EAPI const Eolian_Class *
+EOLIAN_API const Eolian_Class *
eolian_implement_class_get(const Eolian_Implement *impl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(impl, NULL);
return impl->klass;
}
-EAPI const Eolian_Class *
+EOLIAN_API const Eolian_Class *
eolian_implement_implementing_class_get(const Eolian_Implement *impl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(impl, NULL);
return impl->implklass;
}
-EAPI const Eolian_Function *
+EOLIAN_API const Eolian_Function *
eolian_implement_function_get(const Eolian_Implement *impl,
Eolian_Function_Type *func_type)
{
@@ -43,7 +43,7 @@ eolian_implement_function_get(const Eolian_Implement *impl,
return impl->foo_id;
}
-EAPI const Eolian_Documentation *
+EOLIAN_API const Eolian_Documentation *
eolian_implement_documentation_get(const Eolian_Implement *impl,
Eolian_Function_Type ftype)
{
@@ -56,7 +56,7 @@ eolian_implement_documentation_get(const Eolian_Implement *impl,
}
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_implement_is_auto(const Eolian_Implement *impl, Eolian_Function_Type ftype)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(impl, EINA_FALSE);
@@ -75,7 +75,7 @@ eolian_implement_is_auto(const Eolian_Implement *impl, Eolian_Function_Type ftyp
}
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_implement_is_empty(const Eolian_Implement *impl, Eolian_Function_Type ftype)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(impl, EINA_FALSE);
@@ -94,7 +94,7 @@ eolian_implement_is_empty(const Eolian_Implement *impl, Eolian_Function_Type fty
}
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_implement_is_pure_virtual(const Eolian_Implement *impl, Eolian_Function_Type ftype)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(impl, EINA_FALSE);
@@ -113,14 +113,14 @@ eolian_implement_is_pure_virtual(const Eolian_Implement *impl, Eolian_Function_T
}
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_implement_is_prop_get(const Eolian_Implement *impl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(impl, EINA_FALSE);
return impl->is_prop_get;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_implement_is_prop_set(const Eolian_Implement *impl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(impl, EINA_FALSE);
diff --git a/src/lib/eolian/database_part_api.c b/src/lib/eolian/database_part_api.c
index 4fcd7c63fd..0b6225f275 100644
--- a/src/lib/eolian/database_part_api.c
+++ b/src/lib/eolian/database_part_api.c
@@ -5,14 +5,14 @@
#include <Eina.h>
#include "eolian_database.h"
-EAPI const Eolian_Class *
+EOLIAN_API const Eolian_Class *
eolian_part_class_get(const Eolian_Part *part)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL);
return part->klass;
}
-EAPI const Eolian_Documentation *
+EOLIAN_API const Eolian_Documentation *
eolian_part_documentation_get(const Eolian_Part *part)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(part, NULL);
diff --git a/src/lib/eolian/database_type.c b/src/lib/eolian/database_type.c
index 53d531cc54..0df427bf62 100644
--- a/src/lib/eolian/database_type.c
+++ b/src/lib/eolian/database_type.c
@@ -121,6 +121,8 @@ database_type_to_str(const Eolian_Type *tp,
else
eina_strbuf_append(buf, tp->base.c_name);
}
+ else if (tp->type == EOLIAN_TYPE_ERROR)
+ eina_strbuf_append(buf, "Eina_Error");
else if (tp->type == EOLIAN_TYPE_VOID)
eina_strbuf_append(buf, "void");
else if (tp->type == EOLIAN_TYPE_UNDEFINED)
diff --git a/src/lib/eolian/database_type_api.c b/src/lib/eolian/database_type_api.c
index b5507fd504..14f1b088ab 100644
--- a/src/lib/eolian/database_type_api.c
+++ b/src/lib/eolian/database_type_api.c
@@ -6,28 +6,28 @@
#include "eolian_database.h"
#include "eo_lexer.h"
-EAPI Eolian_Type_Type
+EOLIAN_API Eolian_Type_Type
eolian_type_type_get(const Eolian_Type *tp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tp, EOLIAN_TYPE_UNKNOWN_TYPE);
return tp->type;
}
-EAPI Eolian_Type_Builtin_Type
+EOLIAN_API Eolian_Type_Builtin_Type
eolian_type_builtin_type_get(const Eolian_Type *tp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tp, EOLIAN_TYPE_BUILTIN_INVALID);
return tp->btype;
}
-EAPI Eolian_Typedecl_Type
+EOLIAN_API Eolian_Typedecl_Type
eolian_typedecl_type_get(const Eolian_Typedecl *tp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tp, EOLIAN_TYPEDECL_UNKNOWN);
return tp->type;
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_typedecl_struct_fields_get(const Eolian_Typedecl *tp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL);
@@ -36,7 +36,7 @@ eolian_typedecl_struct_fields_get(const Eolian_Typedecl *tp)
return eina_list_iterator_new(tp->field_list);
}
-EAPI const Eolian_Struct_Type_Field *
+EOLIAN_API const Eolian_Struct_Type_Field *
eolian_typedecl_struct_field_get(const Eolian_Typedecl *tp, const char *field)
{
Eolian_Struct_Type_Field *sf = NULL;
@@ -49,35 +49,35 @@ eolian_typedecl_struct_field_get(const Eolian_Typedecl *tp, const char *field)
return sf;
}
-EAPI const Eolian_Documentation *
+EOLIAN_API const Eolian_Documentation *
eolian_typedecl_struct_field_documentation_get(const Eolian_Struct_Type_Field *fl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fl, NULL);
return fl->doc;
}
-EAPI const Eolian_Type *
+EOLIAN_API const Eolian_Type *
eolian_typedecl_struct_field_type_get(const Eolian_Struct_Type_Field *fl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fl, NULL);
return fl->type;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_typedecl_struct_field_is_by_ref(const Eolian_Struct_Type_Field *fl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fl, EINA_FALSE);
return fl->by_ref;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_typedecl_struct_field_is_move(const Eolian_Struct_Type_Field *fl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fl, EINA_FALSE);
return fl->move;
}
-EAPI Eina_Stringshare *
+EOLIAN_API Eina_Stringshare *
eolian_typedecl_struct_field_c_type_get(const Eolian_Struct_Type_Field *fl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fl, NULL);
@@ -88,7 +88,7 @@ eolian_typedecl_struct_field_c_type_get(const Eolian_Struct_Type_Field *fl)
return ret;
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_typedecl_enum_fields_get(const Eolian_Typedecl *tp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL);
@@ -97,7 +97,7 @@ eolian_typedecl_enum_fields_get(const Eolian_Typedecl *tp)
return eina_list_iterator_new(tp->field_list);
}
-EAPI const Eolian_Enum_Type_Field *
+EOLIAN_API const Eolian_Enum_Type_Field *
eolian_typedecl_enum_field_get(const Eolian_Typedecl *tp, const char *field)
{
Eolian_Enum_Type_Field *ef = NULL;
@@ -110,7 +110,7 @@ eolian_typedecl_enum_field_get(const Eolian_Typedecl *tp, const char *field)
return ef;
}
-EAPI Eina_Stringshare *
+EOLIAN_API Eina_Stringshare *
eolian_typedecl_enum_field_c_constant_get(const Eolian_Enum_Type_Field *fl)
{
Eina_Stringshare *ret;
@@ -121,7 +121,7 @@ eolian_typedecl_enum_field_c_constant_get(const Eolian_Enum_Type_Field *fl)
if (fl->base_enum->legacy)
eina_strbuf_append(buf, fl->base_enum->legacy);
else
- eina_strbuf_append(buf, fl->base_enum->base.name);
+ eina_strbuf_append(buf, fl->base_enum->base.c_name);
eina_strbuf_append_char(buf, '_');
eina_strbuf_append(buf, fl->base.name);
bufp = eina_strbuf_string_steal(buf);
@@ -133,14 +133,14 @@ eolian_typedecl_enum_field_c_constant_get(const Eolian_Enum_Type_Field *fl)
return ret;
}
-EAPI const Eolian_Documentation *
+EOLIAN_API const Eolian_Documentation *
eolian_typedecl_enum_field_documentation_get(const Eolian_Enum_Type_Field *fl)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fl, NULL);
return fl->doc;
}
-EAPI const Eolian_Expression *
+EOLIAN_API const Eolian_Expression *
eolian_typedecl_enum_field_value_get(const Eolian_Enum_Type_Field *fl, Eina_Bool force)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(fl, NULL);
@@ -148,7 +148,7 @@ eolian_typedecl_enum_field_value_get(const Eolian_Enum_Type_Field *fl, Eina_Bool
return fl->value;
}
-EAPI const char *
+EOLIAN_API const char *
eolian_typedecl_enum_legacy_prefix_get(const Eolian_Typedecl *tp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL);
@@ -157,28 +157,28 @@ eolian_typedecl_enum_legacy_prefix_get(const Eolian_Typedecl *tp)
return tp->legacy;
}
-EAPI const Eolian_Documentation *
+EOLIAN_API const Eolian_Documentation *
eolian_typedecl_documentation_get(const Eolian_Typedecl *tp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL);
return tp->doc;
}
-EAPI const Eolian_Type *
+EOLIAN_API const Eolian_Type *
eolian_type_base_type_get(const Eolian_Type *tp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL);
return tp->base_type;
}
-EAPI const Eolian_Type *
+EOLIAN_API const Eolian_Type *
eolian_type_next_type_get(const Eolian_Type *tp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL);
return tp->next_type;
}
-EAPI const Eolian_Typedecl *
+EOLIAN_API const Eolian_Typedecl *
eolian_type_typedecl_get(const Eolian_Type *tp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL);
@@ -187,14 +187,14 @@ eolian_type_typedecl_get(const Eolian_Type *tp)
return tp->tdecl;
}
-EAPI const Eolian_Type *
+EOLIAN_API const Eolian_Type *
eolian_typedecl_base_type_get(const Eolian_Typedecl *tp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL);
return tp->base_type;
}
-EAPI const Eolian_Type *
+EOLIAN_API const Eolian_Type *
eolian_type_aliased_base_get(const Eolian_Type *tp)
{
if (!tp || tp->type != EOLIAN_TYPE_REGULAR || tp->is_ptr)
@@ -205,7 +205,7 @@ eolian_type_aliased_base_get(const Eolian_Type *tp)
return tp;
}
-EAPI const Eolian_Type *
+EOLIAN_API const Eolian_Type *
eolian_typedecl_aliased_base_get(const Eolian_Typedecl *tp)
{
if (!tp || tp->type != EOLIAN_TYPEDECL_ALIAS)
@@ -213,7 +213,7 @@ eolian_typedecl_aliased_base_get(const Eolian_Typedecl *tp)
return eolian_type_aliased_base_get(tp->base_type);
}
-EAPI const Eolian_Class *
+EOLIAN_API const Eolian_Class *
eolian_type_class_get(const Eolian_Type *tp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL);
@@ -222,7 +222,7 @@ eolian_type_class_get(const Eolian_Type *tp)
return tp->klass;
}
-EAPI const Eolian_Error *
+EOLIAN_API const Eolian_Error *
eolian_type_error_get(const Eolian_Type *tp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL);
@@ -231,35 +231,35 @@ eolian_type_error_get(const Eolian_Type *tp)
return tp->error;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_type_is_move(const Eolian_Type *tp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tp, EINA_FALSE);
return tp->move;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_type_is_const(const Eolian_Type *tp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tp, EINA_FALSE);
return tp->is_const;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_type_is_ptr(const Eolian_Type *tp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tp, EINA_FALSE);
return tp->is_ptr;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_typedecl_is_extern(const Eolian_Typedecl *tp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tp, EINA_FALSE);
return tp->is_extern;
}
-EAPI Eina_Stringshare *
+EOLIAN_API Eina_Stringshare *
eolian_type_c_type_get(const Eolian_Type *tp)
{
Eina_Stringshare *ret;
@@ -272,7 +272,7 @@ eolian_type_c_type_get(const Eolian_Type *tp)
return ret;
}
-EAPI Eina_Stringshare *
+EOLIAN_API Eina_Stringshare *
eolian_typedecl_c_type_get(const Eolian_Typedecl *tp)
{
Eina_Stringshare *ret;
@@ -285,14 +285,14 @@ eolian_typedecl_c_type_get(const Eolian_Typedecl *tp)
return ret;
}
-EAPI const char *
+EOLIAN_API const char *
eolian_typedecl_free_func_get(const Eolian_Typedecl *tp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL);
return tp->freefunc;
}
-EAPI const Eolian_Function *
+EOLIAN_API const Eolian_Function *
eolian_typedecl_function_pointer_get(const Eolian_Typedecl *tp)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL);
diff --git a/src/lib/eolian/database_validate.c b/src/lib/eolian/database_validate.c
index b1af2185ef..91a679bc33 100644
--- a/src/lib/eolian/database_validate.c
+++ b/src/lib/eolian/database_validate.c
@@ -15,7 +15,6 @@ typedef struct _Validate_State
Eina_Bool stable;
Eina_Bool in_tree;
Eina_Bool unimplemented_beta;
- Eina_Bool verify_since;
const char *since_ver;
} Validate_State;
@@ -94,7 +93,7 @@ _validate_docstr(Eina_Stringshare *str, const Eolian_Object *info, Eina_List **r
static Eina_Bool
_validate_doc_since(Validate_State *vals, Eolian_Documentation *doc)
{
- if (!doc || !vals->stable || !vals->verify_since)
+ if (!doc || !vals->stable)
return EINA_TRUE;
if (doc->since)
@@ -286,7 +285,8 @@ _validate_typedecl(Validate_State *vals, Eolian_Typedecl *tp)
}
static Eina_Bool
-_validate_by_ref(Eolian_Type *tp, Eina_Bool by_ref, Eina_Bool move)
+_validate_by_ref(Validate_State *vals, Eolian_Type *tp, Eina_Bool by_ref,
+ Eina_Bool move)
{
Eina_Bool maybe_ownable =
database_type_is_ownable(tp->base.unit, tp, EINA_FALSE, NULL);
@@ -302,6 +302,15 @@ _validate_by_ref(Eolian_Type *tp, Eina_Bool by_ref, Eina_Bool move)
if (tp->btype == EOLIAN_TYPE_BUILTIN_FUTURE)
return EINA_TRUE;
+ if (tp->tdecl && (tp->tdecl->type == EOLIAN_TYPEDECL_STRUCT_OPAQUE))
+ {
+ if (vals->stable && !maybe_ownable && !by_ref)
+ {
+ _eo_parser_log(&tp->base, "opaque structs must be by reference");
+ return EINA_FALSE;
+ }
+ }
+
/* not marked @move, or marked @by_ref; just validate */
if (!move || by_ref)
return EINA_TRUE;
@@ -323,7 +332,7 @@ _validate_type_by_ref(Validate_State *vals, Eolian_Type *tp,
if (!_validate_type(vals, tp, by_ref, is_ret))
return EINA_FALSE;
- return _validate_by_ref(tp, by_ref, move);
+ return _validate_by_ref(vals, tp, by_ref, move);
}
static Eina_Bool
@@ -400,9 +409,9 @@ _validate_type(Validate_State *vals, Eolian_Type *tp, Eina_Bool by_ref,
int kwid = eo_lexer_keyword_str_to_id(tp->base.name);
if (kwid > KW_void)
tp->ownable = EINA_TRUE;
- if (kwid == KW_hash && vals->stable)
+ if ((kwid == KW_hash || kwid == KW_list) && vals->stable)
{
- _eo_parser_log(&tp->base, "hashes not allowed in stable context");
+ _eo_parser_log(&tp->base, "hashes and lists not allowed in stable context");
return EINA_FALSE;
}
Eolian_Type *itp = tp->base_type;
@@ -1680,7 +1689,6 @@ database_validate(const Eolian_Unit *src)
EINA_TRUE,
!!getenv("EFL_RUN_IN_TREE"),
!!getenv("EOLIAN_CLASS_UNIMPLEMENTED_BETA_WARN"),
- !!getenv("EOLIAN_ENFORCE_SINCE")
};
/* do an initial pass to refill inherits */
diff --git a/src/lib/eolian/database_var_api.c b/src/lib/eolian/database_var_api.c
index b6f2d1f1bc..18eaa69e21 100644
--- a/src/lib/eolian/database_var_api.c
+++ b/src/lib/eolian/database_var_api.c
@@ -5,28 +5,28 @@
#include <Eina.h>
#include "eolian_database.h"
-EAPI const Eolian_Documentation *
+EOLIAN_API const Eolian_Documentation *
eolian_constant_documentation_get(const Eolian_Constant *var)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(var, NULL);
return var->doc;
}
-EAPI const Eolian_Type *
+EOLIAN_API const Eolian_Type *
eolian_constant_type_get(const Eolian_Constant *var)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(var, NULL);
return var->base_type;
}
-EAPI const Eolian_Expression *
+EOLIAN_API const Eolian_Expression *
eolian_constant_value_get(const Eolian_Constant *var)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(var, NULL);
return var->value;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_constant_is_extern(const Eolian_Constant *var)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(var, EINA_FALSE);
diff --git a/src/lib/eolian/eo_lexer.c b/src/lib/eolian/eo_lexer.c
index 365ff34303..ce54877747 100644
--- a/src/lib/eolian/eo_lexer.c
+++ b/src/lib/eolian/eo_lexer.c
@@ -80,7 +80,7 @@ static const char * const ctypes[] =
"Eina_Value", "Eina_Value *", "Eina_Binbuf *", "Efl_Event *",
"char *", "const char *", "Eina_Stringshare *", "Eina_Strbuf *",
- "Eina_Hash *",
+ "Eina_Hash *",
"void *",
"function",
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 253e99e929..e6d80dd611 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -219,6 +219,7 @@ parse_c_name(Eo_Lexer *ls)
check_match(ls, ')', '(', pline, pcol);
return NULL; /* unreachable */
}
+ eo_lexer_get(ls);
return cname;
}
@@ -481,10 +482,7 @@ parse_struct(Eo_Lexer *ls, const char *name, Eina_Bool is_extern,
def->ownable = EINA_TRUE;
}
if (cname)
- {
- def->base.c_name = cname;
- eo_lexer_dtor_pop(ls);
- }
+ def->base.c_name = eina_stringshare_ref(cname);
else
def->base.c_name = make_c_name(name);
/* we can't know the order, pop when both are filled */
@@ -566,7 +564,7 @@ parse_enum(Eo_Lexer *ls, const char *name, Eina_Bool is_extern,
def->base.name = name;
if (cname)
{
- def->base.c_name = cname;
+ def->base.c_name = eina_stringshare_ref(cname);
eo_lexer_dtor_pop(ls);
}
else
@@ -865,7 +863,7 @@ tags_done:
def->base.name = eina_stringshare_add(eina_strbuf_string_get(buf));
if (cname)
{
- def->base.c_name = cname;
+ def->base.c_name = eina_stringshare_ref(cname);
eo_lexer_dtor_pop(ls);
}
else
@@ -922,7 +920,7 @@ tags_done:
def->base.name = eina_stringshare_add(eina_strbuf_string_get(buf));
if (cname)
{
- def->base.c_name = cname;
+ def->base.c_name = eina_stringshare_ref(cname);
eo_lexer_dtor_pop(ls);
}
else
@@ -986,7 +984,7 @@ tags_done:
def->base.name = eina_stringshare_add(eina_strbuf_string_get(buf));
if (cname)
{
- def->base.c_name = cname;
+ def->base.c_name = eina_stringshare_ref(cname);
eo_lexer_dtor_pop(ls);
}
else
@@ -1448,7 +1446,7 @@ tags_done:
def->base.name = eina_stringshare_add(eina_strbuf_string_get(buf));
if (cname)
{
- def->base.c_name = cname;
+ def->base.c_name = eina_stringshare_ref(cname);
eo_lexer_dtor_pop(ls);
}
else
@@ -2263,7 +2261,7 @@ tags_done:
ls->klass->base.name = eina_stringshare_add(eina_strbuf_string_get(buf));
if (cname)
{
- ls->klass->base.c_name = cname;
+ ls->klass->base.c_name = eina_stringshare_ref(cname);
eo_lexer_dtor_pop(ls);
}
else
@@ -2490,7 +2488,7 @@ postparams:
}
def->base.name = name;
if (cname)
- def->base.c_name = cname;
+ def->base.c_name = eina_stringshare_ref(cname);
/* we can't know the order, pop when both are filled */
if (freefunc && cname)
{
diff --git a/src/lib/eolian/eo_parser.h b/src/lib/eolian/eo_parser.h
index 52029138fc..084d8b822b 100644
--- a/src/lib/eolian/eo_parser.h
+++ b/src/lib/eolian/eo_parser.h
@@ -1,8 +1,9 @@
#ifndef __EO_PARSER_H__
#define __EO_PARSER_H__
+#include "eolian_api.h"
#include "eo_lexer.h"
Eolian_Unit *eo_parser_database_fill(Eolian_Unit *parent, const char *filename, Eina_Bool eot);
-#endif /* __EO_PARSER_H__ */ \ No newline at end of file
+#endif /* __EO_PARSER_H__ */
diff --git a/src/lib/eolian/eolian.c b/src/lib/eolian/eolian.c
index 81067ebf44..00a96a5ce3 100644
--- a/src/lib/eolian/eolian.c
+++ b/src/lib/eolian/eolian.c
@@ -9,7 +9,7 @@ static int _eolian_init_counter = 0;
int _eolian_log_dom = -1;
Eina_Prefix *_eolian_prefix = NULL;
-EAPI int eolian_init(void)
+EOLIAN_API int eolian_init(void)
{
const char *log_dom = "eolian";
if (_eolian_init_counter > 0) return ++_eolian_init_counter;
@@ -40,7 +40,7 @@ EAPI int eolian_init(void)
return ++_eolian_init_counter;
}
-EAPI int eolian_shutdown(void)
+EOLIAN_API int eolian_shutdown(void)
{
if (_eolian_init_counter <= 0)
{
@@ -68,7 +68,7 @@ EAPI int eolian_shutdown(void)
return _eolian_init_counter;
}
-EAPI unsigned short eolian_file_format_version_get(void)
+EOLIAN_API unsigned short eolian_file_format_version_get(void)
{
return EOLIAN_FILE_FORMAT_VERSION;
}
diff --git a/src/lib/eolian/eolian_api.h b/src/lib/eolian/eolian_api.h
new file mode 100644
index 0000000000..e2cfa7a524
--- /dev/null
+++ b/src/lib/eolian/eolian_api.h
@@ -0,0 +1,34 @@
+#ifndef _EFL_EOLIAN_API_H
+#define _EFL_EOLIAN_API_H
+
+#ifdef EOLIAN_API
+#error EOLIAN_API should not be already defined
+#endif
+
+#ifdef _WIN32
+# ifndef EOLIAN_STATIC
+# ifdef EOLIAN_BUILD
+# define EOLIAN_API __declspec(dllexport)
+# else
+# define EOLIAN_API __declspec(dllimport)
+# endif
+# else
+# define EOLIAN_API
+# endif
+# define EOLIAN_API_WEAK
+#else
+# ifdef __GNUC__
+# if __GNUC__ >= 4
+# define EOLIAN_API __attribute__ ((visibility("default")))
+# define EOLIAN_API_WEAK __attribute__ ((weak))
+# else
+# define EOLIAN_API
+# define EOLIAN_API_WEAK
+# endif
+# else
+# define EOLIAN_API
+# define EOLIAN_API_WEAK
+# endif
+#endif
+
+#endif
diff --git a/src/lib/eolian/eolian_aux.c b/src/lib/eolian/eolian_aux.c
index 400a82ac1c..6e592706d0 100644
--- a/src/lib/eolian/eolian_aux.c
+++ b/src/lib/eolian/eolian_aux.c
@@ -10,7 +10,7 @@ _hashlist_free(void *ptr)
eina_list_free((Eina_List *)ptr);
}
-EAPI Eina_Hash *
+EOLIAN_API Eina_Hash *
eolian_aux_state_class_children_find(const Eolian_State *state)
{
if (!state)
@@ -105,7 +105,7 @@ _callables_find(const Eolian_Class *cl, Eina_List **funcs,
return total;
}
-EAPI size_t
+EOLIAN_API size_t
eolian_aux_class_callables_get(const Eolian_Class *klass,
Eina_List **funcs, Eina_List **events,
size_t *ownfuncs, size_t *ownevs)
@@ -178,7 +178,7 @@ _all_impls_find(Eina_List **l, const Eolian_Class *cl,
_all_impls_find(l, icl, func, got, children);
}
-EAPI Eina_List *
+EOLIAN_API Eina_List *
eolian_aux_function_all_implements_get(const Eolian_Function *func,
Eina_Hash *class_children)
{
@@ -239,7 +239,7 @@ _parent_impl_find(const char *fulln, const Eolian_Class *cl)
return NULL;
}
-EAPI const Eolian_Implement *
+EOLIAN_API const Eolian_Implement *
eolian_aux_implement_parent_get(const Eolian_Implement *impl)
{
return _parent_impl_find(eolian_implement_name_get(impl),
@@ -262,7 +262,7 @@ _parent_documentation_find(const Eolian_Implement *impl,
return pdoc;
}
-EAPI const Eolian_Documentation *
+EOLIAN_API const Eolian_Documentation *
eolian_aux_implement_documentation_get(const Eolian_Implement *impl,
Eolian_Function_Type ftype)
{
@@ -286,7 +286,7 @@ eolian_aux_implement_documentation_get(const Eolian_Implement *impl,
return _parent_documentation_find(impl, ftype);
}
-EAPI const Eolian_Documentation *
+EOLIAN_API const Eolian_Documentation *
eolian_aux_implement_documentation_fallback_get(const Eolian_Implement *impl)
{
Eina_Bool ig = eolian_implement_is_prop_get(impl),
diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c
index 14b0a9a4cc..b2542434a3 100644
--- a/src/lib/eolian/eolian_database.c
+++ b/src/lib/eolian/eolian_database.c
@@ -18,49 +18,49 @@ database_object_add(Eolian_Unit *unit, const Eolian_Object *obj)
((Eina_List *)eina_hash_find(unit->state->staging.objects_f, obj->file), obj));
}
-EAPI Eolian_Object_Type
+EOLIAN_API Eolian_Object_Type
eolian_object_type_get(const Eolian_Object *obj)
{
if (!obj) return EOLIAN_OBJECT_UNKNOWN;
return obj->type;
}
-EAPI const Eolian_Unit *
+EOLIAN_API const Eolian_Unit *
eolian_object_unit_get(const Eolian_Object *obj)
{
if (!obj) return NULL;
return obj->unit;
}
-EAPI const char *
+EOLIAN_API const char *
eolian_object_file_get(const Eolian_Object *obj)
{
if (!obj) return NULL;
return obj->file;
}
-EAPI int
+EOLIAN_API int
eolian_object_line_get(const Eolian_Object *obj)
{
if (!obj) return 0;
return obj->line;
}
-EAPI int
+EOLIAN_API int
eolian_object_column_get(const Eolian_Object *obj)
{
if (!obj) return 0;
return obj->column;
}
-EAPI const char *
+EOLIAN_API const char *
eolian_object_name_get(const Eolian_Object *obj)
{
if (!obj) return NULL;
return obj->name;
}
-EAPI const char *
+EOLIAN_API const char *
eolian_object_c_name_get(const Eolian_Object *obj)
{
if (!obj) return NULL;
@@ -95,7 +95,7 @@ _nmsp_container_get(Eina_Iterator *it EINA_UNUSED)
return NULL;
}
-EAPI const char *
+EOLIAN_API const char *
eolian_object_short_name_get(const Eolian_Object *obj)
{
if (!obj || !obj->name) return NULL;
@@ -105,7 +105,7 @@ eolian_object_short_name_get(const Eolian_Object *obj)
return obj->name;
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_object_namespaces_get(const Eolian_Object *obj)
{
if (!obj || !obj->name || !strchr(obj->name, '.')) return NULL;
@@ -126,7 +126,7 @@ eolian_object_namespaces_get(const Eolian_Object *obj)
return &it->itr;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_object_is_beta(const Eolian_Object *obj)
{
if (!obj) return EINA_FALSE;
@@ -143,28 +143,28 @@ void database_doc_del(Eolian_Documentation *doc)
free(doc);
}
-EAPI const char *
+EOLIAN_API const char *
eolian_documentation_summary_get(const Eolian_Documentation *doc)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(doc, NULL);
return doc->summary;
}
-EAPI const char *
+EOLIAN_API const char *
eolian_documentation_description_get(const Eolian_Documentation *doc)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(doc, NULL);
return doc->description;
}
-EAPI const char *
+EOLIAN_API const char *
eolian_documentation_since_get(const Eolian_Documentation *doc)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(doc, NULL);
return doc->since;
}
-EAPI Eina_List *
+EOLIAN_API Eina_List *
eolian_documentation_string_split(const char *doc)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(doc, NULL);
@@ -259,7 +259,7 @@ _get_ref_token(const char *doc, const char **doc_end)
return EOLIAN_DOC_TOKEN_REF;
}
-EAPI const char *
+EOLIAN_API const char *
eolian_documentation_tokenize(const char *doc, Eolian_Doc_Token *ret)
{
/* token is used for statekeeping, so force it */
@@ -393,7 +393,7 @@ mloop:
return ret->text_end;
}
-EAPI void
+EOLIAN_API void
eolian_doc_token_init(Eolian_Doc_Token *tok)
{
if (!tok)
@@ -402,14 +402,14 @@ eolian_doc_token_init(Eolian_Doc_Token *tok)
tok->text = tok->text_end = NULL;
}
-EAPI Eolian_Doc_Token_Type
+EOLIAN_API Eolian_Doc_Token_Type
eolian_doc_token_type_get(const Eolian_Doc_Token *tok)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tok, EOLIAN_DOC_TOKEN_UNKNOWN);
return tok->type;
}
-EAPI char *
+EOLIAN_API char *
eolian_doc_token_text_get(const Eolian_Doc_Token *tok)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(tok, NULL);
@@ -574,7 +574,7 @@ database_doc_token_ref_resolve(const Eolian_Doc_Token *tok,
return EOLIAN_OBJECT_FUNCTION;
}
-EAPI Eolian_Object_Type
+EOLIAN_API Eolian_Object_Type
eolian_doc_token_ref_resolve(const Eolian_Doc_Token *tok, const Eolian_State *state,
const Eolian_Object **data, const Eolian_Object **data2)
{
@@ -704,7 +704,7 @@ _default_error_cb(const Eolian_Object *obj, const char *msg, void *data EINA_UNU
_eolian_log(msg);
}
-EAPI Eolian_State *
+EOLIAN_API Eolian_State *
eolian_state_new(void)
{
Eolian_State *state = calloc(1, sizeof(Eolian_State));
@@ -733,7 +733,7 @@ eolian_state_new(void)
return state;
}
-EAPI void
+EOLIAN_API void
eolian_state_free(Eolian_State *state)
{
if (!state)
@@ -750,7 +750,7 @@ eolian_state_free(Eolian_State *state)
free(state);
}
-EAPI Eolian_Panic_Cb
+EOLIAN_API Eolian_Panic_Cb
eolian_state_panic_cb_set(Eolian_State *state, Eolian_Panic_Cb cb)
{
Eolian_Panic_Cb old_cb = state->panic;
@@ -758,7 +758,7 @@ eolian_state_panic_cb_set(Eolian_State *state, Eolian_Panic_Cb cb)
return old_cb;
}
-EAPI Eolian_Error_Cb
+EOLIAN_API Eolian_Error_Cb
eolian_state_error_cb_set(Eolian_State *state, Eolian_Error_Cb cb)
{
Eolian_Error_Cb old_cb = state->error;
@@ -766,7 +766,7 @@ eolian_state_error_cb_set(Eolian_State *state, Eolian_Error_Cb cb)
return old_cb;
}
-EAPI void *
+EOLIAN_API void *
eolian_state_error_data_set(Eolian_State *state, void *data)
{
void *old_data = state->error_data;
@@ -822,7 +822,7 @@ _scan_cb(const char *name, const char *path, void *data)
eina_hash_add(fh, name, newpath);
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_state_directory_add(Eolian_State *state, const char *dir)
{
if (!dir || !state) return EINA_FALSE;
@@ -830,7 +830,7 @@ eolian_state_directory_add(Eolian_State *state, const char *dir)
return eina_file_dir_list(dir, EINA_TRUE, _scan_cb, &sst) && sst.succ;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_state_system_directory_add(Eolian_State *state)
{
Eina_Bool ret;
@@ -842,28 +842,28 @@ eolian_state_system_directory_add(Eolian_State *state)
return ret;
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_state_eot_files_get(const Eolian_State *state)
{
if (!state) return NULL;
return eina_hash_iterator_key_new(state->filenames_eot);
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_state_eo_files_get(const Eolian_State *state)
{
if (!state) return NULL;
return eina_hash_iterator_key_new(state->filenames_eo);
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_state_eot_file_paths_get(const Eolian_State *state)
{
if (!state) return NULL;
return eina_hash_iterator_data_new(state->filenames_eot);
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_state_eo_file_paths_get(const Eolian_State *state)
{
if (!state) return NULL;
@@ -1074,7 +1074,7 @@ _merge_staging(Eolian_State *state)
_state_clean(state);
}
-EAPI const Eolian_Unit *
+EOLIAN_API const Eolian_Unit *
eolian_state_file_parse(Eolian_State *state, const char *filename)
{
if (!state)
@@ -1093,7 +1093,7 @@ eolian_state_file_parse(Eolian_State *state, const char *filename)
return ret;
}
-EAPI const Eolian_Unit *
+EOLIAN_API const Eolian_Unit *
eolian_state_file_path_parse(Eolian_State *state, const char *filepath)
{
const Eolian_Unit *unit;
@@ -1146,7 +1146,7 @@ static Eina_Bool _tfile_parse(const Eina_Hash *hash EINA_UNUSED, const void *key
return pd->ret;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_state_all_eot_files_parse(Eolian_State *state)
{
Parse_Data pd = { state, EINA_TRUE };
@@ -1177,7 +1177,7 @@ static Eina_Bool _file_parse(const Eina_Hash *hash EINA_UNUSED, const void *key
return pd->ret;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_state_all_eo_files_parse(Eolian_State *state)
{
Parse_Data pd = { state, EINA_TRUE };
@@ -1196,13 +1196,13 @@ eolian_state_all_eo_files_parse(Eolian_State *state)
return pd.ret;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_state_check(const Eolian_State *state)
{
return database_check(state);
}
-EAPI const Eolian_Unit *
+EOLIAN_API const Eolian_Unit *
eolian_state_unit_by_file_get(const Eolian_State *state, const char *file_name)
{
if (!state) return NULL;
@@ -1212,14 +1212,14 @@ eolian_state_unit_by_file_get(const Eolian_State *state, const char *file_name)
return unit;
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_state_units_get(const Eolian_State *state)
{
if (!state) return NULL;
return eina_hash_iterator_data_new(state->main.units);
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_state_objects_by_file_get(const Eolian_State *state, const char *file_name)
{
if (!state) return NULL;
@@ -1230,7 +1230,7 @@ eolian_state_objects_by_file_get(const Eolian_State *state, const char *file_nam
return eina_list_iterator_new(l);
}
-EAPI const Eolian_Class *
+EOLIAN_API const Eolian_Class *
eolian_state_class_by_file_get(const Eolian_State *state, const char *file_name)
{
if (!state) return NULL;
@@ -1240,7 +1240,7 @@ eolian_state_class_by_file_get(const Eolian_State *state, const char *file_name)
return cl;
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_state_constants_by_file_get(const Eolian_State *state, const char *file_name)
{
if (!state) return NULL;
@@ -1251,7 +1251,7 @@ eolian_state_constants_by_file_get(const Eolian_State *state, const char *file_n
return eina_list_iterator_new(l);
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_state_errors_by_file_get(const Eolian_State *state, const char *file_name)
{
if (!state) return NULL;
@@ -1262,7 +1262,7 @@ eolian_state_errors_by_file_get(const Eolian_State *state, const char *file_name
return eina_list_iterator_new(l);
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_state_aliases_by_file_get(const Eolian_State *state, const char *file_name)
{
if (!state) return NULL;
@@ -1273,7 +1273,7 @@ eolian_state_aliases_by_file_get(const Eolian_State *state, const char *file_nam
return eina_list_iterator_new(l);
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_state_structs_by_file_get(const Eolian_State *state, const char *file_name)
{
if (!state) return NULL;
@@ -1284,7 +1284,7 @@ eolian_state_structs_by_file_get(const Eolian_State *state, const char *file_nam
return eina_list_iterator_new(l);
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_state_enums_by_file_get(const Eolian_State *state, const char *file_name)
{
if (!state) return NULL;
@@ -1295,28 +1295,28 @@ eolian_state_enums_by_file_get(const Eolian_State *state, const char *file_name)
return eina_list_iterator_new(l);
}
-EAPI const Eolian_State *
+EOLIAN_API const Eolian_State *
eolian_unit_state_get(const Eolian_Unit *unit)
{
if (!unit) return NULL;
return unit->state;
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_unit_children_get(const Eolian_Unit *unit)
{
if (!unit) return NULL;
return eina_hash_iterator_data_new(unit->children);
}
-EAPI const char *
+EOLIAN_API const char *
eolian_unit_file_get(const Eolian_Unit *unit)
{
if (!unit) return NULL;
return unit->file;
}
-EAPI const char *
+EOLIAN_API const char *
eolian_unit_file_path_get(const Eolian_Unit *unit)
{
if (!unit || !unit->file) return NULL;
@@ -1326,14 +1326,14 @@ eolian_unit_file_path_get(const Eolian_Unit *unit)
: unit->state->filenames_eot, unit->file);
}
-EAPI unsigned short
+EOLIAN_API unsigned short
eolian_unit_version_get(const Eolian_Unit *unit)
{
if (!unit) return 0;
return unit->version;
}
-EAPI const Eolian_Object *
+EOLIAN_API const Eolian_Object *
eolian_unit_object_by_name_get(const Eolian_Unit *unit, const char *name)
{
if (!unit) return NULL;
@@ -1343,12 +1343,12 @@ eolian_unit_object_by_name_get(const Eolian_Unit *unit, const char *name)
return o;
}
-EAPI Eina_Iterator *eolian_unit_objects_get(const Eolian_Unit *unit)
+EOLIAN_API Eina_Iterator *eolian_unit_objects_get(const Eolian_Unit *unit)
{
return (unit ? eina_hash_iterator_data_new(unit->objects) : NULL);
}
-EAPI const Eolian_Class *
+EOLIAN_API const Eolian_Class *
eolian_unit_class_by_name_get(const Eolian_Unit *unit, const char *class_name)
{
if (!unit) return NULL;
@@ -1358,13 +1358,13 @@ eolian_unit_class_by_name_get(const Eolian_Unit *unit, const char *class_name)
return cl;
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_unit_classes_get(const Eolian_Unit *unit)
{
return (unit ? eina_hash_iterator_data_new(unit->classes) : NULL);
}
-EAPI const Eolian_Constant *
+EOLIAN_API const Eolian_Constant *
eolian_unit_constant_by_name_get(const Eolian_Unit *unit, const char *name)
{
if (!unit) return NULL;
@@ -1374,7 +1374,7 @@ eolian_unit_constant_by_name_get(const Eolian_Unit *unit, const char *name)
return v;
}
-EAPI const Eolian_Error *
+EOLIAN_API const Eolian_Error *
eolian_unit_error_by_name_get(const Eolian_Unit *unit, const char *name)
{
if (!unit) return NULL;
@@ -1384,19 +1384,19 @@ eolian_unit_error_by_name_get(const Eolian_Unit *unit, const char *name)
return v;
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_unit_constants_get(const Eolian_Unit *unit)
{
return (unit ? eina_hash_iterator_data_new(unit->constants) : NULL);
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_unit_errors_get(const Eolian_Unit *unit)
{
return (unit ? eina_hash_iterator_data_new(unit->errors) : NULL);
}
-EAPI const Eolian_Typedecl *
+EOLIAN_API const Eolian_Typedecl *
eolian_unit_alias_by_name_get(const Eolian_Unit *unit, const char *name)
{
if (!unit) return NULL;
@@ -1407,7 +1407,7 @@ eolian_unit_alias_by_name_get(const Eolian_Unit *unit, const char *name)
return tp;
}
-EAPI const Eolian_Typedecl *
+EOLIAN_API const Eolian_Typedecl *
eolian_unit_struct_by_name_get(const Eolian_Unit *unit, const char *name)
{
if (!unit) return NULL;
@@ -1418,7 +1418,7 @@ eolian_unit_struct_by_name_get(const Eolian_Unit *unit, const char *name)
return tp;
}
-EAPI const Eolian_Typedecl *
+EOLIAN_API const Eolian_Typedecl *
eolian_unit_enum_by_name_get(const Eolian_Unit *unit, const char *name)
{
if (!unit) return NULL;
@@ -1429,39 +1429,39 @@ eolian_unit_enum_by_name_get(const Eolian_Unit *unit, const char *name)
return tp;
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_unit_aliases_get(const Eolian_Unit *unit)
{
return (unit ? eina_hash_iterator_data_new(unit->aliases) : NULL);
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_unit_structs_get(const Eolian_Unit *unit)
{
return (unit ? eina_hash_iterator_data_new(unit->structs) : NULL);
}
-EAPI Eina_Iterator *
+EOLIAN_API Eina_Iterator *
eolian_unit_enums_get(const Eolian_Unit *unit)
{
return (unit ? eina_hash_iterator_data_new(unit->enums) : NULL);
}
-EAPI const char *
+EOLIAN_API const char *
eolian_error_message_get(const Eolian_Error *err)
{
if (!err) return NULL;
return err->msg;
}
-EAPI Eina_Bool
+EOLIAN_API Eina_Bool
eolian_error_is_extern(const Eolian_Error *err)
{
if (!err) return EINA_FALSE;
return err->is_extern;
}
-EAPI const Eolian_Documentation *
+EOLIAN_API const Eolian_Documentation *
eolian_error_documentation_get(const Eolian_Error *err)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(err, NULL);
diff --git a/src/lib/eolian/eolian_priv.h b/src/lib/eolian/eolian_priv.h
index a49e50e7f2..0143183ca1 100644
--- a/src/lib/eolian/eolian_priv.h
+++ b/src/lib/eolian/eolian_priv.h
@@ -1,6 +1,7 @@
#ifndef EOLIAN_PRIV_H
#define EOLIAN_PRIV_H
+#include "eolian_api.h"
#include <Eina.h>
#include <stdio.h>
#include <stdarg.h>
diff --git a/src/lib/eolian/meson.build b/src/lib/eolian/meson.build
index 083d5cdaa5..0099c18192 100644
--- a/src/lib/eolian/meson.build
+++ b/src/lib/eolian/meson.build
@@ -39,7 +39,7 @@ eolian_lib = library('eolian', eolian_src,
include_directories: config_dir,
dependencies: eina,
install: true,
- c_args : package_c_args,
+ c_args : [package_c_args, '-DEOLIAN_BUILD'],
version : meson.project_version()
)
@@ -52,6 +52,7 @@ eolian = declare_dependency(
eolian_include_dir = join_paths(dir_data, 'eolian', 'include')
eolian_header_src = [
+'eolian_api.h',
'Eolian.h',
'Eolian_Aux.h'
]