Eolian/Generator: support legacy as option.
authorDaniel Zaoui <daniel.zaoui@samsung.com>
Thu, 13 Feb 2014 15:12:19 +0000 (17:12 +0200)
committerDaniel Zaoui <daniel.zaoui@samsung.com>
Mon, 3 Mar 2014 12:09:54 +0000 (14:09 +0200)
For the moment, the option works for C files. Have to add support for H
files.

src/bin/eolian/legacy_generator.c
src/bin/eolian/legacy_generator.h
src/bin/eolian/main.c

index 207772859b9cbbb887973201f6c7f109192ad87b..099f8b4d16bfc508ea778acedfe275b5fa00ea33 100644 (file)
@@ -397,7 +397,7 @@ legacy_header_append(const char *classname, int eo_version, Eina_Strbuf *header)
 }
 
 Eina_Bool
-legacy_source_generate(const char *classname, int eo_version, Eina_Strbuf *buf)
+legacy_source_generate(const char *classname, Eina_Bool legacy, int eo_version, Eina_Strbuf *buf)
 {
    const Eina_List *itr;
 
@@ -424,12 +424,12 @@ legacy_source_generate(const char *classname, int eo_version, Eina_Strbuf *buf)
         if (prop_read)
           {
              eo1_bind_func_generate(classname, fn, GET, str_bodyf);
-             _eapi_func_generate(classname, fn, GET, str_bodyf);
+             if (legacy) _eapi_func_generate(classname, fn, GET, str_bodyf);
           }
         if (prop_write)
           {
              eo1_bind_func_generate(classname, fn, SET, str_bodyf);
-             _eapi_func_generate(classname, fn, SET, str_bodyf);
+             if (legacy) _eapi_func_generate(classname, fn, SET, str_bodyf);
           }
      }
 
@@ -437,7 +437,7 @@ legacy_source_generate(const char *classname, int eo_version, Eina_Strbuf *buf)
    EINA_LIST_FOREACH(eolian_class_functions_list_get(classname, METHOD_FUNC), itr, fn)
      {
         eo1_bind_func_generate(classname, fn, UNRESOLVED, str_bodyf);
-        _eapi_func_generate(classname, fn, UNRESOLVED, str_bodyf);
+        if (legacy) _eapi_func_generate(classname, fn, UNRESOLVED, str_bodyf);
      }
 
    eina_strbuf_append(buf, eina_strbuf_string_get(str_bodyf));
index 5f22afa811dc247d0ad8e8c43493050401e2f2be..39445f30addd2b795a944a228a1da0231101de6d 100644 (file)
@@ -41,13 +41,14 @@ Eina_Bool legacy_header_append(const char *classname, int eo_version, Eina_Strbu
  * code from scratch.
  *
  * @param[in] classname class name
+ * @param[in] legacy indicates if the legacy has to be generated
  * @param[in] eo_version Eo version to generate
  * @param[inout] buf buffer to fill
  *
  * @return EINA_TRUE on success, EINA_FALSE on error.
  *
  */
-Eina_Bool legacy_source_generate(const char *classname, int eo_version, Eina_Strbuf *buf);
+Eina_Bool legacy_source_generate(const char *classname, Eina_Bool legacy, int eo_version, Eina_Strbuf *buf);
 
 #endif
 
index 08d0bae9893032ab80e174bc52dc718e577ed168..ab74a3b246d42f708610cbaff3fcc5fb44797d6e 100644 (file)
@@ -10,6 +10,7 @@
 #define EO_SUFFIX ".eo"
 
 static int eo_version = 0;
+static Eina_Bool legacy_support = EINA_FALSE;
 
 static Eina_Bool
 _generate_h_file(char *filename, char *classname, Eina_Bool append)
@@ -58,7 +59,7 @@ _generate_c_file(char *filename, char *classname, Eina_Bool append)
    Eina_Bool ret = EINA_FALSE;
 
    Eina_Strbuf *cfile = eina_strbuf_new();
-   legacy_source_generate(classname, eo_version, cfile);
+   legacy_source_generate(classname, legacy_support, eo_version, cfile);
 
    FILE* fd = fopen(filename, (append) ? "a" : "w");
    if (!fd)
@@ -171,6 +172,7 @@ int main(int argc, char **argv)
           {"ah",         required_argument,   0, 3},
           {"al",         required_argument,   0, 4},
           {"gle",        required_argument,   0, 5},
+          {"legacy",     no_argument,         0, 6},
           {"include",    required_argument,   0, 'I'},
           {"class",      required_argument,   0, 'c'},
           {0, 0, 0, 0}
@@ -185,6 +187,7 @@ int main(int argc, char **argv)
            case 3: h_filename = optarg; happend = EINA_TRUE; break;
            case 4: leg_filename = optarg; lappend = EINA_TRUE; break;
            case 5: eoleg_filename = optarg; break;
+           case 6: legacy_support = EINA_TRUE; break;
            case 'V': show = EINA_TRUE; break;
            case 'h': help = EINA_TRUE; break;
            case 'I':
@@ -225,13 +228,14 @@ int main(int argc, char **argv)
 
    if (!files || help || !classname)
      {
-        printf("Usage: %s [-h/--help] [-V/--verbose] [-I/--include input_dir] [--gh|--gc|--ah] filename [-c/--class] classname \n", argv[0]);
+        printf("Usage: %s [-h/--help] [-V/--verbose] [-I/--include input_dir] [--legacy] [--gh|--gc|--ah] filename [-c/--class] classname \n", argv[0]);
         printf("       --eo1/--eo2 Set generator to eo1/eo2 mode. Must be specified\n");
         printf("       --gh Generate c header file [.h] for eo class specified by classname\n");
         printf("       --gc Generate c source file [.c] for eo class specified by classname\n");
         printf("       --ah Append eo class definitions to an existing c header file [.h]\n");
         printf("       --al Append legacy function definitions to an existing c header file [.h]\n");
         printf("       --gle Generate eo and legacy file [.h]\n");
+        printf("       --legacy Generate legacy\n");
         return 0;
      }