eolian: Rename EAPI macro to EOLIAN_API in Eolian library

Patch from a series of patches to rename EAPI symbols to specific
library DSOs.

EAPI was designed to be able to pass
```__attribute__ ((visibility ("default")))``` for symbols with
GCC, which would mean that even if -fvisibility=hidden was used
when compiling the library, the needed symbols would get exported.

MSVC __almost__ works like GCC (or mingw) in which you can
declare everything as export and it will just work (slower, but
it will work). But there's a caveat: global variables will not
work the same way for MSVC, but works for mingw and GCC.

For global variables (as opposed to functions), MSVC requires
correct DSO visibility for MSVC: instead of declaring a symbol as
export for everything, you need to declare it as import when
importing from another DSO and export when defining it locally.

With current EAPI definitions, we get the following example
working in mingw and MSVC (observe it doesn't define any global
variables as exported symbols).

Example 1:
dll1:
```
EAPI void foo(void);

EAPI void bar()
{
  foo();
}
```
dll2:
```
EAPI void foo()
{
  printf ("foo\n");
}
```

This works fine with API defined as __declspec(dllexport) in both
cases and for gcc defining as
```__atttribute__((visibility("default")))```.

However, the following:
Example 2:

dll1:

```
EAPI extern int foo;
EAPI void foobar(void);

EAPI void bar()
{
  foo = 5;
  foobar();
}
```

dll2:

```
EAPI int foo = 0;
EAPI void foobar()
{
  printf ("foo %d\n", foo);
}
```

This will work on mingw but will not work for MSVC. And that's why
EAPI is the only solution that worked for MSVC.

Co-authored-by: João Paulo Taylor Ienczak Zanette <jpaulotiz@gmail.com>
Co-authored-by: Ricardo Campos <ricardo.campos@expertise.dev>
Co-authored-by: Lucas Cavalcante de Sousa <lucks.sousa@gmail.com>
This commit is contained in:
Felipe Magno de Almeida 2020-08-19 17:32:20 -03:00
parent b5d46fb7c4
commit 1f0c580042
19 changed files with 421 additions and 441 deletions

File diff suppressed because it is too large Load Diff

View File

@ -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
@ -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

View File

@ -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];

View File

@ -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);

View File

@ -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;

View File

@ -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,7 +15,7 @@ eolian_expression_eval(const Eolian_Expression *expr, Eolian_Expression_Mask m)
return database_expr_eval(NULL, (Eolian_Expression *)expr, m, NULL, NULL);
}
EAPI Eina_Bool
EOLIAN_API Eina_Bool
eolian_expression_eval_fill(const Eolian_Expression *expr,
Eolian_Expression_Mask m, Eolian_Value *val)
{
@ -80,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);
@ -205,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);
@ -220,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);
@ -236,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);
@ -244,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);
@ -252,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);
@ -261,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);
@ -269,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;
@ -283,7 +283,7 @@ eolian_expression_value_get(const Eolian_Expression *expr)
return v;
}
EAPI Eina_Bool
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);

View File

@ -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);

View File

@ -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)
{

View File

@ -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);

View File

@ -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);

View File

@ -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;
@ -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);

View File

@ -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);

View File

@ -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__ */
#endif /* __EO_PARSER_H__ */

View File

@ -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;
}

View File

@ -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

View File

@ -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),

View File

@ -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);

View File

@ -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>

View File

@ -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()
)