Eolian

## Data Structures

union | Eolian_Value_Union
struct | _Eolian_Value
struct | _Eolian_Doc_Token

## Macros

#define | EOLIAN_FILE_FORMAT_VERSION 1
#define | EOLIAN_CAST(type, expr)
#define | EOLIAN_OBJECT(expr)
#define | EOLIAN_UNIT(expr)

## Typedefs

typedef struct _Eolian_State | Eolian_State
typedef struct _Eolian_Object | Eolian_Object
typedef struct _Eolian_Class | Eolian_Class
typedef struct _Eolian_Function | Eolian_Function
typedef struct _Eolian_Part | Eolian_Part
typedef struct _Eolian_Type | Eolian_Type
typedef struct _Eolian_Typedecl | Eolian_Typedecl
typedef struct _Eolian_Function_Parameter | Eolian_Function_Parameter
typedef struct _Eolian_Implement | Eolian_Implement
typedef struct _Eolian_Constructor | Eolian_Constructor
typedef struct _Eolian_Event | Eolian_Event
typedef struct _Eolian_Expression | Eolian_Expression
typedef struct _Eolian_Constant | Eolian_Constant
typedef struct _Eolian_Error | Eolian_Error
typedef struct _Eolian_Struct_Type_Field | Eolian_Struct_Type_Field
typedef struct _Eolian_Enum_Type_Field | Eolian_Enum_Type_Field
typedef struct _Eolian_Documentation | Eolian_Documentation
typedef struct _Eolian_Unit | Eolian_Unit
typedef void(* | Eolian_Panic_Cb) (const Eolian_State *state, Eina_Stringshare *msg)
typedef void(* | Eolian_Error_Cb) (const Eolian_Object *obj, const char *msg, void *data)
typedef struct _Eolian_Value | Eolian_Value
typedef struct _Eolian_Doc_Token | Eolian_Doc_Token

## Enumerations

enum

Eolian_Object_Type {
EOLIAN_OBJECT_UNKNOWN = 0 ,
EOLIAN_OBJECT_CLASS ,
EOLIAN_OBJECT_TYPEDECL ,
EOLIAN_OBJECT_STRUCT_FIELD ,
EOLIAN_OBJECT_ENUM_FIELD ,
EOLIAN_OBJECT_TYPE ,
EOLIAN_OBJECT_CONSTANT ,
EOLIAN_OBJECT_EXPRESSION ,
EOLIAN_OBJECT_FUNCTION ,
EOLIAN_OBJECT_FUNCTION_PARAMETER ,
EOLIAN_OBJECT_EVENT ,
EOLIAN_OBJECT_PART ,
EOLIAN_OBJECT_IMPLEMENT ,
EOLIAN_OBJECT_CONSTRUCTOR ,
EOLIAN_OBJECT_DOCUMENTATION ,
EOLIAN_OBJECT_ERROR
}

enum | Eolian_Function_Type { EOLIAN_UNRESOLVED = 0 , EOLIAN_PROPERTY , EOLIAN_PROP_SET , EOLIAN_PROP_GET , EOLIAN_METHOD , EOLIAN_FUNCTION_POINTER }
enum | Eolian_Parameter_Direction { EOLIAN_PARAMETER_UNKNOWN = 0 , EOLIAN_PARAMETER_IN , EOLIAN_PARAMETER_OUT , EOLIAN_PARAMETER_INOUT }
enum | Eolian_Class_Type { EOLIAN_CLASS_UNKNOWN_TYPE = 0 , EOLIAN_CLASS_REGULAR , EOLIAN_CLASS_ABSTRACT , EOLIAN_CLASS_MIXIN , EOLIAN_CLASS_INTERFACE }
enum | Eolian_Object_Scope { EOLIAN_SCOPE_UNKNOWN = 0 , EOLIAN_SCOPE_PUBLIC , EOLIAN_SCOPE_PRIVATE , EOLIAN_SCOPE_PROTECTED }
enum | Eolian_Typedecl_Type { EOLIAN_TYPEDECL_UNKNOWN = 0 , EOLIAN_TYPEDECL_STRUCT , EOLIAN_TYPEDECL_STRUCT_OPAQUE , EOLIAN_TYPEDECL_ENUM , EOLIAN_TYPEDECL_ALIAS , EOLIAN_TYPEDECL_FUNCTION_POINTER }
enum | Eolian_Type_Type { EOLIAN_TYPE_UNKNOWN_TYPE = 0 , EOLIAN_TYPE_VOID , EOLIAN_TYPE_REGULAR , EOLIAN_TYPE_CLASS , EOLIAN_TYPE_ERROR , EOLIAN_TYPE_UNDEFINED }

enum

Eolian_Type_Builtin_Type {
EOLIAN_TYPE_BUILTIN_INVALID = 0 ,
EOLIAN_TYPE_BUILTIN_BYTE ,
EOLIAN_TYPE_BUILTIN_UBYTE ,
EOLIAN_TYPE_BUILTIN_CHAR ,
EOLIAN_TYPE_BUILTIN_SHORT ,
EOLIAN_TYPE_BUILTIN_USHORT ,
EOLIAN_TYPE_BUILTIN_INT ,
EOLIAN_TYPE_BUILTIN_UINT ,
EOLIAN_TYPE_BUILTIN_LONG ,
EOLIAN_TYPE_BUILTIN_ULONG ,
EOLIAN_TYPE_BUILTIN_LLONG ,
EOLIAN_TYPE_BUILTIN_ULLONG ,
EOLIAN_TYPE_BUILTIN_INT8 ,
EOLIAN_TYPE_BUILTIN_UINT8 ,
EOLIAN_TYPE_BUILTIN_INT16 ,
EOLIAN_TYPE_BUILTIN_UINT16 ,
EOLIAN_TYPE_BUILTIN_INT32 ,
EOLIAN_TYPE_BUILTIN_UINT32 ,
EOLIAN_TYPE_BUILTIN_INT64 ,
EOLIAN_TYPE_BUILTIN_UINT64 ,
EOLIAN_TYPE_BUILTIN_INT128 ,
EOLIAN_TYPE_BUILTIN_UINT128 ,
EOLIAN_TYPE_BUILTIN_SIZE ,
EOLIAN_TYPE_BUILTIN_SSIZE ,
EOLIAN_TYPE_BUILTIN_INTPTR ,
EOLIAN_TYPE_BUILTIN_UINTPTR ,
EOLIAN_TYPE_BUILTIN_PTRDIFF ,
EOLIAN_TYPE_BUILTIN_TIME ,
EOLIAN_TYPE_BUILTIN_FLOAT ,
EOLIAN_TYPE_BUILTIN_DOUBLE ,
EOLIAN_TYPE_BUILTIN_BOOL ,
EOLIAN_TYPE_BUILTIN_SLICE ,
EOLIAN_TYPE_BUILTIN_RW_SLICE ,
EOLIAN_TYPE_BUILTIN_VOID ,
EOLIAN_TYPE_BUILTIN_ACCESSOR ,
EOLIAN_TYPE_BUILTIN_ARRAY ,
EOLIAN_TYPE_BUILTIN_FUTURE ,
EOLIAN_TYPE_BUILTIN_ITERATOR ,
EOLIAN_TYPE_BUILTIN_LIST ,
EOLIAN_TYPE_BUILTIN_ANY_VALUE ,
EOLIAN_TYPE_BUILTIN_ANY_VALUE_REF ,
EOLIAN_TYPE_BUILTIN_BINBUF ,
EOLIAN_TYPE_BUILTIN_EVENT ,
EOLIAN_TYPE_BUILTIN_MSTRING ,
EOLIAN_TYPE_BUILTIN_STRING ,
EOLIAN_TYPE_BUILTIN_STRINGSHARE ,
EOLIAN_TYPE_BUILTIN_STRBUF ,
EOLIAN_TYPE_BUILTIN_HASH ,
EOLIAN_TYPE_BUILTIN_VOID_PTR
}

enum | Eolian_Expression_Type { EOLIAN_EXPR_UNKNOWN = 0 , EOLIAN_EXPR_INT , EOLIAN_EXPR_UINT , EOLIAN_EXPR_LONG , EOLIAN_EXPR_ULONG , EOLIAN_EXPR_LLONG , EOLIAN_EXPR_ULLONG , EOLIAN_EXPR_FLOAT , EOLIAN_EXPR_DOUBLE , EOLIAN_EXPR_STRING , EOLIAN_EXPR_CHAR , EOLIAN_EXPR_NULL , EOLIAN_EXPR_BOOL , EOLIAN_EXPR_NAME , EOLIAN_EXPR_UNARY , EOLIAN_EXPR_BINARY }

enum

Eolian_Expression_Mask {
EOLIAN_MASK_SINT = 1 << 0 ,
EOLIAN_MASK_UINT = 1 << 1 ,
EOLIAN_MASK_INT = EOLIAN_MASK_SINT | EOLIAN_MASK_UINT ,
EOLIAN_MASK_FLOAT = 1 << 2 ,
EOLIAN_MASK_BOOL = 1 << 3 ,
EOLIAN_MASK_STRING = 1 << 4 ,
EOLIAN_MASK_CHAR = 1 << 5 ,
EOLIAN_MASK_NULL = 1 << 6 ,
EOLIAN_MASK_SIGNED = EOLIAN_MASK_SINT | EOLIAN_MASK_FLOAT ,
EOLIAN_MASK_NUMBER = EOLIAN_MASK_INT | EOLIAN_MASK_FLOAT ,
EOLIAN_MASK_ALL
}

enum | Eolian_Binary_Operator { EOLIAN_BINOP_INVALID = 0 , EOLIAN_BINOP_ADD , EOLIAN_BINOP_SUB , EOLIAN_BINOP_MUL , EOLIAN_BINOP_DIV , EOLIAN_BINOP_MOD , EOLIAN_BINOP_EQ , EOLIAN_BINOP_NQ , EOLIAN_BINOP_GT , EOLIAN_BINOP_LT , EOLIAN_BINOP_GE , EOLIAN_BINOP_LE , EOLIAN_BINOP_AND , EOLIAN_BINOP_OR , EOLIAN_BINOP_BAND , EOLIAN_BINOP_BOR , EOLIAN_BINOP_BXOR , EOLIAN_BINOP_LSH , EOLIAN_BINOP_RSH }
enum | Eolian_Unary_Operator { EOLIAN_UNOP_INVALID = 0 , EOLIAN_UNOP_UNM , EOLIAN_UNOP_UNP , EOLIAN_UNOP_NOT , EOLIAN_UNOP_BNOT }
enum | Eolian_Doc_Token_Type { EOLIAN_DOC_TOKEN_UNKNOWN = 0 , EOLIAN_DOC_TOKEN_TEXT , EOLIAN_DOC_TOKEN_REF , EOLIAN_DOC_TOKEN_MARK_NOTE , EOLIAN_DOC_TOKEN_MARK_WARNING , EOLIAN_DOC_TOKEN_MARK_REMARK , EOLIAN_DOC_TOKEN_MARK_TODO , EOLIAN_DOC_TOKEN_MARKUP_MONOSPACE }

## Functions

EOLIAN_API int | eolian_init (void)
EOLIAN_API int | eolian_shutdown (void)
EOLIAN_API unsigned short | eolian_file_format_version_get (void)
EOLIAN_API Eolian_State * | eolian_state_new (void)
EOLIAN_API void | eolian_state_free (Eolian_State *state)
EOLIAN_API Eolian_Panic_Cb | eolian_state_panic_cb_set (Eolian_State *state, Eolian_Panic_Cb cb)
EOLIAN_API Eolian_Error_Cb | eolian_state_error_cb_set (Eolian_State *state, Eolian_Error_Cb cb)
EOLIAN_API void * | eolian_state_error_data_set (Eolian_State *state, void *data)
EOLIAN_API Eolian_Object_Type | eolian_object_type_get (const Eolian_Object *obj)
EOLIAN_API const Eolian_Unit * | eolian_object_unit_get (const Eolian_Object *obj)
EOLIAN_API const char * | eolian_object_file_get (const Eolian_Object *obj)
EOLIAN_API int | eolian_object_line_get (const Eolian_Object *obj)
EOLIAN_API int | eolian_object_column_get (const Eolian_Object *obj)
EOLIAN_API const char * | eolian_object_name_get (const Eolian_Object *obj)
EOLIAN_API const char * | eolian_object_c_name_get (const Eolian_Object *obj)
EOLIAN_API const char * | eolian_object_short_name_get (const Eolian_Object *obj)
EOLIAN_API Eina_Iterator * | eolian_object_namespaces_get (const Eolian_Object *obj)
EOLIAN_API Eina_Bool | eolian_object_is_beta (const Eolian_Object *obj)
EOLIAN_API Eina_Bool | eolian_state_directory_add (Eolian_State *state, const char *dir)
EOLIAN_API Eina_Bool | eolian_state_system_directory_add (Eolian_State *state)
EOLIAN_API Eina_Iterator * | eolian_state_eo_file_paths_get (const Eolian_State *state)
EOLIAN_API Eina_Iterator * | eolian_state_eot_file_paths_get (const Eolian_State *state)
EOLIAN_API Eina_Iterator * | eolian_state_eo_files_get (const Eolian_State *state)
EOLIAN_API Eina_Iterator * | eolian_state_eot_files_get (const Eolian_State *state)
EOLIAN_API const Eolian_Unit * | eolian_state_file_parse (Eolian_State *state, const char *filename)
EOLIAN_API const Eolian_Unit * | eolian_state_file_path_parse (Eolian_State *state, const char *filepath)
EOLIAN_API Eina_Bool | eolian_state_all_eo_files_parse (Eolian_State *state)
EOLIAN_API Eina_Bool | eolian_state_all_eot_files_parse (Eolian_State *state)
EOLIAN_API Eina_Bool | eolian_state_check (const Eolian_State *state)
EOLIAN_API const Eolian_Unit * | eolian_state_unit_by_file_get (const Eolian_State *state, const char *file_name)
EOLIAN_API Eina_Iterator * | eolian_state_units_get (const Eolian_State *state)
EOLIAN_API const Eolian_State * | eolian_unit_state_get (const Eolian_Unit *unit)
EOLIAN_API Eina_Iterator * | eolian_unit_children_get (const Eolian_Unit *unit)
EOLIAN_API const char * | eolian_unit_file_get (const Eolian_Unit *unit)
EOLIAN_API const char * | eolian_unit_file_path_get (const Eolian_Unit *unit)
EOLIAN_API unsigned short | eolian_unit_version_get (const Eolian_Unit *unit)
EOLIAN_API const Eolian_Object * | eolian_unit_object_by_name_get (const Eolian_Unit *unit, const char *name)
EOLIAN_API Eina_Iterator * | eolian_unit_objects_get (const Eolian_Unit *unit)
EOLIAN_API const Eolian_Class * | eolian_unit_class_by_name_get (const Eolian_Unit *unit, const char *class_name)
EOLIAN_API Eina_Iterator * | eolian_unit_classes_get (const Eolian_Unit *unit)
EOLIAN_API const Eolian_Constant * | eolian_unit_constant_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)
EOLIAN_API Eina_Iterator * | eolian_unit_constants_get (const Eolian_Unit *unit)
EOLIAN_API Eina_Iterator * | eolian_unit_errors_get (const Eolian_Unit *unit)
EOLIAN_API const Eolian_Typedecl * | eolian_unit_alias_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)
EOLIAN_API const Eolian_Typedecl * | eolian_unit_enum_by_name_get (const Eolian_Unit *unit, const char *name)
EOLIAN_API Eina_Iterator * | eolian_unit_aliases_get (const Eolian_Unit *unit)
EOLIAN_API Eina_Iterator * | eolian_unit_structs_get (const Eolian_Unit *unit)
EOLIAN_API Eina_Iterator * | eolian_unit_enums_get (const Eolian_Unit *unit)
static const Eolian_Object * | eolian_state_object_by_name_get (const Eolian_State *state, const char *name)
EOLIAN_API Eina_Iterator * | eolian_state_objects_by_file_get (const Eolian_State *state, const char *file_name)
static Eina_Iterator * | eolian_state_objects_get (const Eolian_State *state)
static const Eolian_Class * | eolian_state_class_by_name_get (const Eolian_State *state, const char *class_name)
EOLIAN_API const Eolian_Class * | eolian_state_class_by_file_get (const Eolian_State *state, const char *file_name)
static Eina_Iterator * | eolian_state_classes_get (const Eolian_State *state)
static const Eolian_Constant * | eolian_state_constant_by_name_get (const Eolian_State *state, const char *name)
static const Eolian_Error * | eolian_state_error_by_name_get (const Eolian_State *state, const char *name)
EOLIAN_API Eina_Iterator * | eolian_state_constants_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)
static Eina_Iterator * | eolian_state_constants_get (const Eolian_State *state)
static Eina_Iterator * | eolian_state_errors_get (const Eolian_State *state)
static const Eolian_Typedecl * | eolian_state_alias_by_name_get (const Eolian_State *state, const char *name)
static const Eolian_Typedecl * | eolian_state_struct_by_name_get (const Eolian_State *state, const char *name)
static const Eolian_Typedecl * | eolian_state_enum_by_name_get (const Eolian_State *state, const char *name)
EOLIAN_API Eina_Iterator * | eolian_state_aliases_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)
EOLIAN_API Eina_Iterator * | eolian_state_enums_by_file_get (const Eolian_State *state, const char *file_name)
static Eina_Iterator * | eolian_state_aliases_get (const Eolian_State *state)
static Eina_Iterator * | eolian_state_structs_get (const Eolian_State *state)
static Eina_Iterator * | eolian_state_enums_get (const Eolian_State *state)
static const char * | eolian_class_name_get (const Eolian_Class *klass)
static const char * | eolian_class_c_name_get (const Eolian_Class *klass)
static const char * | eolian_class_short_name_get (const Eolian_Class *klass)
static Eina_Iterator * | eolian_class_namespaces_get (const Eolian_Class *klass)
EOLIAN_API Eolian_Class_Type | eolian_class_type_get (const Eolian_Class *klass)
EOLIAN_API const Eolian_Documentation * | eolian_class_documentation_get (const Eolian_Class *klass)
EOLIAN_API const char * | eolian_class_c_prefix_get (const Eolian_Class *klass)
EOLIAN_API const char * | eolian_class_event_c_prefix_get (const Eolian_Class *klass)
EOLIAN_API const char * | eolian_class_data_type_get (const Eolian_Class *klass)
EOLIAN_API const Eolian_Class * | eolian_class_parent_get (const Eolian_Class *klass)
EOLIAN_API Eina_Iterator * | eolian_class_requires_get (const Eolian_Class *klass)
EOLIAN_API Eina_Iterator * | eolian_class_extensions_get (const Eolian_Class *klass)
EOLIAN_API Eina_Iterator * | eolian_class_functions_get (const Eolian_Class *klass, Eolian_Function_Type func_type)
EOLIAN_API Eolian_Function_Type | eolian_function_type_get (const Eolian_Function *function_id)
EOLIAN_API Eolian_Object_Scope | eolian_function_scope_get (const Eolian_Function *function_id, Eolian_Function_Type ftype)
static const char * | eolian_function_name_get (const Eolian_Function *fid)
EOLIAN_API Eina_Stringshare * | eolian_function_full_c_name_get (const Eolian_Function *function_id, Eolian_Function_Type ftype)
EOLIAN_API 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_Implement * | eolian_function_implement_get (const Eolian_Function *function_id)
EOLIAN_API Eina_Bool | eolian_function_is_static (const Eolian_Function *function_id)
static Eina_Bool | eolian_function_is_beta (const Eolian_Function *function_id)
EOLIAN_API Eina_Bool | eolian_function_is_constructor (const Eolian_Function *function_id, const Eolian_Class *klass)
EOLIAN_API Eina_Iterator * | eolian_function_parameters_get (const Eolian_Function *function_id)
EOLIAN_API Eina_Iterator * | eolian_property_keys_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)
EOLIAN_API Eolian_Parameter_Direction | eolian_parameter_direction_get (const Eolian_Function_Parameter *param)
EOLIAN_API const Eolian_Type * | eolian_parameter_type_get (const Eolian_Function_Parameter *param)
EOLIAN_API const Eolian_Expression * | eolian_parameter_default_value_get (const Eolian_Function_Parameter *param)
static const char * | eolian_parameter_name_get (const Eolian_Function_Parameter *param)
EOLIAN_API const Eolian_Documentation * | eolian_parameter_documentation_get (const Eolian_Function_Parameter *param)
EOLIAN_API Eina_Bool | eolian_parameter_is_optional (const Eolian_Function_Parameter *param_desc)
EOLIAN_API Eina_Bool | eolian_parameter_is_by_ref (const Eolian_Function_Parameter *param_desc)
EOLIAN_API Eina_Bool | eolian_parameter_is_move (const Eolian_Function_Parameter *param_desc)
EOLIAN_API Eina_Stringshare * | eolian_parameter_c_type_get (const Eolian_Function_Parameter *param_desc, Eina_Bool as_return)
EOLIAN_API const Eolian_Type * | eolian_function_return_type_get (const Eolian_Function *function_id, Eolian_Function_Type ftype)
EOLIAN_API const Eolian_Expression * | eolian_function_return_default_value_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)
EOLIAN_API Eina_Bool | eolian_function_return_allow_unused (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)
EOLIAN_API Eina_Bool | eolian_function_return_is_move (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)
EOLIAN_API Eina_Bool | eolian_function_object_is_const (const Eolian_Function *function_id)
EOLIAN_API const Eolian_Class * | eolian_function_class_get (const Eolian_Function *function_id)
static const char * | eolian_implement_name_get (const Eolian_Implement *impl)
EOLIAN_API const Eolian_Class * | eolian_implement_class_get (const Eolian_Implement *impl)
EOLIAN_API const Eolian_Class * | eolian_implement_implementing_class_get (const Eolian_Implement *impl)
EOLIAN_API const Eolian_Function * | eolian_implement_function_get (const Eolian_Implement *impl, Eolian_Function_Type *func_type)
EOLIAN_API const Eolian_Documentation * | eolian_implement_documentation_get (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)
EOLIAN_API Eina_Bool | eolian_implement_is_empty (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)
EOLIAN_API Eina_Bool | eolian_implement_is_prop_get (const Eolian_Implement *impl)
EOLIAN_API Eina_Bool | eolian_implement_is_prop_set (const Eolian_Implement *impl)
EOLIAN_API Eina_Iterator * | eolian_class_implements_get (const Eolian_Class *klass)
static const char * | eolian_constructor_name_get (const Eolian_Constructor *ctor)
EOLIAN_API const Eolian_Class * | eolian_constructor_class_get (const Eolian_Constructor *ctor)
EOLIAN_API const Eolian_Function * | eolian_constructor_function_get (const Eolian_Constructor *ctor)
EOLIAN_API Eina_Bool | eolian_constructor_is_optional (const Eolian_Constructor *ctor)
EOLIAN_API Eina_Iterator * | eolian_class_constructors_get (const Eolian_Class *klass)
EOLIAN_API Eina_Iterator * | eolian_class_events_get (const Eolian_Class *klass)
static const char * | eolian_event_name_get (const Eolian_Event *event)
EOLIAN_API const Eolian_Type * | eolian_event_type_get (const Eolian_Event *event)
EOLIAN_API const Eolian_Class * | eolian_event_class_get (const Eolian_Event *event)
EOLIAN_API const Eolian_Documentation * | eolian_event_documentation_get (const Eolian_Event *event)
EOLIAN_API Eolian_Object_Scope | eolian_event_scope_get (const Eolian_Event *event)
static Eina_Bool | eolian_event_is_beta (const Eolian_Event *event)
EOLIAN_API Eina_Bool | eolian_event_is_hot (const Eolian_Event *event)
EOLIAN_API Eina_Bool | eolian_event_is_restart (const Eolian_Event *event)
EOLIAN_API Eina_Iterator * | eolian_class_parts_get (const Eolian_Class *klass)
EOLIAN_API Eina_Stringshare * | eolian_event_c_macro_get (const Eolian_Event *event)
static const char * | eolian_part_name_get (const Eolian_Part *part)
EOLIAN_API const Eolian_Class * | eolian_part_class_get (const Eolian_Part *part)
EOLIAN_API const Eolian_Documentation * | eolian_part_documentation_get (const Eolian_Part *part)
static Eina_Bool | eolian_part_is_beta (const Eolian_Part *part)
EOLIAN_API const Eolian_Event * | eolian_class_event_by_name_get (const Eolian_Class *klass, const char *event_name)
EOLIAN_API Eina_Bool | eolian_class_ctor_enable_get (const Eolian_Class *klass)
EOLIAN_API Eina_Bool | eolian_class_dtor_enable_get (const Eolian_Class *klass)
EOLIAN_API Eina_Stringshare * | eolian_class_c_get_function_name_get (const Eolian_Class *klass)
EOLIAN_API Eina_Stringshare * | eolian_class_c_macro_get (const Eolian_Class *klass)
EOLIAN_API Eina_Stringshare * | eolian_class_c_data_type_get (const Eolian_Class *klass)
static Eina_Bool | eolian_class_is_beta (const Eolian_Class *klass)
EOLIAN_API Eolian_Typedecl_Type | eolian_typedecl_type_get (const Eolian_Typedecl *tp)
EOLIAN_API Eina_Iterator * | eolian_typedecl_struct_fields_get (const Eolian_Typedecl *tp)
EOLIAN_API const Eolian_Struct_Type_Field * | eolian_typedecl_struct_field_get (const Eolian_Typedecl *tp, const char *field)
static const char * | eolian_typedecl_struct_field_name_get (const Eolian_Struct_Type_Field *field)
EOLIAN_API const Eolian_Documentation * | eolian_typedecl_struct_field_documentation_get (const Eolian_Struct_Type_Field *fl)
EOLIAN_API const Eolian_Type * | eolian_typedecl_struct_field_type_get (const Eolian_Struct_Type_Field *fl)
EOLIAN_API Eina_Bool | eolian_typedecl_struct_field_is_by_ref (const Eolian_Struct_Type_Field *fl)
EOLIAN_API Eina_Bool | eolian_typedecl_struct_field_is_move (const Eolian_Struct_Type_Field *fl)
EOLIAN_API Eina_Stringshare * | eolian_typedecl_struct_field_c_type_get (const Eolian_Struct_Type_Field *fl)
EOLIAN_API Eina_Iterator * | eolian_typedecl_enum_fields_get (const Eolian_Typedecl *tp)
EOLIAN_API const Eolian_Enum_Type_Field * | eolian_typedecl_enum_field_get (const Eolian_Typedecl *tp, const char *field)
static const char * | eolian_typedecl_enum_field_name_get (const Eolian_Enum_Type_Field *field)
EOLIAN_API Eina_Stringshare * | eolian_typedecl_enum_field_c_constant_get (const Eolian_Enum_Type_Field *fl)
EOLIAN_API const Eolian_Documentation * | eolian_typedecl_enum_field_documentation_get (const Eolian_Enum_Type_Field *fl)
EOLIAN_API const Eolian_Expression * | eolian_typedecl_enum_field_value_get (const Eolian_Enum_Type_Field *fl, Eina_Bool force)
EOLIAN_API const Eolian_Documentation * | eolian_typedecl_documentation_get (const Eolian_Typedecl *tp)
EOLIAN_API const Eolian_Type * | eolian_typedecl_base_type_get (const Eolian_Typedecl *tp)
EOLIAN_API const Eolian_Type * | eolian_typedecl_aliased_base_get (const Eolian_Typedecl *tp)
EOLIAN_API Eina_Bool | eolian_typedecl_is_extern (const Eolian_Typedecl *tp)
static Eina_Bool | eolian_typedecl_is_beta (const Eolian_Typedecl *tp)
EOLIAN_API Eina_Stringshare * | eolian_typedecl_c_type_get (const Eolian_Typedecl *tp)
static const char * | eolian_typedecl_name_get (const Eolian_Typedecl *tp)
static const char * | eolian_typedecl_c_name_get (const Eolian_Typedecl *tp)
static const char * | eolian_typedecl_short_name_get (const Eolian_Typedecl *tp)
static Eina_Iterator * | eolian_typedecl_namespaces_get (const Eolian_Typedecl *tp)
EOLIAN_API const char * | eolian_typedecl_free_func_get (const Eolian_Typedecl *tp)
EOLIAN_API const Eolian_Function * | eolian_typedecl_function_pointer_get (const Eolian_Typedecl *tp)
EOLIAN_API Eolian_Type_Type | eolian_type_type_get (const Eolian_Type *tp)
EOLIAN_API Eolian_Type_Builtin_Type | eolian_type_builtin_type_get (const Eolian_Type *tp)
EOLIAN_API const Eolian_Type * | eolian_type_base_type_get (const Eolian_Type *tp)
EOLIAN_API const Eolian_Type * | eolian_type_next_type_get (const Eolian_Type *tp)
EOLIAN_API const Eolian_Typedecl * | eolian_type_typedecl_get (const Eolian_Type *tp)
EOLIAN_API const Eolian_Type * | eolian_type_aliased_base_get (const Eolian_Type *tp)
EOLIAN_API const Eolian_Class * | eolian_type_class_get (const Eolian_Type *tp)
EOLIAN_API const Eolian_Error * | eolian_type_error_get (const Eolian_Type *tp)
EOLIAN_API Eina_Bool | eolian_type_is_move (const Eolian_Type *tp)
EOLIAN_API Eina_Bool | eolian_type_is_const (const Eolian_Type *tp)
EOLIAN_API Eina_Stringshare * | eolian_type_c_type_get (const Eolian_Type *tp)
static const char * | eolian_type_name_get (const Eolian_Type *tp)
static const char * | eolian_type_c_name_get (const Eolian_Type *tp)
static const char * | eolian_type_short_name_get (const Eolian_Type *tp)
static Eina_Iterator * | eolian_type_namespaces_get (const Eolian_Type *tp)
EOLIAN_API Eolian_Value | eolian_expression_eval (const Eolian_Expression *expr, Eolian_Expression_Mask m)
EOLIAN_API Eina_Bool | eolian_expression_eval_fill (const Eolian_Expression *expr, Eolian_Expression_Mask m, Eolian_Value *val)
EOLIAN_API Eina_Stringshare * | eolian_expression_value_to_literal (const Eolian_Value *v)
EOLIAN_API Eina_Stringshare * | eolian_expression_serialize (const Eolian_Expression *expr)
EOLIAN_API Eolian_Expression_Type | eolian_expression_type_get (const Eolian_Expression *expr)
EOLIAN_API Eolian_Binary_Operator | eolian_expression_binary_operator_get (const Eolian_Expression *expr)
EOLIAN_API const Eolian_Expression * | eolian_expression_binary_lhs_get (const Eolian_Expression *expr)
EOLIAN_API const Eolian_Expression * | eolian_expression_binary_rhs_get (const Eolian_Expression *expr)
EOLIAN_API Eolian_Unary_Operator | eolian_expression_unary_operator_get (const Eolian_Expression *expr)
EOLIAN_API const Eolian_Expression * | eolian_expression_unary_expression_get (const Eolian_Expression *expr)
EOLIAN_API Eolian_Value | eolian_expression_value_get (const Eolian_Expression *expr)
EOLIAN_API Eina_Bool | eolian_expression_value_get_fill (const Eolian_Expression *expr, Eolian_Value *val)
EOLIAN_API const Eolian_Documentation * | eolian_constant_documentation_get (const Eolian_Constant *var)
EOLIAN_API const Eolian_Type * | eolian_constant_type_get (const Eolian_Constant *var)
EOLIAN_API const Eolian_Expression * | eolian_constant_value_get (const Eolian_Constant *var)
static const char * | eolian_constant_name_get (const Eolian_Constant *tp)
static const char * | eolian_constant_c_name_get (const Eolian_Constant *tp)
static const char * | eolian_constant_short_name_get (const Eolian_Constant *tp)
static Eina_Iterator * | eolian_constant_namespaces_get (const Eolian_Constant *tp)
EOLIAN_API Eina_Bool | eolian_constant_is_extern (const Eolian_Constant *var)
static Eina_Bool | eolian_constant_is_beta (const Eolian_Constant *var)
EOLIAN_API const char * | eolian_error_message_get (const Eolian_Error *err)
EOLIAN_API const Eolian_Documentation * | eolian_error_documentation_get (const Eolian_Error *err)
static const char * | eolian_error_name_get (const Eolian_Error *err)
static const char * | eolian_error_c_name_get (const Eolian_Error *err)
static const char * | eolian_error_short_name_get (const Eolian_Error *err)
static Eina_Iterator * | eolian_error_namespaces_get (const Eolian_Error *err)
static Eina_Bool | eolian_error_is_beta (const Eolian_Error *err)
EOLIAN_API Eina_Bool | eolian_error_is_extern (const Eolian_Error *err)
EOLIAN_API const char * | eolian_documentation_summary_get (const Eolian_Documentation *doc)
EOLIAN_API const char * | eolian_documentation_description_get (const Eolian_Documentation *doc)
EOLIAN_API const char * | eolian_documentation_since_get (const Eolian_Documentation *doc)
EOLIAN_API Eina_List * | eolian_documentation_string_split (const char *doc)
EOLIAN_API const char * | eolian_documentation_tokenize (const char *doc, Eolian_Doc_Token *ret)
EOLIAN_API void | eolian_doc_token_init (Eolian_Doc_Token *tok)
EOLIAN_API Eolian_Doc_Token_Type | eolian_doc_token_type_get (const Eolian_Doc_Token *tok)
EOLIAN_API char * | eolian_doc_token_text_get (const Eolian_Doc_Token *tok)
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)
EOLIAN_API const char * | eolian_typedecl_enum_legacy_prefix_get (const Eolian_Typedecl *tp)
EOLIAN_API Eina_Bool | eolian_type_is_ptr (const Eolian_Type *tp)
EOLIAN_API Eina_Hash * | eolian_aux_state_class_children_find (const Eolian_State *state)
| Build reverse children hierarchy of an Eolian state.
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)
| Get all APIs that are usable on the class.
EOLIAN_API Eina_List * | eolian_aux_function_all_implements_get (const Eolian_Function *func, Eina_Hash *class_children)
| Get all implementations of a function in a state.
EOLIAN_API const Eolian_Implement * | eolian_aux_implement_parent_get (const Eolian_Implement *impl)
| Get previous implementation in the inheritance hierarchy.
EOLIAN_API const Eolian_Documentation * | eolian_aux_implement_documentation_get (const Eolian_Implement *impl, Eolian_Function_Type ftype)
| Get documentation for an implementation.
EOLIAN_API const Eolian_Documentation * | eolian_aux_implement_documentation_fallback_get (const Eolian_Implement *impl)
| Get documentation fallback for an implementation.

## Detailed Description

## Macro Definition Documentation

## EOLIAN_CAST

#define EOLIAN_CAST | ( |  | type,
|  |  | expr )

Value:
((const type *)expr)

## EOLIAN_OBJECT

#define EOLIAN_OBJECT | ( |  | expr | ) |

Value:
EOLIAN_CAST(Eolian_Object, expr)

## EOLIAN_UNIT

#define EOLIAN_UNIT | ( |  | expr | ) |

Value:
EOLIAN_CAST(Eolian_Unit, expr)

## Function Documentation

## eolian_aux_state_class_children_find()

EOLIAN_API Eina_Hash * eolian_aux_state_class_children_find | ( | const Eolian_State * | state | ) |

Build reverse children hierarchy of an Eolian state.

The point of this is basically to figure out reverse inheritance. The keys of the returned hash will be class pointers and the values will be lists. If classes A and B both inherit from C, they will be in C's list after lookup.

You are responsible for freeing this hash using standard eina_hash_free().

Parameters

  [in] | state | the Eolian state.

Returns
  a hash containing the hierarchy.

References eina_hash_find(), eina_hash_pointer_new(), eina_hash_set(), EINA_ITERATOR_FOREACH, eina_iterator_free(), and eina_list_append().

## eolian_aux_class_callables_get()

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 )

Get all APIs that are usable on the class.

The `funcs` parameter will contain the functions, while `events` will contain events. The initial items in the lists will be the funcs and events defined by the class itself, followed by those defined in the classes it inherits from.

Funcs will contain implement pointers, events will contain event pointers.

The `ownfuncs` param defines how many of the list's items are the classes' own API. Same happens with `ownevs` for events.

You are responsible for freeing the returned lists but not their contents. If you want to skip either of the lists, pass NULL.

Parameters

  [in] | klass | the class.
  [out] | funcs | the functions list reference, NULL if not used.
  [out] | events | the event list reference, NULL if not used.
  [out] | ownfuncs | the number of own functions, NULL if not used.
  [out] | ownevs | the number of own events, NULL if not used.

Returns
  the total number of items written into either list.

References eina_hash_free(), eina_hash_pointer_new(), eina_hash_set(), EINA_ITERATOR_FOREACH, eina_iterator_free(), and eina_list_append().

## eolian_aux_function_all_implements_get()

EOLIAN_API Eina_List * eolian_aux_function_all_implements_get | ( | const Eolian_Function * | func,
|  | Eina_Hash * | class_children )

Get all implementations of a function in a state.

Given a function and a children hierarchy from eolian_aux_state_class_children_find(), this will func all implementations of that function in the system. This is useful for various utilities. You need to free the list but not the contents.

Parameters

  [in] | func | the function.
  [in] | class_children | the children hierarchy.

Returns
  a list of implementations.

References eina_hash_free(), and eina_hash_pointer_new().

## eolian_aux_implement_parent_get()

EOLIAN_API const Eolian_Implement * eolian_aux_implement_parent_get | ( | const Eolian_Implement * | impl | ) |

Get previous implementation in the inheritance hierarchy.

This performs a depth-first search in the hierarchy, starting with the specific given implementation. Once it is found, this parent implementation is returned.

Parameters

  [in] | impl | the implementation.

Returns
  the parent implementation.

## eolian_aux_implement_documentation_get()

EOLIAN_API const Eolian_Documentation * eolian_aux_implement_documentation_get | ( | const Eolian_Implement * | impl,
|  | Eolian_Function_Type | ftype )

Get documentation for an implementation.

This first checks if the implementation has documentation for the given type. If so, it is returned; if not, parent implementations as specified in eolian_aux_implement_parent_get() are searched and the first one to have the documentation is used.

Parameters

  [in] | impl | the implementation.
  [in] | ftype | the function type (method, property, getter, setter).

Returns
  the documentation or NULL.

## eolian_aux_implement_documentation_fallback_get()

EOLIAN_API const Eolian_Documentation * eolian_aux_implement_documentation_fallback_get | ( | const Eolian_Implement * | impl | ) |

Get documentation fallback for an implementation.

This is used when the implement does not have a "common" documentation block. If the given implement is a getter and not a setter, this returns the getter's documentation. If it's a setter but not a getter, it returns the setter documentation. Otherwise, it returns NULL.

Parameters

  [in] | impl | the implementation.

Returns
  the documentation or NULL.