2014-02-11 05:42:59 -08:00
|
|
|
#ifndef EOLIAN_H
|
|
|
|
#define EOLIAN_H
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <Eina.h>
|
2014-02-16 01:41:38 -08:00
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
# include <config.h>
|
|
|
|
#endif
|
|
|
|
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/* 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;
|
|
|
|
|
2014-02-16 01:41:38 -08:00
|
|
|
#ifdef EFL_BETA_API_SUPPORT
|
|
|
|
|
2014-02-11 05:42:59 -08:00
|
|
|
/*
|
|
|
|
* @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
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI Eina_Bool eolian_eo_file_parse(const char *filename);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @brief Init Eolian.
|
|
|
|
*
|
|
|
|
* @ingroup Eolian
|
|
|
|
*/
|
2014-02-16 01:41:38 -08:00
|
|
|
EAPI int eolian_init(void);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @brief Shutdown Eolian.
|
|
|
|
*
|
|
|
|
* @ingroup Eolian
|
|
|
|
*/
|
2014-02-16 01:41:38 -08:00
|
|
|
EAPI int eolian_shutdown(void);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @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
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI Eina_Bool eolian_show(const char *class_name);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @brief Returns the class type of the given class
|
|
|
|
*
|
|
|
|
* @param[in] class_name name of the class
|
|
|
|
* @return the class type
|
|
|
|
*
|
|
|
|
* @ingroup Eolian
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI Eolian_Class_Type eolian_class_type_get(const char *class_name);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @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 */
|
2014-02-16 01:41:38 -08:00
|
|
|
EAPI const Eina_List *eolian_class_names_list_get(void);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @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
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI Eina_Bool eolian_class_exists(const char *class_name);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @brief Returns the description of a class.
|
|
|
|
*
|
|
|
|
* @param[in] class_name name of the class
|
|
|
|
* @return the description of a class
|
|
|
|
*
|
|
|
|
* @ingroup Eolian
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI const char *eolian_class_description_get(const char *class_name);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @brief Returns the legacy prefix of a class
|
|
|
|
*
|
|
|
|
* @param[in] class_name name of the class
|
|
|
|
* @return the legacy prefix
|
|
|
|
*
|
|
|
|
* @ingroup Eolian
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI const char *eolian_class_legacy_prefix_get(const char *class_name);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @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
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI const Eina_List *eolian_class_inherits_list_get(const char *class_name);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @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
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI const Eina_List *eolian_class_functions_list_get(const char *class_name, Eolian_Function_Type func_type);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @brief Returns the Function Id for the default constructor.
|
|
|
|
*
|
|
|
|
* @param[in] class_name name of the class
|
|
|
|
* @return a Function Id
|
|
|
|
*
|
|
|
|
* @ingroup Eolian
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI Eolian_Function eolian_class_default_constructor_get(const char *class_name);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @brief Returns the Function Id for the default destructor.
|
|
|
|
*
|
|
|
|
* @param[in] class_name name of the class
|
|
|
|
* @return a Function Id
|
|
|
|
*
|
|
|
|
* @ingroup Eolian
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI Eolian_Function eolian_class_default_destructor_get(const char *class_name);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @brief Returns the type of a function
|
|
|
|
*
|
|
|
|
* @param[in] function_id Id of the function
|
|
|
|
* @return the function type
|
|
|
|
*
|
|
|
|
* @ingroup Eolian
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI Eolian_Function_Type eolian_function_type_get(Eolian_Function function_id);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @brief Returns the name of a function
|
|
|
|
*
|
|
|
|
* @param[in] function_id Id of the function
|
|
|
|
* @return the function name
|
|
|
|
*
|
|
|
|
* @ingroup Eolian
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI const char *eolian_function_name_get(Eolian_Function function_id);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @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
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI Eina_Bool eolian_class_function_exists(const char *classname, const char *func_name, Eolian_Function_Type f_type);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @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
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI const char *eolian_function_data_get(Eolian_Function function_id, const char *key);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @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
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI Eolian_Function_Parameter eolian_function_parameter_get(const Eolian_Function function_id, const char *param_name);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @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
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI const Eina_List *eolian_parameters_list_get(Eolian_Function function_id);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @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
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
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);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @brief Get type of a parameter
|
|
|
|
*
|
|
|
|
* @param[in] param_desc parameter handle
|
|
|
|
* @return the type of the parameter
|
|
|
|
*
|
|
|
|
* @ingroup Eolian
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI Eina_Stringshare *eolian_parameter_type_get(const Eolian_Function_Parameter param);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @brief Get name of a parameter
|
|
|
|
*
|
|
|
|
* @param[in] param_desc parameter handle
|
|
|
|
* @return the name of the parameter
|
|
|
|
*
|
|
|
|
* @ingroup Eolian
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI Eina_Stringshare *eolian_parameter_name_get(const Eolian_Function_Parameter param);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @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
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI Eina_Bool eolian_parameter_get_const_attribute_get(Eolian_Function_Parameter param_desc);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @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
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI const char *eolian_function_return_type_get(Eolian_Function function_id, Eolian_Function_Type ftype);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @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
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI Eina_Bool eolian_function_object_is_const(Eolian_Function function_id);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @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
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI Eina_Bool eolian_implement_information_get(Eolian_Implement impl,
|
2014-02-11 05:42:59 -08:00
|
|
|
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
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI const Eina_List *eolian_class_implements_list_get(const char *class_name);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @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
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI const Eina_List *eolian_class_events_list_get(const char *class_name);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* @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
|
|
|
|
*/
|
2014-02-11 06:42:47 -08:00
|
|
|
EAPI Eina_Bool eolian_class_event_information_get(Eolian_Event event, const char **event_name, const char **event_desc);
|
2014-02-11 05:42:59 -08:00
|
|
|
|
2014-02-16 01:41:38 -08:00
|
|
|
#endif
|
|
|
|
|
2014-02-11 05:42:59 -08:00
|
|
|
#ifdef __cplusplus
|
|
|
|
} // extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif
|