};
Eina_Bool
-database_type_is_ownable(const Eolian_Type *tp, Eina_Bool term)
+database_type_is_ownable(const Eolian_Type *tp)
{
if (tp->is_ptr)
return EINA_TRUE;
if (tp->type == EOLIAN_TYPE_REGULAR)
{
- int kwid = eo_lexer_keyword_str_to_id(tp->name);
- /* don't include bool, it only has 2 values so it's useless */
- if (term && (kwid >= KW_byte && kwid < KW_bool))
- return EINA_TRUE;
- const char *ct = eo_lexer_get_c_type(kwid);
+ int kw = eo_lexer_keyword_str_to_id(tp->name);
+ const char *ct = eo_lexer_get_c_type(kw);
if (!ct)
{
const Eolian_Typedecl *tpp = eolian_type_typedecl_get(tp);
if (tpp->type == EOLIAN_TYPEDECL_FUNCTION_POINTER)
return EINA_TRUE;
if (tpp->type == EOLIAN_TYPEDECL_ALIAS)
- return database_type_is_ownable(tpp->base_type, term);
+ return database_type_is_ownable(tpp->base_type);
return EINA_FALSE;
}
return (ct[strlen(ct) - 1] == '*');
|| tp->type == EOLIAN_TYPE_CLASS
|| tp->type == EOLIAN_TYPE_VOID)
&& tp->is_const
- && ((ctype != EOLIAN_C_TYPE_RETURN) || database_type_is_ownable(tp, EINA_FALSE)))
+ && ((ctype != EOLIAN_C_TYPE_RETURN) || database_type_is_ownable(tp)))
{
eina_strbuf_append(buf, "const ");
}
return parse_expr_bin(ls, 1);
}
-static Eolian_Type *parse_type_void(Eo_Lexer *ls, Eina_Bool allow_ref,
- Eina_Bool allow_sarray);
+static Eolian_Type *parse_type_void(Eo_Lexer *ls, Eina_Bool allow_ref);
static Eolian_Type *
-parse_type(Eo_Lexer *ls, Eina_Bool allow_ref, Eina_Bool allow_sarray)
+parse_type(Eo_Lexer *ls, Eina_Bool allow_ref)
{
Eolian_Type *ret;
eo_lexer_context_push(ls);
- ret = parse_type_void(ls, allow_ref, allow_sarray);
+ ret = parse_type_void(ls, allow_ref);
if (ret->type == EOLIAN_TYPE_VOID)
{
eo_lexer_context_restore(ls);
def->field_list = eina_list_append(def->field_list, fdef);
eo_lexer_get(ls);
check_next(ls, ':');
- tp = parse_type(ls, EINA_TRUE, EINA_TRUE);
+ tp = parse_type(ls, EINA_TRUE);
FILL_BASE(fdef->base, ls, fline, fcol);
fdef->type = tp;
fdef->name = eina_stringshare_ref(fname);
}
static Eolian_Type *
-parse_type_void(Eo_Lexer *ls, Eina_Bool allow_ref, Eina_Bool allow_sarray)
+parse_type_void(Eo_Lexer *ls, Eina_Bool allow_ref)
{
Eolian_Type *def;
Eina_Strbuf *buf;
pline = ls->line_number;
pcol = ls->column;
check_next(ls, '(');
- def = parse_type_void(ls, allow_ref, EINA_FALSE);
+ def = parse_type_void(ls, allow_ref);
FILL_BASE(def->base, ls, line, col);
def->is_const = EINA_TRUE;
check_match(ls, ')', '(', pline, pcol);
pline = ls->line_number;
pcol = ls->column;
check_next(ls, '(');
- def = parse_type_void(ls, EINA_FALSE, EINA_FALSE);
+ def = parse_type_void(ls, EINA_FALSE);
FILL_BASE(def->base, ls, line, col);
def->is_ptr = EINA_TRUE;
check_match(ls, ')', '(', pline, pcol);
pline = ls->line_number;
pcolumn = ls->column;
check_next(ls, '(');
- def = parse_type_void(ls, allow_ref, EINA_FALSE);
+ def = parse_type_void(ls, allow_ref);
check_next(ls, ',');
check(ls, TOK_VALUE);
def->freefunc = eina_stringshare_ref(ls->t.value.s);
int bline = ls->line_number, bcol = ls->column;
check_next(ls, '<');
if (tpid == KW_future)
- def->base_type = parse_type_void(ls, EINA_FALSE, EINA_FALSE);
+ def->base_type = parse_type_void(ls, EINA_FALSE);
else
- def->base_type = parse_type(ls, EINA_FALSE, EINA_FALSE);
+ def->base_type = parse_type(ls, EINA_FALSE);
pop_type(ls);
if ((def->base_type->owned = (ls->t.kw == KW_at_owned)))
eo_lexer_get(ls);
if (tpid == KW_hash)
{
check_next(ls, ',');
- def->base_type->next_type = parse_type(ls, EINA_FALSE, EINA_FALSE);
+ def->base_type->next_type = parse_type(ls, EINA_FALSE);
pop_type(ls);
if ((def->base_type->next_type->owned = (ls->t.kw == KW_at_owned)))
eo_lexer_get(ls);
}
else if((tpid == KW_future) && test_next(ls, ','))
{
- def->base_type->next_type = parse_type_void(ls, EINA_FALSE, EINA_FALSE);
+ def->base_type->next_type = parse_type_void(ls, EINA_FALSE);
pop_type(ls);
}
check_match(ls, '>', '<', bline, bcol);
}
eo_lexer_context_pop(ls);
check_next(ls, ':');
- def->base_type = parse_type(ls, EINA_FALSE, EINA_FALSE);
+ def->base_type = parse_type(ls, EINA_FALSE);
pop_type(ls);
check_next(ls, ';');
FILL_DOC(ls, def, doc);
}
eo_lexer_context_pop(ls);
check_next(ls, ':');
- def->base_type = parse_type(ls, EINA_FALSE, EINA_FALSE);
+ def->base_type = parse_type(ls, EINA_FALSE);
pop_type(ls);
/* constants are required to have a value */
if (!global)
eo_lexer_get(ls);
check_next(ls, ':');
if (allow_void)
- ret->type = parse_type_void(ls, EINA_TRUE, EINA_FALSE);
+ ret->type = parse_type_void(ls, EINA_TRUE);
else
- ret->type = parse_type(ls, EINA_TRUE, EINA_FALSE);
+ ret->type = parse_type(ls, EINA_TRUE);
ret->doc = NULL;
ret->default_ret_val = NULL;
ret->warn_unused = EINA_FALSE;
eo_lexer_get(ls);
check_next(ls, ':');
if (par->param_dir == EOLIAN_OUT_PARAM || par->param_dir == EOLIAN_INOUT_PARAM)
- par->type = parse_type_void(ls, EINA_TRUE, EINA_FALSE);
+ par->type = parse_type_void(ls, EINA_TRUE);
else
- par->type = parse_type(ls, EINA_TRUE, EINA_FALSE);
+ par->type = parse_type(ls, EINA_TRUE);
pop_type(ls);
if ((is_vals || (par->param_dir == EOLIAN_OUT_PARAM)) && (ls->t.token == '('))
{
if (ls->t.token == ':')
{
eo_lexer_get(ls);
- ev->type = parse_type(ls, EINA_TRUE, EINA_FALSE);
+ ev->type = parse_type(ls, EINA_TRUE);
ev->type->owned = has_owned;
pop_type(ls);
}