Eolian: Code review fixes
authorYossi Kantor <yossi.kantor@samsung.com>
Sun, 16 Feb 2014 09:41:38 +0000 (11:41 +0200)
committerDaniel Zaoui <daniel.zaoui@samsung.com>
Mon, 3 Mar 2014 12:09:54 +0000 (14:09 +0200)
1) API defined under EFL_BETA_API_SUPPORT
2) Init counters for init and shutdown
3) void for no-parameters functions

src/bin/eolian/common_funcs.c
src/bin/eolian/common_funcs.h
src/bin/eolian/eo1_generator.c
src/bin/eolian/legacy_generator.c
src/lib/eolian/Eolian.h
src/lib/eolian/eolian.c
src/lib/eolian/eolian_database.c
src/lib/eolian/eolian_database.h

index dbd2c329a3af0ea9338ba91600d5ed587f1a1373..3962f272eec8a931f09785ae80ee4a761e73113b 100644 (file)
@@ -71,3 +71,41 @@ _template_fill(Eina_Strbuf *buf, const char* templ, const char* classname, const
    eina_strbuf_replace_all(buf, "@#eoprefix", eoprefix);
 }
 
+char*
+_nextline(char *str, unsigned int lines)
+{
+   if (!str) return NULL;
+
+   char *ret = str;
+   while ((lines--) && *ret)
+     {
+        ret= strchr(ret, '\n');
+        if (ret) ret++;
+     }
+   return ret;
+}
+
+char*
+_startline(char *str, char *pos)
+{
+   if (!str || !pos) return NULL;
+
+   char *ret =  pos;
+   while ((ret > str) && (*(ret-1)!='\n')) ret--;
+
+   return ret;
+}
+
+char*
+_first_line_get(const char *str)
+{
+   Eina_Strbuf *ret = eina_strbuf_new();
+   if (str)
+     {
+        const char *p = strchr(str, '\n');
+        size_t offs = (p) ? (size_t)(p - str) : strlen(str);
+        eina_strbuf_append_n(ret, str, offs);
+     }
+   return eina_strbuf_string_steal(ret);
+}
+
index d0c67e0bd708fa58e50bd382e5ed16c2bd3d9b54..5a777ea0ae4428e7c1bd932dc4e9f159e950a132 100644 (file)
@@ -5,4 +5,10 @@
 
 void _template_fill(Eina_Strbuf *buf, const char* templ, const char* classname, const char *funcname, Eina_Bool reset);
 
+char *_nextline(char *str, unsigned int lines);
+
+char *_startline(char *str, char *pos);
+
+char *_first_line_get(const char *str);
+
 #endif
index 9a424b82fd19d2e747a77ec6b50f1d1ff6030a9a..60f12af55c73f21960d92333beadf2df21471291 100644 (file)
@@ -108,19 +108,6 @@ _eo_obj_@#class_@#func(Eo *obj, void *_pd EINA_UNUSED, va_list *list@#list_unuse
 }\n\
 ";
 
-char *
-_first_line_get(const char *str)
-{
-   Eina_Strbuf *ret = eina_strbuf_new();
-   if (str)
-     {
-        const char *p = strchr(str, '\n');
-        size_t offs = (p) ? (size_t)(p - str) : strlen(str);
-        eina_strbuf_append_n(ret, str, offs);
-     }
-   return eina_strbuf_string_steal(ret);
-}
-
 Eina_Bool
 eo1_enum_append(const char *classname, const char *funcname, Eina_Strbuf *str)
 {
index 099f8b4d16bfc508ea778acedfe275b5fa00ea33..84fe51e8f92f52f40e6efa6f08dc89b7ced855a4 100644 (file)
@@ -280,31 +280,6 @@ legacy_header_generate(const char *classname, int eo_version, Eina_Strbuf *buf)
    return EINA_TRUE;
 }
 
-static char*
-_nextline(char *str, unsigned int lines)
-{
-   if (!str) return NULL;
-
-   char *ret = str;
-   while ((lines--) && *ret)
-     {
-        ret= strchr(ret, '\n');
-        if (ret) ret++;
-     }
-   return ret;
-}
-
-static char*
-_startline(char *str, char *pos)
-{
-   if (!str || !pos) return NULL;
-
-   char *ret =  pos;
-   while ((ret > str) && (*(ret-1)!='\n')) ret--;
-
-   return ret;
-}
-
 Eina_Bool
 legacy_header_append(const char *classname, int eo_version, Eina_Strbuf *header)
 {
@@ -449,4 +424,3 @@ legacy_source_generate(const char *classname, Eina_Bool legacy, int eo_version,
 
    return EINA_TRUE;
 }
-
index 4f8e423dcc5ec3be537b741d60ab074a4287ed29..4767ce212d896dce68b54ef5d15ee60aba282e8c 100644 (file)
@@ -6,6 +6,10 @@ extern "C" {
 #endif
 
 #include <Eina.h>
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
 
 /* Function Id used to extract information on class functions
  *
@@ -84,6 +88,8 @@ typedef enum
    EOLIAN_CLASS_INTERFACE
 } Eolian_Class_Type;
 
+#ifdef EFL_BETA_API_SUPPORT
+
 /*
  * @brief Parse a given .eo file and fill the database.
  *
@@ -101,14 +107,14 @@ EAPI Eina_Bool eolian_eo_file_parse(const char *filename);
  *
  * @ingroup Eolian
  */
-EAPI Eina_Bool eolian_init();
+EAPI int eolian_init(void);
 
 /*
  * @brief Shutdown Eolian.
  *
  * @ingroup Eolian
  */
-EAPI Eina_Bool eolian_shutdown();
+EAPI int eolian_shutdown(void);
 
 /*
  * @brief Show information about a given class.
@@ -140,7 +146,7 @@ EAPI Eolian_Class_Type eolian_class_type_get(const char *class_name);
  * @ingroup Eolian
  */
 /* Returns the list of class names of the database */
-EAPI const Eina_List *eolian_class_names_list_get();
+EAPI const Eina_List *eolian_class_names_list_get(void);
 
 /*
  * @brief Indicates if class exists in the database.
@@ -404,6 +410,8 @@ EAPI const Eina_List *eolian_class_events_list_get(const char *class_name);
  */
 EAPI Eina_Bool eolian_class_event_information_get(Eolian_Event event, const char **event_name, const char **event_desc);
 
+#endif
+
 #ifdef __cplusplus
 } // extern "C" {
 #endif
index 98793b7bd09efb1bdb849caecbf26d6014500d80..41c4dc9492ee01e8b85695b8ad694bec70876d2f 100644 (file)
@@ -2,18 +2,32 @@
 #include "eolian_database.h"
 #include "eo_lexer.h"
 
-EAPI Eina_Bool eolian_init()
+static int _eolian_init_counter = 0;
+
+EAPI int eolian_init(void)
 {
+   if (_eolian_init_counter > 0) return ++_eolian_init_counter;
    database_init();
    eo_tokenizer_init();
-   return EINA_TRUE;
+   return ++_eolian_init_counter;
 }
 
-EAPI Eina_Bool eolian_shutdown()
+EAPI int eolian_shutdown(void)
 {
-   eo_tokenizer_shutdown();
-   database_shutdown();
-   return EINA_TRUE;
+   if (_eolian_init_counter <= 0)
+     {
+        EINA_LOG_ERR("Init count not greater than 0 in shutdown.");
+        return 0;
+     }
+   _eolian_init_counter--;
+
+   if (_eolian_init_counter == 0)
+     {
+        eo_tokenizer_shutdown();
+        database_shutdown();
+     }
+
+   return _eolian_init_counter;
 }
 
 EAPI Eina_Bool eolian_eo_file_parse(const char *filename)
index 0ba7148cefc372386910ce79c97d5d5b3699abf9..4a7e579d4bd4e89300d6f319a84733aa72b057e0 100644 (file)
@@ -2,6 +2,7 @@
 #include "eolian_database.h"
 
 static Eina_Hash *_classes = NULL;
+static int _database_init_count = 0;
 
 typedef struct
 {
@@ -122,21 +123,32 @@ _class_get(const char *class_name)
    return cl;
 }
 
-Eina_Bool
+int
 database_init()
 {
+   if (_database_init_count > 0) return ++_database_init_count;
    eina_init();
    if (!_classes)
       _classes = eina_hash_stringshared_new(_hash_free_cb);
-   return EINA_TRUE;
+   return ++_database_init_count;
 }
 
-Eina_Bool
+int
 database_shutdown()
 {
-   eina_hash_free(_classes);
-   eina_shutdown();
-   return EINA_TRUE;
+   if (_database_init_count <= 0)
+     {
+        EINA_LOG_ERR("Init count not greater than 0 in shutdown.");
+        return 0;
+     }
+   _database_init_count--;
+
+   if (_database_init_count == 0)
+     {
+        eina_hash_free(_classes);
+        eina_shutdown();
+     }
+   return _database_init_count;
 }
 
 Eina_Bool
@@ -186,7 +198,7 @@ static Eina_Bool _class_name_get(const Eina_Hash *hash EINA_UNUSED, const void *
 }
 
 EAPI const Eina_List *
-eolian_class_names_list_get()
+eolian_class_names_list_get(void)
 {
    Eina_List *list = NULL;
    eina_hash_foreach(_classes, _class_name_get, &list);
index f5090443888678340f97326f0310b545886e6962..1ca208690e7767369f92cf02aad7e340c4b1a993 100644 (file)
@@ -3,8 +3,8 @@
 
 #include <Eolian.h>
 
-Eina_Bool database_init();
-Eina_Bool database_shutdown();
+int database_init();
+int database_shutdown();
 
 /* Add a class in the database */
 Eina_Bool database_class_add(const char *class_name, Eolian_Class_Type type);