Enlightenment CVS committal

Author  : handyande
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/lib/ecore_config


Modified Files:
        ecore_config_db.c ecore_config_ipc_ecore.c 
        ecore_config_private.h ecore_config_storage.c 


Log Message:
start an ecore_config overhaul - things will break, but overall we will be happy
step 1) start abstraction of read/write to eet file - this will be moved to 
handlers and [en|de]coders shortly - lists will follow this
this breaks current .eet config files, but the API remains the same
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_config/ecore_config_db.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- ecore_config_db.c   2 Mar 2005 07:06:34 -0000       1.4
+++ ecore_config_db.c   7 Jun 2005 20:08:16 -0000       1.5
@@ -83,7 +83,7 @@
    return keys;
 }
 
-char *
+Ecore_Config_Type
 _ecore_config_db_key_type_get(Ecore_Config_DB_File *db, const char *key)
 {
    char *data;
@@ -95,23 +95,25 @@
        if (size <= 2)
          {
             free(data);
-            return NULL;
+            return PT_NIL;
          }
        if (data[size - 1] != 0)
          {
             free(data);
-            return NULL;
+            return PT_NIL;
          }
-       return data;
+       return (Ecore_Config_Type) data[0];
      }
-   return NULL;
+   return PT_NIL;
 }
 
 int
-_ecore_config_db_key_int_get(Ecore_Config_DB_File *db, const char *key, int 
*dest)
+_ecore_config_db_read(Ecore_Config_DB_File *db, const char *key)
 {
-   char *data;
+   char *data, *value;
    int size;
+   Ecore_Config_Prop *prop;
+   Ecore_Config_Type type;
    
    data = eet_read(db->ef, (char*)key, &size);
    if (data)
@@ -137,90 +139,48 @@
             return 0;
          }
    
-       prev_locale = setlocale(LC_NUMERIC, "C");
-       *dest = atoi(data + l + 1);
-       if (prev_locale) setlocale(LC_NUMERIC, prev_locale);
-       free(data);
-       return 1;
-     }
-   return 0;
-}
-
-int
-_ecore_config_db_key_float_get(Ecore_Config_DB_File *db, const char *key, 
double *dest)
-{
-   char *data;
-   int size;
-   
-   data = eet_read(db->ef, (char*)key, &size);
-   if (data)
-     {
-       int l;
-       char *prev_locale;
+       type = data[0];
+       value = data + l + 1;
+       prop = ecore_config_get(key);
        
-       if (size <= 2)
-         {
-            free(data);
-            return 0;
-         }
-       if (data[size - 1] != 0)
-         {
-            free(data);
-            return 0;
-         }
-       /* "type" NIL "1242.4234" NIL */
-       l = strlen(data);
-       if (l >= (size - 1))
+       switch (type) 
          {
-            free(data);
-            return 0;
+            case PT_INT:
+            case PT_BLN:
+              {
+                 int tmp;
+                 prev_locale = setlocale(LC_NUMERIC, "C");
+                 tmp = atoi(value);
+                 if (prev_locale) setlocale(LC_NUMERIC, prev_locale);
+
+                 ecore_config_typed_set(key, (void *)&tmp, type);
+                 break;
+              }
+            case PT_FLT:
+              {
+                 float tmp;
+                 prev_locale = setlocale(LC_NUMERIC, "C");
+                 tmp = atof(value);
+                 if (prev_locale) setlocale(LC_NUMERIC, prev_locale);
+              
+                 ecore_config_typed_set(key, (void *)&tmp, type);
+                 break;
+              }
+            case PT_STR:
+            case PT_RGB:
+            case PT_THM:
+              ecore_config_typed_set(key, (void *)value, type);
+              break;
+            default:
+              E(0, "Type %d not handled\n", type);
          }
-       
-       prev_locale = setlocale(LC_NUMERIC, "C");
-       *dest = atof(data + l + 1);
-       if (prev_locale) setlocale(LC_NUMERIC, prev_locale);
        free(data);
        return 1;
      }
    return 0;
 }
 
-char *
-_ecore_config_db_key_str_get(Ecore_Config_DB_File *db, const char *key)
-{
-   char *data;
-   int size;
-   
-   data = eet_read(db->ef, (char*)key, &size);
-   if (data)
-     {
-       int l;
-       char *s;
-       
-       if (size <= 2)
-         {
-            free(data);
-            return NULL;
-         }
-       if (data[size - 1] != 0)
-         {
-            free(data);
-            return NULL;
-         }
-       /* "type" NIL "string goes here" NIL */
-       l = strlen(data);
-       if (l >= (size - 1))
-         {
-            free(data);
-            return NULL;
-         }
-       s  = strdup(data + l + 1);
-       free(data);
-       return s;
-     }
-   return NULL;
-}
-
+/*
 void *
 _ecore_config_db_key_data_get(Ecore_Config_DB_File *db, const char *key, int 
*size_ret)
 {
@@ -243,7 +203,7 @@
             free(data);
             return NULL;
          }
-       /* "type" NIL data_goes_here NIL */
+       * "type" NIL data_goes_here NIL *
        l = strlen(data);
        if (l >= (size - 1))
          {
@@ -257,65 +217,70 @@
        return dat;
      }
    return NULL;
-}
+}*/
 
 void
-_ecore_config_db_key_int_set(Ecore_Config_DB_File *db, const char *key, int 
val)
+_ecore_config_db_write(Ecore_Config_DB_File *db, const char *key)
 {
    char buf[256];
    int num;
    char *prev_locale;
+   Ecore_Config_Prop *prop;
+   Ecore_Config_Type type;
    
-   prev_locale = setlocale(LC_NUMERIC, "C");
-   num = snprintf(buf, sizeof(buf), "%s %i ", "int", val);
-   if (prev_locale) setlocale(LC_NUMERIC, prev_locale);
-   buf[3] = 0;
-   buf[num - 1] = 0;
-   eet_write(db->ef, (char*)key, buf, num, 1);
-}
-
-void
-_ecore_config_db_key_float_set(Ecore_Config_DB_File *db, const char *key, 
double val)
-{
-   char buf[256];
-   int num;
-   char *prev_locale;
    
-   prev_locale = setlocale(LC_NUMERIC, "C");
-   num = snprintf(buf, sizeof(buf), "%s %16.16f ", "float", val);
+   type = ecore_config_get(key)->type;
+       prev_locale = setlocale(LC_NUMERIC, "C");
+
+       switch (type) 
+         {
+            case PT_INT:
+              num = snprintf(buf, sizeof(buf), "%c %i ", (char) type,
+                             ecore_config_int_get(key));
+              break;
+            case PT_BLN:
+              num = snprintf(buf, sizeof(buf), "%c %i ", (char) type,
+                             ecore_config_int_get(key));
+              break;
+            case PT_FLT:
+              num = snprintf(buf, sizeof(buf), "%c %16.16f ", (char) type,
+                             ecore_config_float_get(key));
+              break;
+            case PT_STR:
+              num = snprintf(buf, sizeof(buf), "%c %s ", (char) type,
+                             ecore_config_string_get(key));
+              break;
+            case PT_THM:
+              num = snprintf(buf, sizeof(buf), "%c %s ", (char) type,
+                             ecore_config_theme_get(key));
+              break;
+            case PT_RGB:
+              num = snprintf(buf, sizeof(buf), "%c %s ", (char) type,
+                             ecore_config_argbstr_get(key));
+              break;
+            default:
+              E(0, "Type %d not handled\n", type);
+         }
+
    if (prev_locale) setlocale(LC_NUMERIC, prev_locale);
-   buf[5] = 0;
+   buf[1] = 0;
    buf[num - 1] = 0;
    eet_write(db->ef, (char*)key, buf, num, 1);
 }
-
-void
-_ecore_config_db_key_str_set(Ecore_Config_DB_File *db, const char *key, char 
*str)
-{
-   char *buf;
-   int num;
-   
-   num = 3 + 1 + strlen(str) + 1;
-   buf = malloc(num);
-   if (!buf) return;
-   strcpy(buf, "str");
-   strcpy(buf + 4, str);
-   eet_write(db->ef, (char*)key, buf, num, 1);
-   free(buf);
-}
-
+/*
 void
 _ecore_config_db_key_data_set(Ecore_Config_DB_File *db, const char *key, void 
*data, int data_size)
 {
    char *buf;
    int num;
    
-   num = 3 + 1 + data_size + 1;
+   num = 1 + 1 + data_size + 1;
    buf = malloc(num);
    if (!buf) return;
-   strcpy(buf, "data");
-   memcpy(buf + 5, data, data_size);
+   buf[0] = (char) PT_BIN;
+   buf[1] = 0;
+   memcpy(buf + 2, data, data_size);
    buf[num - 1] = 0;
    eet_write(db->ef, (char*)key, buf, num, 1);
    free(buf);
-}
+}*/
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_config/ecore_config_ipc_ecore.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- ecore_config_ipc_ecore.c    4 Mar 2005 19:29:39 -0000       1.5
+++ ecore_config_ipc_ecore.c    7 Jun 2005 20:08:16 -0000       1.6
@@ -54,7 +54,8 @@
    int                    key_count, x;
    estring               *s;
    int                    f;
-   char                   buf[PATH_MAX], *p, *type, *data;
+   char                   buf[PATH_MAX], *p, *data;
+   Ecore_Config_Type      type;
 
    db = NULL;
    s = estring_new(8192);
@@ -77,33 +78,30 @@
        for (x = 0; x < key_count; x++)
          {
             type = _ecore_config_db_key_type_get(db, keys[x]);
-            if (!type) type = strdup("?");
-            if (!strcmp(type, "int"))
-              estring_appendf(s, "%s%s: integer", f ? "\n" : "", keys[x]);
-            else if (!strcmp(type, "float"))
-              estring_appendf(s, "%s%s: float", f ? "\n" : "", keys[x]);
-            else if (!strcmp(type, "str"))
+            switch (type)
               {
-                 data = _ecore_config_db_key_str_get(db, keys[x]);
-                 if (data)
-                   {
-                      if (ecore_config_type_guess(keys[x], data) == PT_RGB)
-                        estring_appendf(s, "%s%s: colour", f ? "\n" : "", 
keys[x]);
-                      else
-                        estring_appendf(s, "%s%s: string", f ? "\n" : "", 
keys[x]);
-                      free(data);
-                   }
-                 else
-                   {
-                      estring_appendf(s, "%s%s: string", f ? "\n" : "", 
keys[x]);
-                   }
+                 case PT_INT:
+                   estring_appendf(s, "%s%s: integer", f ? "\n" : "", keys[x]);
+                   break;
+                 case PT_BLN:
+                   estring_appendf(s, "%s%s: boolean", f ? "\n" : "", keys[x]);
+                   break;
+                 case PT_FLT:
+                   estring_appendf(s, "%s%s: float", f ? "\n" : "", keys[x]);
+                   break;
+                 case PT_STR:
+                   estring_appendf(s, "%s%s: string", f ? "\n" : "", keys[x]);
+                   break;
+                 case PT_RGB:
+                   estring_appendf(s, "%s%s: colour", f ? "\n" : "", keys[x]);
+                   break;
+                 case PT_THM:
+                   estring_appendf(s, "%s%s: theme", f ? "\n" : "", keys[x]);
+                   break;
+                 default:
+                   estring_appendf(s, "%s%s: unknown", f ? "\n" : "", keys[x]);
+                   continue;
               }
-            else
-              {
-                 estring_appendf(s, "%s%s: unknown", f ? "\n" : "", keys[x]);
-                 continue;
-              }
-            if (type) free(type);
             f = 1;
          }
      }
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_config/ecore_config_private.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- ecore_config_private.h      2 Apr 2005 15:59:55 -0000       1.6
+++ ecore_config_private.h      7 Jun 2005 20:08:16 -0000       1.7
@@ -21,14 +21,7 @@
 Ecore_Config_DB_File *_ecore_config_db_open_write(const char *file);
 void                  _ecore_config_db_close(Ecore_Config_DB_File *db);
 char                **_ecore_config_db_keys_get(Ecore_Config_DB_File *db, int 
*num_ret);
-char                 *_ecore_config_db_key_type_get(Ecore_Config_DB_File *db, 
const char *key);
-int                   _ecore_config_db_key_int_get(Ecore_Config_DB_File *db, 
const char *key, int *dest);
-int                   _ecore_config_db_key_float_get(Ecore_Config_DB_File *db, 
const char *key, double *dest);
-char                 *_ecore_config_db_key_str_get(Ecore_Config_DB_File *db, 
const char *key);
-void                 *_ecore_config_db_key_data_get(Ecore_Config_DB_File *db, 
const char *key, int *size_ret);
-void                  _ecore_config_db_key_int_set(Ecore_Config_DB_File *db, 
const char *key, int val);
-void                  _ecore_config_db_key_float_set(Ecore_Config_DB_File *db, 
const char *key, double val);
-void                  _ecore_config_db_key_str_set(Ecore_Config_DB_File *db, 
const char *key, char *str);
-void                  _ecore_config_db_key_data_set(Ecore_Config_DB_File *db, 
const char *key, void *data, int data_size);
+int                   _ecore_config_db_read(Ecore_Config_DB_File *db, const 
char *key);
+void                  _ecore_config_db_write(Ecore_Config_DB_File *db, const 
char *key);
 
 #endif
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_config/ecore_config_storage.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- ecore_config_storage.c      2 Mar 2005 07:06:34 -0000       1.6
+++ ecore_config_storage.c      7 Jun 2005 20:08:16 -0000       1.7
@@ -57,14 +57,13 @@
    Ecore_Config_DB_File  *db;
    char                 **keys;
    int                    key_count;
+   double                 ftmp;
    int                    x, pt;
    int                    itmp;
-   double                 ftmp;
-   char                   *type;
+   Ecore_Config_Type      type;
    char                   *data;
 
    db = NULL;
-   type = NULL;
    data = NULL;
 
    db = _ecore_config_db_open_read(file);
@@ -79,72 +78,7 @@
      {
        for (x = 0; x < key_count; x++)
          {
-            type = _ecore_config_db_key_type_get(db, keys[x]);
-            if (!type) type = strdup("?");
-            if (!strcmp(type, "int"))
-              {
-                 if (_ecore_config_db_key_int_get(db, keys[x], &itmp))
-                   {
-                      Ecore_Config_Prop  *p;
-                      
-                      pt = PT_INT;
-                      if ((p = ecore_config_get(keys[x]))) pt = p->type;
-                      switch (pt)
-                        {
-                         case PT_BLN:
-                           ecore_config_boolean_set(keys[x], itmp);
-                           break;
-                         default:
-                           ecore_config_int_set(keys[x], itmp);
-                           break;
-                        }
-                   }
-                 else
-                   {
-                      E(0, "Could not read key %s!\n", keys[x]);
-                   }
-              }
-            else if (!strcmp(type, "float"))
-              {
-                 if (_ecore_config_db_key_float_get(db, keys[x], &ftmp))
-                   {
-                      ecore_config_float_set(keys[x], ftmp);
-                   }
-                 else
-                   {
-                      E(0, "Could not read key %s!\n", keys[x]);
-                   }
-              }
-            else if (!strcmp(type, "str"))
-              {
-                 data = _ecore_config_db_key_str_get(db, keys[x]);
-                 if (data)
-                   {
-                      pt = ecore_config_type_guess(keys[x], data);
-                      switch (pt)
-                        {
-                         case PT_RGB:
-                           ecore_config_argb_set(keys[x], data);
-                           break;
-                         case PT_THM:
-                           ecore_config_theme_set(keys[x], data);
-                           break;
-                         default:
-                           ecore_config_string_set(keys[x], data);
-                        }
-                      free(data);
-                   }
-                 else
-                   {
-                      E(0, "Could not read key %s!\n", keys[x]);
-                   }
-              }
-            else
-              {
-                 E(1, "Unexpected type: %s\n", type);
-                 continue;
-              }
-            if (type) free(type);
+            _ecore_config_db_read(db, keys[x]);
          }
      }
    _ecore_config_db_close(db);
@@ -194,7 +128,6 @@
    Ecore_Config_Prop    *next;
    Ecore_Config_DB_File *db;
    struct stat           status;
-   char                 *tmp;
 
    next = __ecore_config_bundle_local->data;
    db = NULL;
@@ -222,37 +155,7 @@
             continue;
          }
 
-       tmp = NULL;
-
-       switch (next->type)
-         {
-         case PT_INT:
-            _ecore_config_db_key_int_set(db, next->key, 
ecore_config_int_get(next->key));
-            break;
-         case PT_BLN:
-            _ecore_config_db_key_int_set(db, next->key, 
ecore_config_boolean_get(next->key));
-            break;
-         case PT_FLT:
-            _ecore_config_db_key_float_set(db, next->key, 
ecore_config_float_get(next->key));
-            break;
-         case PT_RGB:
-            tmp = ecore_config_argbstr_get(next->key);
-            break;
-         case PT_STR:
-            tmp = ecore_config_string_get(next->key);
-            break;
-         case PT_THM:
-            tmp = ecore_config_theme_get(next->key);
-            break;
-         case PT_NIL:
-            /* currently we do nothing for undefined ojects */
-            break;
-         }
-
-       if (tmp) {
-          _ecore_config_db_key_str_set(db, next->key, tmp);
-          free(tmp);
-       }
+       _ecore_config_db_write(db, next->key);
 
        next = next->next;
      }




-------------------------------------------------------
This SF.Net email is sponsored by: NEC IT Guy Games.  How far can you shotput
a projector? How fast can you ride your desk chair down the office luge track?
If you want to score the big prize, get to know the little guy.  
Play to win an NEC 61" plasma display: http://www.necitguy.com/?r=20
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to