#ifndef EOLIAN_H #define EOLIAN_H #ifdef __cplusplus extern "C" { #endif #include #ifdef HAVE_CONFIG_H # include #endif /* Function Id used to extract information on class functions * * @ingroup Eolian */ typedef struct _Function_Id* Eolian_Function; /* Class function parameter information * * @ingroup Eolian */ typedef struct _Parameter_Desc* Eolian_Function_Parameter; /* Class implement information * * @ingroup Eolian */ typedef struct _Implement_Desc* Eolian_Implement; /* Class implement legacy information * * @ingroup Eolian */ typedef struct _Implement_Legacy_Desc* Eolian_Implement_Legacy; /* Class implement legacy parameter information * * @ingroup Eolian */ typedef struct _Implement_Legacy_Param* Eolian_Implement_Legacy_Parameter; /* Event information * * @ingroup Eolian */ typedef struct _Event_Desc* Eolian_Event; #define EOLIAN_METHOD_RETURN_TYPE "method_return_type" #define EOLIAN_PROP_GET_RETURN_TYPE "property_get_return_type" #define EOLIAN_PROP_SET_RETURN_TYPE "property_set_return_type" #define EOLIAN_RETURN_COMMENT "return_comment" #define EOLIAN_LEGACY "legacy" #define EOLIAN_LEGACY_GET "legacy_get" #define EOLIAN_LEGACY_SET "legacy_set" #define EOLIAN_COMMENT "comment" #define EOLIAN_COMMENT_SET "comment_set" #define EOLIAN_COMMENT_GET "comment_get" typedef enum { UNRESOLVED, PROPERTY_FUNC, // FIXME: bs SET, GET, METHOD_FUNC, CONSTRUCTOR, DFLT_CONSTRUCTOR, DESTRUCTOR, DFLT_DESTRUCTOR } Eolian_Function_Type; typedef enum { EOLIAN_IN_PARAM, EOLIAN_OUT_PARAM, EOLIAN_INOUT_PARAM } Eolian_Parameter_Dir; typedef enum { EOLIAN_CLASS_UNKNOWN_TYPE, EOLIAN_CLASS_REGULAR, EOLIAN_CLASS_REGULAR_NON_INSTANT, EOLIAN_CLASS_MIXIN, EOLIAN_CLASS_INTERFACE } Eolian_Class_Type; #ifdef EFL_BETA_API_SUPPORT /* * @brief Parse a given .eo file and fill the database. * * During parsing, the class described into the .eo file is created with * all the information related to this class. * * @param[in] filename Name of the file to parse. * * @ingroup Eolian */ EAPI Eina_Bool eolian_eo_file_parse(const char *filename); /* * @brief Init Eolian. * * @ingroup Eolian */ EAPI int eolian_init(void); /* * @brief Shutdown Eolian. * * @ingroup Eolian */ EAPI int eolian_shutdown(void); /* * @brief Show information about a given class. * * If class_name is NULL, this function will print information of * all the classes stored into the database. * * @param[in] class_name the class to show * * @ingroup Eolian */ EAPI Eina_Bool eolian_show(const char *class_name); /* * @brief Returns the class type of the given class * * @param[in] class_name name of the class * @return the class type * * @ingroup Eolian */ EAPI Eolian_Class_Type eolian_class_type_get(const char *class_name); /* * @brief Returns the names list of all the classes stored into the database. * * @return the list * * @ingroup Eolian */ /* Returns the list of class names of the database */ EAPI const Eina_List *eolian_class_names_list_get(void); /* * @brief Indicates if class exists in the database. * * @param[in] class_name name of the class * @return EINA_TRUE if exists, EINA_FALSE otherwise * * @ingroup Eolian */ EAPI Eina_Bool eolian_class_exists(const char *class_name); /* * @brief Returns the description of a class. * * @param[in] class_name name of the class * @return the description of a class * * @ingroup Eolian */ EAPI const char *eolian_class_description_get(const char *class_name); /* * @brief Returns the legacy prefix of a class * * @param[in] class_name name of the class * @return the legacy prefix * * @ingroup Eolian */ EAPI const char *eolian_class_legacy_prefix_get(const char *class_name); /* * @brief Returns the names list of the inherit classes of a class * * @param[in] class_name name of the class * @return the list * * @ingroup Eolian */ EAPI const Eina_List *eolian_class_inherits_list_get(const char *class_name); /* * @brief Returns a list of functions of a class. * * @param[in] class_name name of the class * @param[in] func_type type of the functions to insert into the list. * @return the list of Eolian_Function * * @ingroup Eolian */ EAPI const Eina_List *eolian_class_functions_list_get(const char *class_name, Eolian_Function_Type func_type); /* * @brief Returns the Function Id for the default constructor. * * @param[in] class_name name of the class * @return a Function Id * * @ingroup Eolian */ EAPI Eolian_Function eolian_class_default_constructor_get(const char *class_name); /* * @brief Returns the Function Id for the default destructor. * * @param[in] class_name name of the class * @return a Function Id * * @ingroup Eolian */ EAPI Eolian_Function eolian_class_default_destructor_get(const char *class_name); /* * @brief Returns the type of a function * * @param[in] function_id Id of the function * @return the function type * * @ingroup Eolian */ EAPI Eolian_Function_Type eolian_function_type_get(Eolian_Function function_id); /* * @brief Returns the name of a function * * @param[in] function_id Id of the function * @return the function name * * @ingroup Eolian */ EAPI const char *eolian_function_name_get(Eolian_Function function_id); /* * @brief Indicates if a function of a certain type exists in a class. * * @param[in] class_name name of the class * @param[in] func_name name of the function * @param[in] f_type type of the function * @return EINA_TRUE if exists, EINA_FALSE otherwise * * @ingroup Eolian */ EAPI Eina_Bool eolian_class_function_exists(const char *classname, const char *func_name, Eolian_Function_Type f_type); /* * @brief Returns a specific data for a function. * * @param[in] function_id Id of the function * @param[in] key key to access the data * @return the data. * * @ingroup Eolian */ EAPI const char *eolian_function_data_get(Eolian_Function function_id, const char *key); /* * @brief Returns a specific description for a function. * * @param[in] function_id Id of the function * @param[in] key key to access the description * @return the description. * * @ingroup Eolian */ #define eolian_function_description_get(function_id, key) eolian_function_data_get((function_id), (key)) /* * @brief Returns a parameter of a function pointed by its id. * * @param[in] function_id Id of the function * @param[in] param_name Name of the parameter * @return a handle to this parameter. * * @ingroup Eolian */ EAPI Eolian_Function_Parameter eolian_function_parameter_get(const Eolian_Function function_id, const char *param_name); /* * @brief Returns a list of parameter handles for a function pointed by its id. * * @param[in] function_id Id of the function * @return a handle to this parameter. * * @ingroup Eolian */ EAPI const Eina_List *eolian_parameters_list_get(Eolian_Function function_id); /* * @brief Get information about a function parameter * * @param[in] param_desc parameter handle * @param[out] param_dir in/out/inout * @param[out] type type of the parameter * @param[out] name name of the parameter * @param[out] description description of the parameter * * @ingroup Eolian */ EAPI void eolian_parameter_information_get(Eolian_Function_Parameter param_desc, Eolian_Parameter_Dir *param_dir, const char **type, const char **name, const char **description); /* * @brief Get type of a parameter * * @param[in] param_desc parameter handle * @return the type of the parameter * * @ingroup Eolian */ EAPI Eina_Stringshare *eolian_parameter_type_get(const Eolian_Function_Parameter param); /* * @brief Get name of a parameter * * @param[in] param_desc parameter handle * @return the name of the parameter * * @ingroup Eolian */ EAPI Eina_Stringshare *eolian_parameter_name_get(const Eolian_Function_Parameter param); /* * @brief Indicates if a parameter has a const attribute. * * This function is relevant for properties, to know if a parameter is a const * parameter in the get operation. * * @param[in] param_desc parameter handle * @return EINA_TRUE if const in get, EINA_FALSE otherwise * * @ingroup Eolian */ EAPI Eina_Bool eolian_parameter_get_const_attribute_get(Eolian_Function_Parameter param_desc); /* * @brief Get the return type of a function. * * @param[in] function_id id of the function * @param[in] ftype type of the function * @return the return type of the function * * The type of the function is needed because a given function can represent a * property, that can be set and get functions. * * @ingroup Eolian */ EAPI const char *eolian_function_return_type_get(Eolian_Function function_id, Eolian_Function_Type ftype); /* * @brief Indicates if a function object is const. * * @param[in] function_id id of the function * @return EINA_TRUE if the object is const, EINA_FALSE otherwise * * @ingroup Eolian */ EAPI Eina_Bool eolian_function_object_is_const(Eolian_Function function_id); /* * @brief Get information about an overriding function (implement). * * @param[in] impl handle of the implement * @param[out] class_name name of the class to override * @param[out] func_name name of the function to override * @param[out] type type of the function to override * @return EINA_TRUE on success, EINA_FALSE otherwise. * * @ingroup Eolian */ EAPI Eina_Bool eolian_implement_information_get(Eolian_Implement impl, const char **class_name, const char **func_name, Eolian_Function_Type *type); /* * @brief Get the list of overriding functions defined in a class. * * @param[in] class_name name of the class. * @return a list of Eolian_Implement handles * * @ingroup Eolian */ EAPI const Eina_List *eolian_class_implements_list_get(const char *class_name); /* * @brief Get the list of events defined in a class. * * @param[in] class_name name of the class. * @return a list of Eolian_Event handles * * @ingroup Eolian */ EAPI const Eina_List *eolian_class_events_list_get(const char *class_name); /* * @brief Get information about an event. * * @param[in] event handle of the event * @param[out] event_name name of the event * @param[out] event_desc description of the event * @return EINA_TRUE on success, EINA_FALSE otherwise. * * @ingroup Eolian */ EAPI Eina_Bool eolian_class_event_information_get(Eolian_Event event, const char **event_name, const char **event_desc); #endif #ifdef __cplusplus } // extern "C" { #endif #endif