Enlightenment CVS committal Author : dj2 Project : e17 Module : libs/engrave
Dir : e17/libs/engrave/src/lib Modified Files: engrave_data.c engrave_file.c engrave_file.h engrave_font.c engrave_group.c engrave_group.h engrave_image.c engrave_part.c engrave_part.h engrave_part_state.c engrave_part_state.h engrave_program.c engrave_program.h Log Message: - add _free methods to each of the objects =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_data.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- engrave_data.c 13 Nov 2004 20:50:20 -0000 1.5 +++ engrave_data.c 13 Nov 2004 23:44:36 -0000 1.6 @@ -32,14 +32,9 @@ { if (!ed) return; - if (ed->key) free(ed->key); - ed->key = NULL; - - if (ed->value) free(ed->value); - ed->value = NULL; - - free(ed); - ed = NULL; + IF_FREE(ed->key); + IF_FREE(ed->value); + FREE(ed); } /** =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_file.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- engrave_file.c 13 Nov 2004 21:06:56 -0000 1.9 +++ engrave_file.c 13 Nov 2004 23:44:36 -0000 1.10 @@ -16,6 +16,50 @@ } /** + * engrave_file_free - free the file object + * @param ef: The Engrave_File to free + * + * @return Returns no value. + */ +void +engrave_file_free(Engrave_File *ef) +{ + Evas_List *l; + + if (!ef) return; + + for (l = ef->images; l; l = l->next) { + Engrave_Image *ei = l->data; + ef->images = evas_list_remove(ef->images, ei); + engrave_image_free(ei); + } + ef->images = evas_list_free(ef->images); + + for (l = ef->fonts; l; l = l->next) { + Engrave_Font *font = l->data; + ef->fonts = evas_list_remove(ef->fonts, font); + engrave_font_free(font); + } + ef->fonts = evas_list_free(ef->fonts); + + for (l = ef->data; l; l = l->next) { + Engrave_Data *ed = l->data; + ef->data = evas_list_remove(ef->data, ed); + engrave_data_free(ed); + } + ef->data = evas_list_free(ef->data); + + for (l = ef->groups; l; l = l->next) { + Engrave_Group *eg = l->data; + ef->groups = evas_list_remove(ef->groups, eg); + engrave_group_free(eg); + } + ef->groups = evas_list_free(ef->groups); + + FREE(ef); +} + +/** * engrave_file_font_add - add the font to the engrave file. * @param e: The Engrave_File to add the font too. * @param ef: The Engrave_Font to add to the file. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_file.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- engrave_file.h 13 Nov 2004 21:06:56 -0000 1.6 +++ engrave_file.h 13 Nov 2004 23:44:36 -0000 1.7 @@ -29,6 +29,8 @@ }; Engrave_File *engrave_file_new(void); +void engrave_file_free(Engrave_File *ef); + void engrave_file_font_add(Engrave_File *e, Engrave_Font *ef); void engrave_file_image_add(Engrave_File *ef, Engrave_Image *ei); void engrave_file_data_add(Engrave_File *ef, Engrave_Data *ed); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_font.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- engrave_font.c 13 Nov 2004 20:50:20 -0000 1.5 +++ engrave_font.c 13 Nov 2004 23:44:36 -0000 1.6 @@ -32,14 +32,9 @@ { if (!ef) return; - if (ef->name) free(ef->name); - ef->name = NULL; - - if (ef->path) free(ef->path); - ef->path = NULL; - - free(ef); - ef = NULL; + IF_FREE(ef->name); + IF_FREE(ef->path); + FREE(ef); } /** =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_group.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- engrave_group.c 13 Nov 2004 21:06:56 -0000 1.8 +++ engrave_group.c 13 Nov 2004 23:44:36 -0000 1.9 @@ -21,6 +21,44 @@ } /** + * engrave_group_free - free the group data + * @param eg: The Engrave_Group to free + * + * @return Returns no value + */ +void +engrave_group_free(Engrave_Group *eg) +{ + Evas_List *l; + if (!eg) return; + + IF_FREE(eg->name); + + for (l = eg->parts; l; l = l->next) { + Engrave_Part *ep = l->data; + eg->parts = evas_list_remove(eg->parts, ep); + engrave_part_free(ep); + } + eg->parts = evas_list_free(eg->parts); + + for (l = eg->programs; l; l = l->next) { + Engrave_Program *ep = l->data; + eg->programs = evas_list_remove(eg->programs, ep); + engrave_program_free(ep); + } + eg->programs = evas_list_free(eg->programs); + + for (l = eg->data; l; l = l->next) { + Engrave_Data *ed = l->data; + eg->data = evas_list_remove(eg->data, ed); + engrave_data_free(ed); + } + eg->data = evas_list_free(eg->data); + + FREE(eg); +} + +/** * engrave_group_data_add - add the Engrave_Data to the group * @param eg: The Engrave_Group to add the data too. * @param ed: The Engrave_Data to add to the group. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_group.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- engrave_group.h 13 Nov 2004 21:06:56 -0000 1.6 +++ engrave_group.h 13 Nov 2004 23:44:36 -0000 1.7 @@ -40,6 +40,8 @@ }; Engrave_Group *engrave_group_new(void); +void engrave_group_free(Engrave_Group *eg); + void engrave_group_data_add(Engrave_Group *eg, Engrave_Data *ed); void engrave_group_part_add(Engrave_Group *eg, Engrave_Part *ep); void engrave_group_program_add(Engrave_Group *eg, Engrave_Program *ep); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_image.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- engrave_image.c 13 Nov 2004 21:06:56 -0000 1.7 +++ engrave_image.c 13 Nov 2004 23:44:36 -0000 1.8 @@ -25,6 +25,22 @@ } /** + * engrave_image_free - free the Engrave_Image + * @param ei: The Engrave_Image to free + * + * @return Returns no value. + */ +void +engrave_image_free(Engrave_Image *ei) +{ + if (!ei) return; + + IF_FREE(ei->name); + IF_FREE(ei->path); + FREE(ei); +} + +/** * engrave_image_dup - duplicate an Engrave_Image * @param from: The Engrave_Image to duplicate * @@ -39,27 +55,6 @@ return to; } -/** - * engrave_image_free - free the image data - * @param ef: The Engrave_Image to free - * - * @return Returns no value. - */ -void -engrave_image_free(Engrave_Image *ef) -{ - if (!ef) return; - - if (ef->name) free(ef->name); - ef->name = NULL; - - if (ef->path) free(ef->path); - ef->path = NULL; - - free(ef); - ef = NULL; -} - /** * engrave_image_name_get - get the image name * @param ei: The Engrave_Image to get the name from =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_part.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- engrave_part.c 13 Nov 2004 21:06:57 -0000 1.9 +++ engrave_part.c 13 Nov 2004 23:44:36 -0000 1.10 @@ -20,6 +20,31 @@ } /** + * engrave_part_free - free the part + * @param ep: The Engrave_Part to free + * + * @return Returns no value. + */ +void +engrave_part_free(Engrave_Part *ep) +{ + Evas_List *l; + if (!ep) return; + + IF_FREE(ep->name); + IF_FREE(ep->clip_to); + IF_FREE(ep->dragable.confine); + + for (l = ep->states; l; l = l->next) { + Engrave_Part_State *eps = l->data; + ep->states = evas_list_remove(ep->states, eps); + engrave_part_state_free(eps); + } + ep->states = evas_list_free(ep->states); + FREE(ep); +} + +/** * engrave_part_mouse_events_set - set the mouse events flag for the part. * @param ep: The Engrave_Part to set the mouse events flag on. * @param val: The value to set the mouse events flag too. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_part.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- engrave_part.h 13 Nov 2004 21:06:57 -0000 1.7 +++ engrave_part.h 13 Nov 2004 23:44:36 -0000 1.8 @@ -53,6 +53,8 @@ }; Engrave_Part * engrave_part_new(Engrave_Part_Type type); +void engrave_part_free(Engrave_Part *ep); + void engrave_part_name_set(Engrave_Part *ep, char *name); void engrave_part_mouse_events_set(Engrave_Part *ep, int val); void engrave_part_repeat_events_set(Engrave_Part *ep, int val); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_part_state.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- engrave_part_state.c 13 Nov 2004 23:18:11 -0000 1.10 +++ engrave_part_state.c 13 Nov 2004 23:44:36 -0000 1.11 @@ -60,6 +60,38 @@ } /** + * engrave_part_state_free - free the state + * @param eps: The Engrave_Part_State to free + * + * @return Returns no value. + */ +void +engrave_part_state_free(Engrave_Part_State *eps) +{ + Evas_List *l; + if (!eps) return; + + IF_FREE(eps->name); + IF_FREE(eps->rel1.to_x); + IF_FREE(eps->rel1.to_y); + IF_FREE(eps->rel2.to_x); + IF_FREE(eps->rel2.to_y); + + engrave_image_free(eps->image.normal); + for (l = eps->image.tween; l; l = l->next) { + Engrave_Image *ei = l->data; + eps->image.tween = evas_list_remove(eps->image.tween, ei); + engrave_image_free(ei); + } + eps->image.tween = evas_list_free(eps->image.tween); + + IF_FREE(eps->color_class); + IF_FREE(eps->text.text); + IF_FREE(eps->text.text_class); + IF_FREE(eps->text.font); +} + +/** * engrave_part_state_name_set - Set the name of the state * @param eps: The Engrave_Part_State to set the value too. * @param name: The name to set to the state. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_part_state.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- engrave_part_state.h 13 Nov 2004 23:18:11 -0000 1.7 +++ engrave_part_state.h 13 Nov 2004 23:44:36 -0000 1.8 @@ -170,6 +170,8 @@ }; Engrave_Part_State * engrave_part_state_new(void); +void engrave_part_state_free(Engrave_Part_State *eps); + void engrave_part_state_name_set(Engrave_Part_State *eps, char *name, double value); char *engrave_part_state_name_get(Engrave_Part_State *eps, double *value); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_program.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- engrave_program.c 13 Nov 2004 21:06:57 -0000 1.8 +++ engrave_program.c 13 Nov 2004 23:44:36 -0000 1.9 @@ -16,6 +16,42 @@ } /** + * engrave_program_free - free the program + * @param ep: The Engrave_Program to free + * + * @return Returns no value. + */ +void +engrave_program_free(Engrave_Program *ep) +{ + Evas_List *l; + if (!ep) return; + + IF_FREE(ep->name); + IF_FREE(ep->signal); + IF_FREE(ep->source); + + for (l = ep->targets; l; l = l->next) { + char *d = l->data; + ep->targets = evas_list_remove(ep->targets, d); + IF_FREE(d); + } + ep->targets = evas_list_free(ep->targets); + + for (l = ep->afters; l; l = l->next) { + char *d = l->data; + ep->afters = evas_list_remove(ep->afters, d); + IF_FREE(d); + } + ep->afters = evas_list_free(ep->afters); + + IF_FREE(ep->state); + IF_FREE(ep->state2); + IF_FREE(ep->script); + FREE(ep); +} + +/** * engrave_program_script_set - attach a script to the program. * @param ep: The Engrave_Program to attach the script too. * @param script: The script to attach to the program. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/engrave/src/lib/engrave_program.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- engrave_program.h 13 Nov 2004 21:06:57 -0000 1.6 +++ engrave_program.h 13 Nov 2004 23:44:36 -0000 1.7 @@ -49,6 +49,8 @@ }; Engrave_Program *engrave_program_new(void); +void engrave_program_free(Engrave_Program *ep); + void engrave_program_script_set(Engrave_Program *ep, char *script); void engrave_program_name_set(Engrave_Program *ep, char *name); void engrave_program_signal_set(Engrave_Program *ep, char *signal); ------------------------------------------------------- This SF.Net email is sponsored by: InterSystems CACHE FREE OODBMS DOWNLOAD - A multidimensional database that combines robust object and relational technologies, making it a perfect match for Java, C++,COM, XML, ODBC and JDBC. www.intersystems.com/match8 _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs