eolian: pass unit to class get_by_name/file
authorDaniel Kolesa <d.kolesa@osg.samsung.com>
Wed, 24 May 2017 14:36:23 +0000 (16:36 +0200)
committerDaniel Kolesa <d.kolesa@osg.samsung.com>
Tue, 30 May 2017 15:15:53 +0000 (17:15 +0200)
12 files changed:
src/bin/eolian/docs.c
src/bin/eolian/docs.h
src/bin/eolian/headers.c
src/bin/eolian/main.c
src/bin/eolian/sources.c
src/bin/eolian/types.c
src/bindings/luajit/eolian.lua
src/lib/eolian/Eolian.h
src/lib/eolian/database_class_api.c
src/lib/eolian/database_type_api.c
src/lib/eolian/eo_parser.c
src/lib/eolian/eolian_database.c

index 1e89b55..842376c 100644 (file)
@@ -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)
           {
index eaaa118..69dbc3e 100644 (file)
@@ -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
 
index 27f498e..8538731 100644 (file)
@@ -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');
index 5319fde..7084ff3 100644 (file)
@@ -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;
 
index 9ffb2ad..d58a702 100644 (file)
@@ -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);
index 85faf24..bd928dc 100644 (file)
@@ -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));
index 5defce5..f4d6285 100644 (file)
@@ -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
index 2631e90..89cb7ef 100644 (file)
@@ -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.
index ebbe5dd..674ceef 100644 (file)
@@ -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);
index b78d619..14a50b0 100644 (file)
@@ -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
index d5ab638..c93b60d 100644 (file)
@@ -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;
      }
index afd52df..a1b5835 100644 (file)
@@ -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;