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

Reply via email to