From: Vincent T. <vt...@un...> - 2009-06-02 16:58:55
|
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 > enl...@li... > 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. > > |