forked from enlightenment/efl
eolian: fill parts into db
This commit is contained in:
parent
130052f275
commit
0a92c0c61f
|
@ -1482,14 +1482,42 @@ end:
|
|||
static void
|
||||
parse_part(Eo_Lexer *ls)
|
||||
{
|
||||
check_next(ls, TOK_VALUE);
|
||||
Eolian_Part *part = calloc(1, sizeof(Eolian_Part));
|
||||
ls->tmp.kls->parts = eina_list_append(ls->tmp.kls->parts, part);
|
||||
check(ls, TOK_VALUE);
|
||||
part->name = eina_stringshare_ref(ls->t.value.s);
|
||||
eo_lexer_get(ls);
|
||||
check_next(ls, ':');
|
||||
Eina_Strbuf *buf = push_strbuf(ls);
|
||||
eo_lexer_context_push(ls);
|
||||
parse_name(ls, buf);
|
||||
check_next(ls, ';');
|
||||
if (ls->t.token == TOK_DOC)
|
||||
eo_lexer_get(ls);
|
||||
const char *nm = eina_strbuf_string_get(buf);
|
||||
const char *bnm = eina_stringshare_ref(ls->filename);
|
||||
char *fnm = database_class_to_filename(nm);
|
||||
if (!compare_class_file(bnm, fnm))
|
||||
{
|
||||
const char *fname = eina_hash_find(_filenames, fnm);
|
||||
eina_stringshare_del(bnm);
|
||||
free(fnm);
|
||||
if (fname)
|
||||
_parse_dep(ls, fname, nm);
|
||||
/* FIXME: pass unit properly */
|
||||
Eolian_Class *dep = (Eolian_Class *)eolian_class_get_by_name(NULL, nm);
|
||||
if (!dep)
|
||||
{
|
||||
char ebuf[PATH_MAX];
|
||||
eo_lexer_context_restore(ls);
|
||||
snprintf(ebuf, sizeof(ebuf), "unknown class '%s'", nm);
|
||||
eo_lexer_syntax_error(ls, ebuf);
|
||||
return;
|
||||
}
|
||||
part->klass = dep;
|
||||
}
|
||||
else
|
||||
part->klass = ls->tmp.kls;
|
||||
pop_strbuf(ls);
|
||||
check_next(ls, ';');
|
||||
FILL_DOC(ls, part, doc);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -91,12 +91,13 @@ struct _Eolian_Class
|
|||
Eina_Stringshare *eo_prefix;
|
||||
Eina_Stringshare *ev_prefix;
|
||||
Eina_Stringshare *data_type;
|
||||
Eina_List *inherits; /* List Eolian_Class * */
|
||||
Eina_List *properties; /* List prop_name -> Eolian_Function */
|
||||
Eina_List *methods; /* List meth_name -> Eolian_Function */
|
||||
Eina_List *implements; /* List implements name -> Eolian_Implement */
|
||||
Eina_List *constructors; /* List constructors name -> Eolian_Constructor */
|
||||
Eina_List *events; /* List event_name -> Eolian_Event */
|
||||
Eina_List *inherits; /* Eolian_Class */
|
||||
Eina_List *properties; /* Eolian_Function */
|
||||
Eina_List *methods; /* Eolian_Function */
|
||||
Eina_List *implements; /* Eolian_Implement */
|
||||
Eina_List *constructors; /* Eolian_Constructor */
|
||||
Eina_List *events; /* Eolian_Event */
|
||||
Eina_List *parts; /* Eolian_Part */
|
||||
Eina_Bool class_ctor_enable:1;
|
||||
Eina_Bool class_dtor_enable:1;
|
||||
Eina_Bool toplevel:1;
|
||||
|
@ -146,6 +147,7 @@ struct _Eolian_Part
|
|||
Eolian_Object base;
|
||||
Eina_Stringshare *name;
|
||||
Eolian_Class *klass;
|
||||
Eolian_Documentation *doc;
|
||||
};
|
||||
|
||||
struct _Eolian_Function_Parameter
|
||||
|
|
Loading…
Reference in New Issue