diff liboctave/Array.h @ 7503:8c32f95c2639

convert mapper functions to new format
author David Bateman <dbateman@free.fr>
date Wed, 20 Feb 2008 04:22:50 -0500
parents 2467639bd8c0
children 36594d5bbe13
line wrap: on
line diff
--- a/liboctave/Array.h
+++ b/liboctave/Array.h
@@ -32,8 +32,8 @@
 
 #include "dim-vector.h"
 #include "lo-utils.h"
-
 #include "oct-sort.h"
+#include "quit.h"
 
 class idx_vector;
 
@@ -549,6 +549,27 @@
   Array<T> sort (octave_idx_type dim = 0, sortmode mode = ASCENDING) const;
   Array<T> sort (Array<octave_idx_type> &sidx, octave_idx_type dim = 0,
 		 sortmode mode = ASCENDING) const;
+
+  template <class U, class F>
+  Array<U>
+  map (F fcn) const
+  {
+    octave_idx_type len = length ();
+
+    const T *m = data ();
+
+    Array<U> result (dims ());
+    U *p = result.fortran_vec ();
+
+    for (octave_idx_type i = 0; i < len; i++)
+      {
+	OCTAVE_QUIT;
+
+	p[i] = fcn (m[i]);
+      }
+
+    return result;
+  }
 };
 
 // NOTE: these functions should be friends of the Array<T> class and