From 45a73a08789f0f91ea72cf647f55058e6f3d4813 Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Wed, 24 May 2017 16:36:23 +0200 Subject: [PATCH] eolian: pass unit to class get_by_name/file --- src/bin/eolian/docs.c | 69 ++++++++++++++++++++----------------- src/bin/eolian/docs.h | 6 ++-- src/bin/eolian/headers.c | 21 +++++------ src/bin/eolian/main.c | 6 ++-- src/bin/eolian/sources.c | 4 +-- src/bin/eolian/types.c | 24 ++++++------- src/bindings/luajit/eolian.lua | 12 +++---- src/lib/eolian/Eolian.h | 6 ++-- src/lib/eolian/database_class_api.c | 6 ++-- src/lib/eolian/database_type_api.c | 3 +- src/lib/eolian/eo_parser.c | 6 ++-- src/lib/eolian/eolian_database.c | 6 ++-- 12 files changed, 92 insertions(+), 77 deletions(-) diff --git a/src/bin/eolian/docs.c b/src/bin/eolian/docs.c index 1e89b55..842376c 100644 --- a/src/bin/eolian/docs.c +++ b/src/bin/eolian/docs.c @@ -19,7 +19,8 @@ _indent_line(Eina_Strbuf *buf, int ind) : DOC_LINE_LIMIT) static void -_generate_ref(const char *refn, Eina_Strbuf *wbuf, Eina_Bool use_legacy) +_generate_ref(const Eolian_Unit *src, const char *refn, Eina_Strbuf *wbuf, + Eina_Bool use_legacy) { const Eolian_Declaration *decl = eolian_declaration_get_by_name(refn); if (decl) @@ -46,7 +47,7 @@ _generate_ref(const char *refn, Eina_Strbuf *wbuf, Eina_Bool use_legacy) eina_stringshare_del(bname); goto noref; } - _generate_ref(bname, wbuf, use_legacy); + _generate_ref(src, bname, wbuf, use_legacy); eina_strbuf_append(wbuf, sfx); eina_stringshare_del(bname); return; @@ -67,7 +68,7 @@ _generate_ref(const char *refn, Eina_Strbuf *wbuf, Eina_Bool use_legacy) return; } - const Eolian_Class *cl = eolian_class_get_by_name(bname); + const Eolian_Class *cl = eolian_class_get_by_name(src, bname); const Eolian_Function *fn = NULL; /* match methods and properties; we're only figuring out existence */ Eolian_Function_Type ftype = EOLIAN_UNRESOLVED; @@ -83,7 +84,7 @@ _generate_ref(const char *refn, Eina_Strbuf *wbuf, Eina_Bool use_legacy) while ((mname != refn) && (*mname != '.')) --mname; if (mname == refn) goto noref; bname = eina_stringshare_add_length(refn, mname - refn); - cl = eolian_class_get_by_name(bname); + cl = eolian_class_get_by_name(src, bname); eina_stringshare_del(bname); } if (cl) @@ -113,8 +114,8 @@ noref: } static int -_append_section(const char *desc, int ind, int curl, Eina_Strbuf *buf, - Eina_Strbuf *wbuf, Eina_Bool use_legacy) +_append_section(const Eolian_Unit *src, const char *desc, int ind, int curl, + Eina_Strbuf *buf, Eina_Strbuf *wbuf, Eina_Bool use_legacy) { Eina_Bool try_note = EINA_TRUE; while (*desc) @@ -165,7 +166,7 @@ _append_section(const char *desc, int ind, int curl, Eina_Strbuf *buf, ++desc; if (*(desc - 1) == '.') --desc; Eina_Stringshare *refn = eina_stringshare_add_length(ref, desc - ref); - _generate_ref(refn, wbuf, use_legacy); + _generate_ref(src, refn, wbuf, use_legacy); eina_stringshare_del(refn); } else @@ -269,8 +270,8 @@ _append_group(Eina_Strbuf *buf, char *sgrp, int indent) } static void -_gen_doc_brief(const char *summary, const char *since, const char *group, - const char *el, int indent, Eina_Strbuf *buf, +_gen_doc_brief(const Eolian_Unit *src, const char *summary, const char *since, + const char *group, const char *el, int indent, Eina_Strbuf *buf, Eina_Bool use_legacy) { int curl = 4 + indent; @@ -279,7 +280,7 @@ _gen_doc_brief(const char *summary, const char *since, const char *group, eina_strbuf_append(buf, "/**< "); else eina_strbuf_append(buf, "/** "); - curl = _append_section(summary, indent, curl, buf, wbuf, use_legacy); + curl = _append_section(src, summary, indent, curl, buf, wbuf, use_legacy); eina_strbuf_free(wbuf); curl = _append_extra(el, indent, curl, EINA_FALSE, buf); curl = _append_since(since, indent, curl, buf); @@ -300,7 +301,8 @@ _gen_doc_brief(const char *summary, const char *since, const char *group, } static void -_gen_doc_full(const char *summary, const char *description, const char *since, +_gen_doc_full(const Eolian_Unit *src, const char *summary, + const char *description, const char *since, const char *group, const char *el, int indent, Eina_Strbuf *buf, Eina_Bool use_legacy) { @@ -313,13 +315,13 @@ _gen_doc_full(const char *summary, const char *description, const char *since, curl += _indent_line(buf, indent); eina_strbuf_append(buf, " * @brief "); curl += sizeof(" * @brief ") - 1; - _append_section(summary, indent, curl, buf, wbuf, use_legacy); + _append_section(src, summary, indent, curl, buf, wbuf, use_legacy); eina_strbuf_append_char(buf, '\n'); _indent_line(buf, indent); eina_strbuf_append(buf, " *\n"); curl = _indent_line(buf, indent); eina_strbuf_append(buf, " * "); - _append_section(description, indent, curl + 3, buf, wbuf, use_legacy); + _append_section(src, description, indent, curl + 3, buf, wbuf, use_legacy); curl = _append_extra(el, indent, curl, EINA_TRUE, buf); curl = _append_since(since, indent, curl, buf); eina_strbuf_append_char(buf, '\n'); @@ -336,8 +338,9 @@ _gen_doc_full(const char *summary, const char *description, const char *since, } static Eina_Strbuf * -_gen_doc_buf(const Eolian_Documentation *doc, const char *group, - const char *el, int indent, Eina_Bool use_legacy) +_gen_doc_buf(const Eolian_Unit *src, const Eolian_Documentation *doc, + const char *group, const char *el, int indent, + Eina_Bool use_legacy) { if (!doc) return NULL; @@ -347,21 +350,22 @@ _gen_doc_buf(const Eolian_Documentation *doc, const char *group, Eina_Strbuf *buf = eina_strbuf_new(); if (!desc) - _gen_doc_brief(sum, since, group, el, indent, buf, use_legacy); + _gen_doc_brief(src, sum, since, group, el, indent, buf, use_legacy); else - _gen_doc_full(sum, desc, since, group, el, indent, buf, use_legacy); + _gen_doc_full(src, sum, desc, since, group, el, indent, buf, use_legacy); return buf; } Eina_Strbuf * -eo_gen_docs_full_gen(const Eolian_Documentation *doc, const char *group, - int indent, Eina_Bool use_legacy) +eo_gen_docs_full_gen(const Eolian_Unit *src, const Eolian_Documentation *doc, + const char *group, int indent, Eina_Bool use_legacy) { - return _gen_doc_buf(doc, group, NULL, indent, use_legacy); + return _gen_doc_buf(src, doc, group, NULL, indent, use_legacy); } Eina_Strbuf * -eo_gen_docs_event_gen(const Eolian_Event *ev, const char *group) +eo_gen_docs_event_gen(const Eolian_Unit *src, const Eolian_Event *ev, + const char *group) { if (!ev) return NULL; @@ -392,12 +396,13 @@ eo_gen_docs_event_gen(const Eolian_Event *ev, const char *group) return bufs; } - return _gen_doc_buf(doc, group, p, 0, EINA_FALSE); + return _gen_doc_buf(src, doc, group, p, 0, EINA_FALSE); } Eina_Strbuf * -eo_gen_docs_func_gen(const Eolian_Function *fid, Eolian_Function_Type ftype, - int indent, Eina_Bool use_legacy) +eo_gen_docs_func_gen(const Eolian_Unit *src, const Eolian_Function *fid, + Eolian_Function_Type ftype, int indent, + Eina_Bool use_legacy) { const Eolian_Function_Parameter *par = NULL; const Eolian_Function_Parameter *vpar = NULL; @@ -506,7 +511,7 @@ eo_gen_docs_func_gen(const Eolian_Function *fid, Eolian_Function_Type ftype, /* only summary, nothing else; generate standard brief doc */ if (!desc && !par && !vpar && !rdoc && (ftype == EOLIAN_METHOD || !pdoc)) { - _gen_doc_brief(sum ? sum : "No description supplied.", since, group, + _gen_doc_brief(src, sum ? sum : "No description supplied.", since, group, NULL, indent, buf, use_legacy); return buf; } @@ -517,7 +522,7 @@ eo_gen_docs_func_gen(const Eolian_Function *fid, Eolian_Function_Type ftype, curl += _indent_line(buf, indent); eina_strbuf_append(buf, " * @brief "); curl += sizeof(" * @brief ") - 1; - _append_section(sum ? sum : "No description supplied.", + _append_section(src, sum ? sum : "No description supplied.", indent, curl, buf, wbuf, use_legacy); eina_strbuf_append_char(buf, '\n'); @@ -531,7 +536,7 @@ eo_gen_docs_func_gen(const Eolian_Function *fid, Eolian_Function_Type ftype, { curl = _indent_line(buf, indent); eina_strbuf_append(buf, " * "); - _append_section(desc, indent, curl + 3, buf, wbuf, use_legacy); + _append_section(src, desc, indent, curl + 3, buf, wbuf, use_legacy); eina_strbuf_append_char(buf, '\n'); if (par || rdoc || pdoc || since) { @@ -545,7 +550,7 @@ eo_gen_docs_func_gen(const Eolian_Function *fid, Eolian_Function_Type ftype, const char *pdesc = eolian_documentation_description_get(pdoc); curl = _indent_line(buf, indent); eina_strbuf_append(buf, " * "); - _append_section(eolian_documentation_summary_get(pdoc), indent, + _append_section(src, eolian_documentation_summary_get(pdoc), indent, curl + 3, buf, wbuf, use_legacy); eina_strbuf_append_char(buf, '\n'); if (pdesc) @@ -554,7 +559,7 @@ eo_gen_docs_func_gen(const Eolian_Function *fid, Eolian_Function_Type ftype, eina_strbuf_append(buf, " *\n"); curl = _indent_line(buf, indent); eina_strbuf_append(buf, " * "); - _append_section(pdesc, indent, curl + 3, buf, wbuf, use_legacy); + _append_section(src, pdesc, indent, curl + 3, buf, wbuf, use_legacy); eina_strbuf_append_char(buf, '\n'); } if (par || rdoc || since) @@ -597,7 +602,7 @@ eo_gen_docs_func_gen(const Eolian_Function *fid, Eolian_Function_Type ftype, { eina_strbuf_append_char(buf, ' '); curl += 1; - _append_section(eolian_documentation_summary_get(adoc), + _append_section(src, eolian_documentation_summary_get(adoc), indent, curl, buf, wbuf, use_legacy); } @@ -630,8 +635,8 @@ eo_gen_docs_func_gen(const Eolian_Function *fid, Eolian_Function_Type ftype, curl = _indent_line(buf, indent); eina_strbuf_append(buf, " * @return "); curl += sizeof(" * @return ") - 1; - _append_section(eolian_documentation_summary_get(rdoc), indent, curl, - buf, wbuf, use_legacy); + _append_section(src, eolian_documentation_summary_get(rdoc), indent, + curl, buf, wbuf, use_legacy); eina_strbuf_append_char(buf, '\n'); if (since) { diff --git a/src/bin/eolian/docs.h b/src/bin/eolian/docs.h index eaaa118..69dbc3e 100644 --- a/src/bin/eolian/docs.h +++ b/src/bin/eolian/docs.h @@ -14,7 +14,7 @@ * @return A documentation comment * */ -Eina_Strbuf *eo_gen_docs_full_gen(const Eolian_Documentation *doc, const char *group, int indent, Eina_Bool use_legacy); +Eina_Strbuf *eo_gen_docs_full_gen(const Eolian_Unit *unit, const Eolian_Documentation *doc, const char *group, int indent, Eina_Bool use_legacy); /* * @brief Generate function documentation @@ -27,7 +27,7 @@ Eina_Strbuf *eo_gen_docs_full_gen(const Eolian_Documentation *doc, const char *g * @return A documentation comment * */ -Eina_Strbuf *eo_gen_docs_func_gen(const Eolian_Function *fid, Eolian_Function_Type ftype, int indent, Eina_Bool use_legacy); +Eina_Strbuf *eo_gen_docs_func_gen(const Eolian_Unit *unit, const Eolian_Function *fid, Eolian_Function_Type ftype, int indent, Eina_Bool use_legacy); /* * @brief Generate event documentation @@ -38,7 +38,7 @@ Eina_Strbuf *eo_gen_docs_func_gen(const Eolian_Function *fid, Eolian_Function_Ty * @return A documentation comment * */ -Eina_Strbuf *eo_gen_docs_event_gen(const Eolian_Event *ev, const char *group); +Eina_Strbuf *eo_gen_docs_event_gen(const Eolian_Unit *unit, const Eolian_Event *ev, const char *group); #endif diff --git a/src/bin/eolian/headers.c b/src/bin/eolian/headers.c index 27f498e..8538731 100644 --- a/src/bin/eolian/headers.c +++ b/src/bin/eolian/headers.c @@ -12,8 +12,9 @@ _get_add_star(Eolian_Function_Type ftype, Eolian_Parameter_Dir pdir) } static void -_gen_func(const Eolian_Function *fid, Eolian_Function_Type ftype, - Eina_Strbuf *buf, char *cname, char *cnameu, Eina_Bool legacy) +_gen_func(const Eolian_Unit *src, const Eolian_Function *fid, + Eolian_Function_Type ftype, Eina_Strbuf *buf, char *cname, + char *cnameu, Eina_Bool legacy) { Eina_Stringshare *fcn = eolian_function_full_c_name_get(fid, ftype, legacy); if (!fcn) @@ -49,7 +50,7 @@ _gen_func(const Eolian_Function *fid, Eolian_Function_Type ftype, hasdoc = !!eolian_implement_documentation_get(fimp, EOLIAN_PROPERTY); if (hasdoc) { - Eina_Strbuf *dbuf = eo_gen_docs_func_gen(fid, ftype, 0, legacy); + Eina_Strbuf *dbuf = eo_gen_docs_func_gen(src, fid, ftype, 0, legacy); eina_strbuf_append(buf, eina_strbuf_string_get(dbuf)); eina_strbuf_append_char(buf, '\n'); eina_strbuf_free(dbuf); @@ -183,7 +184,7 @@ _gen_func(const Eolian_Function *fid, Eolian_Function_Type ftype, } void -eo_gen_header_gen(const Eolian_Unit *src EINA_UNUSED, const Eolian_Class *cl, +eo_gen_header_gen(const Eolian_Unit *src, const Eolian_Class *cl, Eina_Strbuf *buf, Eina_Bool legacy) { if (!cl) @@ -199,7 +200,7 @@ eo_gen_header_gen(const Eolian_Unit *src EINA_UNUSED, const Eolian_Class *cl, const Eolian_Documentation *doc = eolian_class_documentation_get(cl); if (doc) { - Eina_Strbuf *cdoc = eo_gen_docs_full_gen(doc, + Eina_Strbuf *cdoc = eo_gen_docs_full_gen(src, doc, eolian_class_full_name_get(cl), 0, EINA_FALSE); if (cdoc) { @@ -239,15 +240,15 @@ eo_gen_header_gen(const Eolian_Unit *src EINA_UNUSED, const Eolian_Class *cl, { case EOLIAN_PROP_GET: case EOLIAN_PROP_SET: - _gen_func(fid, ftype, buf, cname, cnameu, legacy); + _gen_func(src, fid, ftype, buf, cname, cnameu, legacy); break; case EOLIAN_PROPERTY: - _gen_func(fid, EOLIAN_PROP_SET, buf, cname, cnameu, legacy); + _gen_func(src, fid, EOLIAN_PROP_SET, buf, cname, cnameu, legacy); eina_strbuf_append_char(buf, '\n'); - _gen_func(fid, EOLIAN_PROP_GET, buf, cname, cnameu, legacy); + _gen_func(src, fid, EOLIAN_PROP_GET, buf, cname, cnameu, legacy); break; default: - _gen_func(fid, EOLIAN_METHOD, buf, cname, cnameu, legacy); + _gen_func(src, fid, EOLIAN_METHOD, buf, cname, cnameu, legacy); } } eina_iterator_free(itr); @@ -284,7 +285,7 @@ events: eina_strbuf_append_printf(buf, "EWAPI extern const " "Efl_Event_Description _%s;\n\n", evn); - Eina_Strbuf *evdbuf = eo_gen_docs_event_gen(ev, + Eina_Strbuf *evdbuf = eo_gen_docs_event_gen(src, ev, eolian_class_full_name_get(cl)); eina_strbuf_append(buf, eina_strbuf_string_get(evdbuf)); eina_strbuf_append_char(buf, '\n'); diff --git a/src/bin/eolian/main.c b/src/bin/eolian/main.c index 5319fde..7084ff3 100644 --- a/src/bin/eolian/main.c +++ b/src/bin/eolian/main.c @@ -305,7 +305,7 @@ _write_header(const Eolian_Unit *src, const char *ofname, eina_strbuf_free(cltd); } - const Eolian_Class *cl = eolian_class_get_by_file(ifname); + const Eolian_Class *cl = eolian_class_get_by_file(src, ifname); eo_gen_header_gen(src, cl, buf, legacy); if (cl || !legacy) { @@ -352,7 +352,7 @@ _write_source(const Eolian_Unit *src, const char *ofname, INF("generating source: %s", ofname); Eina_Strbuf *buf = eina_strbuf_new(); - const Eolian_Class *cl = eolian_class_get_by_file(ifname); + const Eolian_Class *cl = eolian_class_get_by_file(src, ifname); eo_gen_types_source_gen(src, ifname, buf); eo_gen_source_gen(src, cl, buf); if (cl || (eot && eina_strbuf_length_get(buf))) @@ -373,7 +373,7 @@ _write_impl(const Eolian_Unit *src, const char *ofname, const char *ifname) { INF("generating impl: %s", ofname); - const Eolian_Class *cl = eolian_class_get_by_file(ifname); + const Eolian_Class *cl = eolian_class_get_by_file(src, ifname); if (!cl) return EINA_FALSE; diff --git a/src/bin/eolian/sources.c b/src/bin/eolian/sources.c index 9ffb2ad..d58a702 100644 --- a/src/bin/eolian/sources.c +++ b/src/bin/eolian/sources.c @@ -636,7 +636,7 @@ _gen_initializer(const Eolian_Class *cl, Eina_Strbuf *buf) } void -eo_gen_source_gen(const Eolian_Unit *src EINA_UNUSED, +eo_gen_source_gen(const Eolian_Unit *src, const Eolian_Class *cl, Eina_Strbuf *buf) { if (!cl) @@ -763,7 +763,7 @@ eo_gen_source_gen(const Eolian_Unit *src EINA_UNUSED, eina_strbuf_append(buf, ", NULL"); EINA_ITERATOR_FOREACH(itr, iname) { - const Eolian_Class *icl = eolian_class_get_by_name(iname); + const Eolian_Class *icl = eolian_class_get_by_name(src, iname); Eina_Stringshare *mname = eolian_class_c_name_get(icl); eina_strbuf_append_printf(buf, ", %s", mname); eina_stringshare_del(mname); diff --git a/src/bin/eolian/types.c b/src/bin/eolian/types.c index 85faf24..bd928dc 100644 --- a/src/bin/eolian/types.c +++ b/src/bin/eolian/types.c @@ -2,12 +2,13 @@ #include "docs.h" static Eina_Strbuf * -_type_generate(const Eolian_Typedecl *tp, Eina_Bool full, Eina_Bool legacy) +_type_generate(const Eolian_Unit *src, const Eolian_Typedecl *tp, + Eina_Bool full, Eina_Bool legacy) { char *grp = strdup(eolian_typedecl_full_name_get(tp)); char *p = strrchr(grp, '.'); if (p) *p = '\0'; - Eina_Strbuf *buf = eo_gen_docs_full_gen(eolian_typedecl_documentation_get(tp), + Eina_Strbuf *buf = eo_gen_docs_full_gen(src, eolian_typedecl_documentation_get(tp), grp, 0, legacy); free(grp); if (!buf) buf = eina_strbuf_new(); @@ -62,7 +63,7 @@ _type_generate(const Eolian_Typedecl *tp, Eina_Bool full, Eina_Bool legacy) const char *nl = strrchr(eina_strbuf_string_get(buf), '\n'); if (nl) { - Eina_Strbuf *fbuf = eo_gen_docs_full_gen(fdoc, NULL, + Eina_Strbuf *fbuf = eo_gen_docs_full_gen(src, fdoc, NULL, strlen(nl), legacy); if (fbuf) eina_strbuf_append_printf(buf, " %s", @@ -116,7 +117,7 @@ _type_generate(const Eolian_Typedecl *tp, Eina_Bool full, Eina_Bool legacy) const char *nl = strrchr(eina_strbuf_string_get(buf), '\n'); if (nl) { - Eina_Strbuf *fbuf = eo_gen_docs_full_gen(fdoc, NULL, + Eina_Strbuf *fbuf = eo_gen_docs_full_gen(src, fdoc, NULL, strlen(nl), legacy); if (fbuf) eina_strbuf_append_printf(buf, " %s", @@ -140,12 +141,12 @@ _type_generate(const Eolian_Typedecl *tp, Eina_Bool full, Eina_Bool legacy) } static Eina_Strbuf * -_var_generate(const Eolian_Variable *vr, Eina_Bool legacy) +_var_generate(const Eolian_Unit *src, const Eolian_Variable *vr, Eina_Bool legacy) { char *fn = strdup(eolian_variable_full_name_get(vr)); char *p = strrchr(fn, '.'); if (p) *p = '\0'; - Eina_Strbuf *buf = eo_gen_docs_full_gen(eolian_variable_documentation_get(vr), + Eina_Strbuf *buf = eo_gen_docs_full_gen(src, eolian_variable_documentation_get(vr), fn, 0, legacy); if (p) { @@ -183,7 +184,7 @@ _var_generate(const Eolian_Variable *vr, Eina_Bool legacy) return buf; } -void eo_gen_types_header_gen(const Eolian_Unit *src EINA_UNUSED, +void eo_gen_types_header_gen(const Eolian_Unit *src, const char *eof, Eina_Strbuf *buf, Eina_Bool full, Eina_Bool legacy) { @@ -200,7 +201,7 @@ void eo_gen_types_header_gen(const Eolian_Unit *src EINA_UNUSED, if (!vr || eolian_variable_is_extern(vr)) continue; - Eina_Strbuf *vbuf = _var_generate(vr, legacy); + Eina_Strbuf *vbuf = _var_generate(src, vr, legacy); if (vbuf) { eina_strbuf_append(buf, eina_strbuf_string_get(vbuf)); @@ -228,7 +229,7 @@ void eo_gen_types_header_gen(const Eolian_Unit *src EINA_UNUSED, continue; } - Eina_Strbuf *tbuf = _type_generate(tp, full, legacy); + Eina_Strbuf *tbuf = _type_generate(src, tp, full, legacy); if (tbuf) { eina_strbuf_append(buf, eina_strbuf_string_get(tbuf)); @@ -287,10 +288,9 @@ void eo_gen_types_source_gen(const Eolian_Unit *src EINA_UNUSED, } } -Eina_Strbuf *eo_gen_class_typedef_gen(const Eolian_Unit *src EINA_UNUSED, - const char *eof) +Eina_Strbuf *eo_gen_class_typedef_gen(const Eolian_Unit *src, const char *eof) { - const Eolian_Class *cl = eolian_class_get_by_file(eof); + const Eolian_Class *cl = eolian_class_get_by_file(src, eof); if (!cl) return NULL; char *clfn = eo_gen_c_full_name_get(eolian_class_full_name_get(cl)); diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua index 5defce5..f4d6285 100644 --- a/src/bindings/luajit/eolian.lua +++ b/src/bindings/luajit/eolian.lua @@ -230,8 +230,8 @@ ffi.cdef [[ Eina_Bool eolian_all_eo_files_parse(); Eina_Bool eolian_all_eot_files_parse(); Eina_Bool eolian_database_validate(); - const Eolian_Class *eolian_class_get_by_name(const char *class_name); - const Eolian_Class *eolian_class_get_by_file(const char *file_name); + const Eolian_Class *eolian_class_get_by_name(const Eolian_Unit *unit, const char *class_name); + const Eolian_Class *eolian_class_get_by_file(const Eolian_Unit *unit, const char *file_name); const char *eolian_class_file_get(const Eolian_Class *klass); const char *eolian_class_full_name_get(const Eolian_Class *klass); const char *eolian_class_name_get(const Eolian_Class *klass); @@ -1008,14 +1008,14 @@ ffi.metatype("Eolian_Event", { } }) -M.class_get_by_name = function(cname) - local v = eolian.eolian_class_get_by_name(cname) +M.class_get_by_name = function(unit, cname) + local v = eolian.eolian_class_get_by_name(unit, cname) if v == nil then return nil end return v end -M.class_get_by_file = function(fname) - local v = eolian.eolian_class_get_by_file(fname) +M.class_get_by_file = function(unit, fname) + local v = eolian.eolian_class_get_by_file(unit, fname) if v == nil then return nil end return v end diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h index 2631e90..89cb7ef 100644 --- a/src/lib/eolian/Eolian.h +++ b/src/lib/eolian/Eolian.h @@ -517,22 +517,24 @@ EAPI Eina_Bool eolian_database_validate(); /* * @brief Gets a class by its name * + * @param[in] unit the unit to look in * @param[in] class_name name of the class to get. * @return the class * * @ingroup Eolian */ -EAPI const Eolian_Class *eolian_class_get_by_name(const char *class_name); +EAPI const Eolian_Class *eolian_class_get_by_name(const Eolian_Unit *unit, const char *class_name); /* * @brief Gets a class by its filename (name.eo) * + * @param[in] unit the unit to look in * @param[in] file_name the filename * @return the class stored in the file * * @ingroup Eolian */ -EAPI const Eolian_Class *eolian_class_get_by_file(const char *file_name); +EAPI const Eolian_Class *eolian_class_get_by_file(const Eolian_Unit *unit, const char *file_name); /* * @brief Returns the name of the file containing the given class. diff --git a/src/lib/eolian/database_class_api.c b/src/lib/eolian/database_class_api.c index ebbe5dd..674ceef 100644 --- a/src/lib/eolian/database_class_api.c +++ b/src/lib/eolian/database_class_api.c @@ -31,7 +31,8 @@ eolian_class_namespaces_get(const Eolian_Class *cl) } EAPI const Eolian_Class * -eolian_class_get_by_name(const char *class_name) +eolian_class_get_by_name(const Eolian_Unit *unit EINA_UNUSED, + const char *class_name) { if (!_classes) return NULL; Eina_Stringshare *shr = eina_stringshare_add(class_name); @@ -41,7 +42,8 @@ eolian_class_get_by_name(const char *class_name) } EAPI const Eolian_Class * -eolian_class_get_by_file(const char *file_name) +eolian_class_get_by_file(const Eolian_Unit *unit EINA_UNUSED, + const char *file_name) { if (!_classesf) return NULL; Eina_Stringshare *shr = eina_stringshare_add(file_name); diff --git a/src/lib/eolian/database_type_api.c b/src/lib/eolian/database_type_api.c index b78d619..14a50b0 100644 --- a/src/lib/eolian/database_type_api.c +++ b/src/lib/eolian/database_type_api.c @@ -310,7 +310,8 @@ eolian_type_class_get(const Eolian_Type *tp) EINA_SAFETY_ON_NULL_RETURN_VAL(tp, NULL); if (eolian_type_type_get(tp) != EOLIAN_TYPE_CLASS) return NULL; - return eolian_class_get_by_name(tp->full_name); + /* FIXME: pass unit properly */ + return eolian_class_get_by_name(NULL, tp->full_name); } EAPI size_t diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index d5ab638..c93b60d 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -1984,7 +1984,8 @@ _inherit_dep(Eo_Lexer *ls, Eina_Strbuf *buf, Eina_Bool check_inherit, eo_lexer_syntax_error(ls, ebuf); } _parse_dep(ls, fname, iname); - const Eolian_Class *dep = eolian_class_get_by_name(iname); + /* FIXME: pass unit properly */ + const Eolian_Class *dep = eolian_class_get_by_name(NULL, iname); if (!dep) { char ebuf[PATH_MAX]; @@ -2242,7 +2243,8 @@ _get_impl_class(const Eolian_Class *cl, const char *cln) /* we can do a depth first search, it's easier and doesn't matter * which part of the inheritance tree we find the class in */ - const Eolian_Class *fcl = _get_impl_class(eolian_class_get_by_name(s), cln); + /* FIXME: pass unit properly */ + const Eolian_Class *fcl = _get_impl_class(eolian_class_get_by_name(NULL, s), cln); if (fcl) return fcl; } diff --git a/src/lib/eolian/eolian_database.c b/src/lib/eolian/eolian_database.c index afd52df..a1b5835 100644 --- a/src/lib/eolian/eolian_database.c +++ b/src/lib/eolian/eolian_database.c @@ -467,7 +467,8 @@ _resolve_event(char *name, const void **data, const void **data2) return EOLIAN_DOC_REF_INVALID; *evname++ = '\0'; - const Eolian_Class *cl = eolian_class_get_by_name(name); + /* FIXME: pass unit properly */ + const Eolian_Class *cl = eolian_class_get_by_name(NULL, name); if (!cl) return EOLIAN_DOC_REF_INVALID; @@ -581,7 +582,8 @@ eolian_doc_token_ref_get(const Eolian_Doc_Token *tok, const void **data, *suffix++ = '\0'; } - const Eolian_Class *cl = eolian_class_get_by_name(name); + /* FIXME: pass unit properly */ + const Eolian_Class *cl = eolian_class_get_by_name(NULL, name); if (!cl) return EOLIAN_DOC_REF_INVALID; -- 2.7.4