Enlightenment CVS committal Author : leviathan Project : e17 Module : proto
Dir : e17/proto/etk-perl Modified Files: Etk.xs TODO Log Message: - C tree sorting functions for numerical and alphabetical sorting. =================================================================== RCS file: /cvs/e/e17/proto/etk-perl/Etk.xs,v retrieving revision 1.32 retrieving revision 1.33 diff -u -3 -r1.32 -r1.33 --- Etk.xs 20 Jul 2006 23:16:21 -0000 1.32 +++ Etk.xs 22 Jul 2006 20:06:08 -0000 1.33 @@ -358,6 +358,70 @@ } int +tree_compare_alpha_cb(Etk_Tree * tree, Etk_Tree_Row * row1, Etk_Tree_Row *row2, + Etk_Tree_Col * col, void * data ) +{ + dSP; + int ret, cmp; + char * r1, * r2; + + ENTER; + SAVETMPS; + + if (! (tree && row1 && row2 && col) ) { + ret = 0; + } else { + + etk_tree_row_fields_get(row1, col, r1, NULL); + etk_tree_row_fields_get(row2, col, r2, NULL); + cmp = strcmp(r1, r2); + if (cmp < 0) + ret = -1; + else if (cmp > 0) + ret = 1; + else + ret = 0; + } + + PUTBACK; + FREETMPS; + LEAVE; + + return ret; +} + +int +tree_compare_numeric_cb(Etk_Tree * tree, Etk_Tree_Row * row1, Etk_Tree_Row *row2, + Etk_Tree_Col * col, void * data ) +{ + dSP; + int r1, r2, ret; + + ENTER; + SAVETMPS; + + if (! (tree && row1 && row2 && col) ) { + ret = 0; + } else { + + etk_tree_row_fields_get(row1, col, &r1, NULL); + etk_tree_row_fields_get(row2, col, &r2, NULL); + if (r1 < r2) + ret = -1; + else if (r1 > r2) + ret = 1; + else + ret = 0; + } + + PUTBACK; + FREETMPS; + LEAVE; + + return ret; +} + +int tree_compare_cb( Etk_Tree * tree, Etk_Tree_Row * row1, Etk_Tree_Row *row2, Etk_Tree_Col * col, void * data ) { @@ -3692,6 +3756,20 @@ etk_tree_col_sort_func_set(col, tree_compare_cb, cbd); void +etk_tree_col_sort_func_alpha_set(col, data) + Etk_Tree_Col * col + SV * data + CODE: + etk_tree_col_sort_func_set(col, tree_compare_alpha_cb, data); + +void +etk_tree_col_sort_func_numeric_set(col, data) + Etk_Tree_Col * col + SV * data + CODE: + etk_tree_col_sort_func_set(col, tree_compare_numeric_cb, data); + +void etk_tree_col_sort_func_set2(col, compare_cb, data) Etk_Tree_Col * col int ( * ) ( Etk_Tree * tree, Etk_Tree_Row * row1, Etk_Tree_Row *row2, Etk_Tree_Col * col, void * data ) compare_cb @@ -4214,6 +4292,24 @@ cbd->perl_data = newSVsv(data); cbd->perl_callback = newSVsv(compare_cb); etk_tree_sort(ETK_TREE(tree), tree_compare_cb, ascendant, col, cbd); + +void +etk_tree_sort_alpha(tree, ascendant, col, data) + Etk_Widget * tree + Etk_Bool ascendant + Etk_Tree_Col * col + SV * data + CODE: + etk_tree_sort(ETK_TREE(tree), tree_compare_alpha_cb, ascendant, col, data); + +void +etk_tree_sort_numeric(tree, ascendant, col, data) + Etk_Widget * tree + Etk_Bool ascendant + Etk_Tree_Col * col + SV * data + CODE: + etk_tree_sort(ETK_TREE(tree), tree_compare_numeric_cb, ascendant, col, data); void etk_tree_thaw(tree) =================================================================== RCS file: /cvs/e/e17/proto/etk-perl/TODO,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- TODO 17 Jul 2006 23:26:17 -0000 1.8 +++ TODO 22 Jul 2006 20:06:08 -0000 1.9 @@ -1,8 +1,6 @@ General TODO: ============= -- add some commonly used internal tree sorters to avoid the entire - perl -> c -> perl ... loop when sorting trees. - finish porting etk_test from C to perl - callback system needs to convert structs to perl equivalents - finish signal callback functions @@ -37,6 +35,8 @@ - finish remaining signal_connect functions (swapped etc.) [DONE] - etk_theme.h [DONE] - finish up etk_widget.h [DONE] +- add some commonly used internal tree sorters to avoid the entire + perl -> c -> perl ... loop when sorting trees. [DONE] Pending: ======== ------------------------------------------------------------------------- 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