update changelog :D

Vincent

On Tue, 2 Jun 2009, Enlightenment SVN wrote:

Log:
        * eet_node: Fix API.

Author:       cedric
Date:         2009-06-02 09:24:28 -0700 (Tue, 02 Jun 2009)
New Revision: 40873

Modified:
 trunk/eet/src/lib/Eet.h trunk/eet/src/lib/eet_data.c 
trunk/eet/src/lib/eet_node.c

Modified: trunk/eet/src/lib/Eet.h
===================================================================
--- trunk/eet/src/lib/Eet.h     2009-06-01 15:07:12 UTC (rev 40872)
+++ trunk/eet/src/lib/Eet.h     2009-06-02 16:24:28 UTC (rev 40873)
@@ -1367,13 +1367,14 @@
   EAPI Eet_Node *eet_node_unsigned_char_new(const char *name, unsigned char 
uc);
   EAPI Eet_Node *eet_node_unsigned_short_new(const char *name, unsigned short 
us);
   EAPI Eet_Node *eet_node_unsigned_int_new(const char *name, unsigned int ui);
+   EAPI Eet_Node *eet_node_unsigned_long_long_new(const char *name, unsigned 
long long l);
   EAPI Eet_Node *eet_node_string_new(const char *name, const char *str);
   EAPI Eet_Node *eet_node_inlined_string_new(const char *name, const char 
*str);
   EAPI Eet_Node *eet_node_null_new(const char *name);
   EAPI Eet_Node *eet_node_list_new(const char *name, Eina_List *nodes);
   EAPI Eet_Node *eet_node_array_new(const char *name, int count, Eina_List 
*nodes);
-   EAPI Eet_Node *eet_node_var_array_new(const char *name, int count, 
Eina_List *nodes);
-   EAPI Eet_Node *eet_node_hash_new(const char *name, const char *key, 
Eina_List *nodes);
+   EAPI Eet_Node *eet_node_var_array_new(const char *name, Eina_List *nodes);
+   EAPI Eet_Node *eet_node_hash_new(const char *name, const char *key, 
Eet_Node *node);
   EAPI Eet_Node *eet_node_struct_new(const char *name, Eina_List *nodes);
   EAPI void eet_node_del(Eet_Node *n);


Modified: trunk/eet/src/lib/eet_data.c
===================================================================
--- trunk/eet/src/lib/eet_data.c        2009-06-01 15:07:12 UTC (rev 40872)
+++ trunk/eet/src/lib/eet_data.c        2009-06-02 16:24:28 UTC (rev 40873)
@@ -2297,6 +2297,7 @@
        /* advance to next chunk */
        NEXT_CHUNK(p, size, echnk, ed);
     }
+
   _eet_freelist_all_unref(context);
   if (dumpfunc)
     {

Modified: trunk/eet/src/lib/eet_node.c
===================================================================
--- trunk/eet/src/lib/eet_node.c        2009-06-01 15:07:12 UTC (rev 40872)
+++ trunk/eet/src/lib/eet_node.c        2009-06-02 16:24:28 UTC (rev 40873)
@@ -68,6 +68,7 @@
EET_NODE_NEW(EET_T_UCHAR, unsigned_char, uc, unsigned char);
EET_NODE_NEW(EET_T_USHORT, unsigned_short, us, unsigned short);
EET_NODE_NEW(EET_T_UINT, unsigned_int, ui, unsigned int);
+EET_NODE_NEW(EET_T_ULONG_LONG, unsigned_long_long, ul, unsigned long long);
EET_NODE_STR_NEW(EET_T_STRING, string, str, const char *);
EET_NODE_STR_NEW(EET_T_INLINED_STRING, inlined_string, str, const char *);

@@ -113,14 +114,14 @@
}

Eet_Node *
-eet_node_var_array_new(const char *name, int count, Eina_List *nodes)
+eet_node_var_array_new(const char *name, Eina_List *nodes)
{
   Eet_Node *n;

   n = _eet_node_new(name, EET_G_VAR_ARRAY);
   if (!n) return NULL;

-   n->count = count;
+   n->count = eina_list_count(nodes);

   _eet_node_append(n, nodes);

@@ -128,14 +129,18 @@
}

Eet_Node *
-eet_node_hash_new(const char *name, const char *key, Eina_List *nodes)
+eet_node_hash_new(const char *name, const char *key, Eet_Node *node)
{
+   Eina_List *nodes;
   Eet_Node *n;

+   if (!node) return NULL;
+
   n = _eet_node_new(name, EET_G_HASH);
   if (!n) return NULL;

   n->key = eina_stringshare_add(key);
+   nodes = eina_list_append(NULL, node);

   _eet_node_append(n, nodes);

@@ -195,3 +200,161 @@
   eina_stringshare_del(n->name);
   free(n);
}
+
+
+static const char *eet_node_dump_g_name[6] = {
+  "struct",
+  "array",
+  "var_array",
+  "list",
+  "hash",
+  "???"
+};
+
+static const char *eet_node_dump_t_name[14][2] = {
+  { "???: ", "???" },
+  { "char: ", "%hhi" },
+  { "short: ", "%hi" },
+  { "int: ", "%i" },
+  { "long_long: ", "%lli" },
+  { "float: ", "%1.25f" },
+  { "double: ", "%1.25f" },
+  { "uchar: ", "%hhu" },
+  { "ushort: ", "%i" },
+  { "uint: ", "%u" },
+  { "ulong_long: ", "%llu" },
+  { "null", "" }
+};
+
+static void
+eet_node_dump_level(int level, void (*dumpfunc) (void *data, const char *str), 
void *dumpdata)
+{
+   int i;
+
+   for (i = 0; i < level; i++) dumpfunc(dumpdata, "  ");
+}
+
+static char *
+eet_node_string_escape(const char *str)
+{
+   char *s, *sp;
+   const char *strp;
+   int sz = 0;
+
+   for (strp = str; *strp; strp++)
+     {
+       if (*strp == '\"') sz += 2;
+       else if (*strp == '\\') sz += 2;
+       else sz += 1;
+     }
+   s = malloc(sz + 1);
+   if (!s) return NULL;
+   for (strp = str, sp = s; *strp; strp++, sp++)
+     {
+       if (*strp == '\"')
+         {
+            *sp = '\\';
+            sp++;
+         }
+       else if (*strp == '\\')
+         {
+            *sp = '\\';
+            sp++;
+         }
+       *sp = *strp;
+     }
+   *sp = 0;
+   return s;
+}
+
+static void
+eet_node_dump_string_escape(void *dumpdata, void dumpfunc(void *data, const 
char *str), const char *str)
+{
+   char *s;
+
+   s = eet_node_string_escape(str);
+   if (!s) return ;
+
+   dumpfunc(dumpdata, s);
+   free(s);
+}
+
+static void
+eet_node_dump_simple_type(Eet_Node *n, int level,
+                         void (*dumpfunc) (void *data, const char *str), void 
*dumpdata)
+{
+   const char *type_name = NULL;
+   char tbuf[256];
+
+   eet_node_dump_level(level, dumpfunc, dumpdata);
+   dumpfunc(dumpdata, "  value \"");
+   eet_node_dump_string_escape(dumpdata, dumpfunc, n->name);
+   dumpfunc(dumpdata, "\" ");
+
+#define EET_T_TYPE(Eet_Type, Type)                                     \
+   case Eet_Type:                                                      \
+     {                                                                 \
+       dumpfunc(dumpdata, eet_node_dump_t_name[Eet_Type][0]);          \
+       snprintf(tbuf, sizeof (tbuf), eet_node_dump_t_name[Eet_Type][1], 
n->data.Type); \
+       dumpfunc(dumpdata, tbuf);                                       \
+       break;                                                          \
+     }
+
+   switch (n->type)
+     {
+       EET_T_TYPE(EET_T_CHAR, c);
+       EET_T_TYPE(EET_T_SHORT, s);
+       EET_T_TYPE(EET_T_INT, i);
+       EET_T_TYPE(EET_T_LONG_LONG, l);
+       EET_T_TYPE(EET_T_FLOAT, f);
+       EET_T_TYPE(EET_T_DOUBLE, d);
+       EET_T_TYPE(EET_T_UCHAR, uc);
+       EET_T_TYPE(EET_T_USHORT, us);
+       EET_T_TYPE(EET_T_UINT, ui);
+       EET_T_TYPE(EET_T_ULONG_LONG, ul);
+      case EET_T_INLINED_STRING:
+        type_name = "inlined: \"";
+      case EET_T_STRING:
+        if (!type_name) type_name = "string: \"";
+
+        dumpfunc(dumpdata, type_name);
+        eet_node_dump_string_escape(dumpdata, dumpfunc, n->data.str);
+        dumpfunc(dumpdata, "\"");
+        break;
+      case EET_T_NULL:
+        dumpfunc(dumpdata, "null");
+        break;
+      default:
+        dumpfunc(dumpdata, "???: ???");
+        break;
+     }
+
+   dumpfunc(dumpdata, ";\n");
+}
+
+void
+eet_node_dump(Eet_Node *n, int dumplevel, void (*dumpfunc) (void *data, const 
char *str), void *dumpdata)
+{
+   switch (n->type)
+     {
+      case EET_G_HASH:
+      case EET_G_UNKNOWN:
+      case EET_G_VAR_ARRAY:
+      case EET_G_ARRAY:
+      case EET_G_LIST:
+        break;
+      case EET_T_STRING:
+      case EET_T_INLINED_STRING:
+      case EET_T_CHAR:
+      case EET_T_SHORT:
+      case EET_T_INT:
+      case EET_T_LONG_LONG:
+      case EET_T_FLOAT:
+      case EET_T_DOUBLE:
+      case EET_T_UCHAR:
+      case EET_T_USHORT:
+      case EET_T_UINT:
+        eet_node_dump_simple_type(n, dumplevel, dumpfunc, dumpdata);
+        break;
+     }
+}


------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises
looking to deploy the next generation of Solaris that includes the latest
innovations from Sun and the OpenSource community. Download a copy and
enjoy capabilities such as Networking, Storage and Virtualization.
Go to: http://p.sf.net/sfu/opensolaris-get
_______________________________________________
enlightenment-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-svn

--
Ce message a été vérifié par MailScanner
pour des virus ou des polluriels et rien de
suspect n'a été trouvé.
Message délivré par le serveur de messagerie de l'Université d'Evry.

------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises 
looking to deploy the next generation of Solaris that includes the latest 
innovations from Sun and the OpenSource community. Download a copy and 
enjoy capabilities such as Networking, Storage and Virtualization. 
Go to: http://p.sf.net/sfu/opensolaris-get
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to