Enlightenment CVS committal Author : leviathan Project : e17 Module : proto
Dir : e17/proto/etk-perl Modified Files: Etk.xs EtkTypes.c EtkTypes.h typemap Log Message: - Fixes to list stuff which now work. - more tests =================================================================== RCS file: /cvs/e/e17/proto/etk-perl/Etk.xs,v retrieving revision 1.34 retrieving revision 1.35 diff -u -3 -r1.34 -r1.35 --- Etk.xs 30 Jul 2006 19:22:31 -0000 1.34 +++ Etk.xs 4 Aug 2006 14:50:37 -0000 1.35 @@ -558,27 +558,6 @@ return hv; } -AV * -evas_list_to_perl(Evas_List * list) -{ - dSP; - AV * av; - Evas_List * l; - - ENTER; - SAVETMPS; - - av = newAV(); - for (l = list; l; l = l->next) - av_push(av, newSViv((IV)(l->data))); - - PUTBACK; - FREETMPS; - LEAVE; - - return av; -} - MODULE = Etk PACKAGE = Etk PREFIX = etk_ INCLUDE: const-xs.inc @@ -1324,20 +1303,9 @@ float xalign float yalign -void +Evas_List * etk_container_children_get(container) Etk_Container *container - PPCODE: - Evas_List * children; - AV * av; - int i; - - children = etk_container_children_get(container); - av = evas_list_to_perl(children); - for (i=0; i<=av_len(av); i++) - { - XPUSHs(sv_2mortal(newSViv(SvIV(av_shift(av))))); - } Etk_Bool etk_container_is_child(container, widget) @@ -1566,7 +1534,7 @@ char * text -MODULE = Etk::Filechooser PACKAGE = Etk::Filechooser PREFIX = etk_filechooser_ +MODULE = Etk::Filechooser PACKAGE = Etk::Filechooser PREFIX = etk_filechooser_widget_ const char * etk_filechooser_widget_current_folder_get(filechooser_widget) @@ -1603,22 +1571,9 @@ Etk_Filechooser_Widget * widget PPCODE: Evas_List * list; - AV * av; - int i; list = etk_filechooser_widget_selected_files_get(widget); - av = evas_list_to_perl(list); - for (i=0; i<=av_len(av); i++) - { - SV * sv; - const char * filename; - - filename = (const char *)SvIV(av_shift(av)); - sv = newSVpv(filename, strlen(filename)); - - XPUSHs(sv_2mortal(sv)); - } - + XPUSHs(sv_2mortal(newSVCharEvasList(list))); Etk_Bool etk_filechooser_widget_show_hidden_get(filechooser_widget) @@ -1777,11 +1732,17 @@ SV * etk_iconbox_icon_data_get(icon) Etk_Iconbox_Icon * icon + CODE: + RETVAL = newSVsv((SV*)etk_iconbox_icon_data_get(icon)); + OUTPUT: + RETVAL void etk_iconbox_icon_data_set(icon, data) Etk_Iconbox_Icon * icon SV * data + CODE: + etk_iconbox_icon_data_set(icon, newSVsv(data)); void etk_iconbox_icon_del(icon) @@ -1872,7 +1833,7 @@ Etk_Bool fill; Etk_Bool keep_aspect_ratio; - etk_iconbox_model_icon_geometry(model, &x, &y, &width, &height, + etk_iconbox_model_icon_geometry_get(model, &x, &y, &width, &height, &fill, &keep_aspect_ratio); EXTEND(SP, 6); PUSHs(sv_2mortal(newSViv(x))); @@ -1893,7 +1854,7 @@ Etk_Bool keep_aspect_ratio void -etk_iconbox_model_label_geometry_get(model, x, y, width, height, xalign, yalign) +etk_iconbox_model_label_geometry_get(model) Etk_Iconbox_Model * model PPCODE: int x; @@ -1910,8 +1871,8 @@ PUSHs(sv_2mortal(newSViv(y))); PUSHs(sv_2mortal(newSViv(width))); PUSHs(sv_2mortal(newSViv(height))); - PUSHs(sv_2mortal(newSViv(xalign))); - PUSHs(sv_2mortal(newSViv(yalign))); + PUSHs(sv_2mortal(newSVnv(xalign))); + PUSHs(sv_2mortal(newSVnv(yalign))); void @@ -1925,8 +1886,13 @@ float yalign Etk_Iconbox_Model * -etk_iconbox_model_new(iconbox) +new(class, iconbox) + SV * class Etk_Iconbox * iconbox + CODE: + RETVAL = etk_iconbox_model_new(iconbox); + OUTPUT: + RETVAL MODULE = Etk::Image PACKAGE = Etk::Image PREFIX = etk_image_ @@ -2069,7 +2035,7 @@ void etk_label_set(label, text) Etk_Label * label - char * text + const char * text MODULE = Etk::Main PACKAGE = Etk::Main PREFIX = etk_main_ @@ -2096,26 +2062,8 @@ etk_main_toplevel_widget_remove(widget) Etk_Toplevel_Widget * widget -void +Evas_List * etk_main_toplevel_widgets_get() - PPCODE: - Evas_List * list; - AV * av; - int i; - - list = etk_main_toplevel_widgets_get(); - av = evas_list_to_perl(list); - - for (i = av_len(av); i>=0; i--) - { - SV * sv; - sv = newRV(newSViv(0)); - /* FIXME */ - sv_setref_iv(sv, "Etk_WidgetPtr", SvIV(av_shift(av))); - - XPUSHs(sv_2mortal(sv)); - } - av_undef(av); MODULE = Etk::Menu::Bar PACKAGE = Etk::Menu::Bar PREFIX = etk_menu_bar_ @@ -2338,27 +2286,9 @@ Etk_Menu_Item * item int position -void +Evas_List * etk_menu_shell_items_get(menu_shell) Etk_Menu_Shell * menu_shell - PPCODE: - Evas_List * list; - AV * av; - int i; - - list = etk_menu_shell_items_get(menu_shell); - av = evas_list_to_perl(list); - - for (i = av_len(av) ; i >=0 ; i--) - { - SV * sv; - sv = newRV(newSViv(0)); - /* FIXME */ - sv_setref_iv(sv, "Etk_WidgetPtr", SvIV(av_shift(av))); - - XPUSHs(sv_2mortal(sv)); - } - av_undef(av); void etk_menu_shell_prepend(menu_shell, item) @@ -3548,25 +3478,9 @@ etk_tree_selected_row_get(tree) Etk_Tree * tree -void +Evas_List * etk_tree_selected_rows_get(tree) Etk_Tree * tree - PPCODE: - Evas_List * list; - AV * av; - int i; - - list = etk_tree_selected_rows_get(tree); - av = evas_list_to_perl(list); - for (i=0; i<=av_len(av); i++) - { - SV * sv; - sv = newRV(newSViv(0)); - /* FIXME */ - sv_setref_iv(sv, "Etk_WidgetPtr", SvIV(av_shift(av))); - - XPUSHs(sv_2mortal(sv)); - } void etk_tree_sort(tree, compare_cb, ascendant, col, data) @@ -4257,23 +4171,8 @@ Etk_Widget * widget Etk_Bool on -void +Evas_List * etk_widget_dnd_dest_widgets_get() - PPCODE: - AV * av; - int i; - - av = evas_list_to_perl(etk_widget_dnd_dest_widgets_get()); - for (i = av_len(av) ; i >=0 ; i--) - { - SV * sv; - sv = newRV(newSViv(0)); - sv_setref_iv(sv, "Etk_WidgetPtr", SvIV(av_shift(av))); - - XPUSHs(sv_2mortal(sv)); - } - av_undef(av); - void etk_widget_dnd_drag_data_set(widget, types, num_types, data, data_size) =================================================================== RCS file: /cvs/e/e17/proto/etk-perl/EtkTypes.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- EtkTypes.c 30 Jul 2006 19:22:31 -0000 1.1 +++ EtkTypes.c 4 Aug 2006 14:50:37 -0000 1.2 @@ -86,6 +86,8 @@ __("Entry", "Widget"); __("Filechooser", "Widget"); __("Iconbox", "Widget"); + __("Iconbox::Model", "Iconbox"); + __("Iconbox::Icon", "Iconbox"); __("Image", "Widget"); __("Label", "Widget"); __("Menu::Shell", "Widget"); @@ -219,6 +221,55 @@ return newRV((SV*)hv); } +Evas_List * SvEvasList(SV *sv) { + + AV * av; + Evas_List * list; + int i; + + if (!SvROK(sv)) { + printf("cannot convert to Evas_List. SV is not a reference\n"); + return NULL; + } + + av = (AV*)SvRV(sv); + list = NULL; + for (i=0; i<=av_len(av); i++) + list = evas_list_append(list, *av_fetch(av, i, 0)); + + return list; + +} + +SV * newSVEvasList(Evas_List *list) { + + AV * av; + SV * ret; + Evas_List * l; + + av = newAV(); + for (l = list; l; l = l->next) + av_push(av, newSVEtkWidgetPtr((Etk_Widget *)(l->data))); + + return newRV((SV*)av); + +} + +SV * newSVCharEvasList(Evas_List *list) { + + AV * av; + SV * ret; + Evas_List * l; + + av = newAV(); + for (l = list; l; l = l->next) + av_push(av, newSVpv((char *)(l->data), 0)); + + return newRV((SV*)av); + +} + + SV * newSVEtkAlignmentPtr(Etk_Alignment *o) { return newSVObj(o, "Etk::Alignment", 0); } Etk_Alignment * SvEtkAlignmentPtr(SV *data) { return SvObj(data, "Etk::Alignment"); } SV * newSVEtkBinPtr(Etk_Bin *o) { return newSVObj(o, "Etk::Bin", 0); } @@ -238,6 +289,7 @@ SV * newSVEtkContainerPtr(Etk_Container *o) { return newSVObj(o, "Etk::Container", 0); } Etk_Container * SvEtkContainerPtr(SV *data) { return SvObj(data, "Etk::Container"); } SV * newSVEtkDialogPtr(Etk_Dialog *o) { return newSVObj(o, "Etk::Dialog", 0); } +Etk_Dialog * SvEtkDialogPtr(SV *data) { return SvObj(data, "Etk::Dialog"); } SV * newSVEtkDragPtr(Etk_Drag *o) { return newSVObj(o, "Etk::Drag", 0); } Etk_Drag * SvEtkDragPtr(SV *data) { return SvObj(data, "Etk::Drag"); } SV * newSVEtkEntryPtr(Etk_Entry *o) { return newSVObj(o, "Etk::Entry", 0); } =================================================================== RCS file: /cvs/e/e17/proto/etk-perl/EtkTypes.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- EtkTypes.h 30 Jul 2006 19:22:31 -0000 1.1 +++ EtkTypes.h 4 Aug 2006 14:50:37 -0000 1.2 @@ -23,6 +23,10 @@ SV * newSVGeometryPtr(Etk_Geometry * geo); Etk_Geometry * SvGeometryPtr(SV * geo); +Evas_List * SvEvasList(SV *sv); +SV * newSVEvasList(Evas_List *list); +SV * newSVCharEvasList(Evas_List *list); + SV * newSVEtkAlignmentPtr(Etk_Alignment *o); Etk_Alignment * SvEtkAlignmentPtr(SV *data); SV * newSVEtkBinPtr(Etk_Bin *o); =================================================================== RCS file: /cvs/e/e17/proto/etk-perl/typemap,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- typemap 30 Jul 2006 19:22:31 -0000 1.6 +++ typemap 4 Aug 2006 14:50:37 -0000 1.7 @@ -30,7 +30,7 @@ Etk_Geometry * T_GEOMETRY_PTR Etk_Iconbox * T_PTROBJ_ETK Etk_Iconbox_Icon * T_PTROBJ_ETK -Etk_Iconbox_Model * T_PTROBJ +Etk_Iconbox_Model * T_PTROBJ_ETK Etk_Image * T_PTROBJ_ETK Etk_Label * T_PTROBJ_ETK Etk_Marshaller T_PTROBJ @@ -96,7 +96,7 @@ Etk_Widget * T_PTROBJ_ETK Etk_Window * T_PTROBJ_ETK Evas * T_PTROBJ_ETK -Evas_List * T_PTROBJ +Evas_List * T_PTROBJ_EVAS_LIST Evas_List ** T_PTROBJ Evas_Object * T_PTROBJ_ETK const Etk_String * T_PTROBJ @@ -150,6 +150,11 @@ if (!$arg || !SvOK($arg)) croak(\"$var is not of type ${ntype}\"); $var = SvGeometryPtr($arg); + +T_TROBJ_EVAS_LIST + if (!$arg || !SvOK($arg)) + croak(\"$var is not of type ${ntype}\"); + $var = SvEvasList($arg); ############################################################################# @@ -176,3 +181,9 @@ do { $arg = sv_2mortal(newSVGeometryPtr($var)); } while(0); + +T_PTROBJ_EVAS_LIST + do { + $arg = sv_2mortal(newSVEvasList($var)); + } while(0); + ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs