eolian: do not use string for attrs

This commit is contained in:
Daniel Kolesa 2014-07-07 15:14:00 +01:00
parent 6f8d017d93
commit 58a6895e41
3 changed files with 6 additions and 27 deletions

View File

@ -38,7 +38,6 @@ static void
eo_definitions_accessor_param_free(Eo_Accessor_Param *param)
{
if (param->name) eina_stringshare_del(param->name);
if (param->attrs) eina_stringshare_del(param->attrs);
free(param);
}

View File

@ -64,7 +64,7 @@ typedef enum _eo_accessor_type
typedef struct _eo_accessor_param
{
const char *name;
const char *attrs;
Eina_Bool is_const:1;
} Eo_Accessor_Param;
typedef struct _eo_accessor_def

View File

@ -383,47 +383,27 @@ parse_legacy(Eo_Lexer *ls)
static void
parse_attrs(Eo_Lexer *ls)
{
Eina_Strbuf *buf = NULL;
Eo_Accessor_Param *acc = NULL;
Eina_Bool has_const = EINA_FALSE, has_own = EINA_FALSE,
has_nonull = EINA_FALSE, first = EINA_TRUE;
Eina_Bool has_const = EINA_FALSE;
acc = calloc(1, sizeof(Eo_Accessor_Param));
ls->tmp.accessor_param = acc;
acc->name = eina_stringshare_add(ls->t.value);
eo_lexer_get(ls);
check_next(ls, ':');
check(ls, TOK_VALUE);
buf = push_strbuf(ls);
for (;;) switch (ls->t.kw)
{
case KW_const:
CASE_LOCK(ls, const, "const qualifier")
if (!first) eina_strbuf_append_char(buf, ' ');
eina_strbuf_append(buf, "const");
first = EINA_FALSE;
eo_lexer_get(ls);
break;
case KW_own:
CASE_LOCK(ls, own, "own qualifier")
if (!first) eina_strbuf_append_char(buf, ' ');
eina_strbuf_append(buf, "@own");
first = EINA_FALSE;
eo_lexer_get(ls);
break;
case KW_at_nonull:
CASE_LOCK(ls, nonull, "@nonull qualifier")
if (!first) eina_strbuf_append_char(buf, ' ');
eina_strbuf_append(buf, "@nonull");
first = EINA_FALSE;
acc->is_const = EINA_TRUE;
eo_lexer_get(ls);
break;
default:
if (first) eo_lexer_syntax_error(ls, "attribute expected");
if (ls->t.token != ';')
eo_lexer_syntax_error(ls, "attribute expected");
goto end;
}
end:
acc->attrs = eina_stringshare_add(eina_strbuf_string_get(buf));
pop_strbuf(ls);
check_next(ls, ';');
}
@ -1240,7 +1220,7 @@ _db_fill_class(Eo_Class_Def *kls, const char *filename)
printf("Error - %s not known as parameter of property %s\n", acc_param->name, prop->name);
}
else
if (strstr(acc_param->attrs, "const"))
if (acc_param->is_const)
{
database_parameter_const_attribute_set(desc, accessor->type == GETTER, EINA_TRUE);
}