diff liboctave/CColVector.cc @ 2676:a5a300c61159

[project @ 1997-02-14 03:16:06 by jwe]
author jwe
date Fri, 14 Feb 1997 03:16:12 +0000
parents 4fc9fd1424a9
children 8b262e771614
line wrap: on
line diff
--- a/liboctave/CColVector.cc	Thu Feb 13 22:36:26 1997 +0000
+++ b/liboctave/CColVector.cc	Fri Feb 14 03:16:12 1997 +0000
@@ -726,18 +726,38 @@
 // other operations
 
 ComplexColumnVector
-map (c_c_Mapper f, const ComplexColumnVector& a)
+ComplexColumnVector::map (c_c_Mapper f) const
 {
-  ComplexColumnVector b (a);
-  b.map (f);
-  return b;
+  ComplexColumnVector b (*this);
+  return b.apply (f);
 }
 
-void
-ComplexColumnVector::map (c_c_Mapper f)
+ColumnVector
+ComplexColumnVector::map (d_c_Mapper f) const
 {
+  const Complex *d = data ();
+
+  int len = length ();
+
+  ColumnVector retval (len);
+
+  double *r = retval.fortran_vec ();
+
+  for (int i = 0; i < len; i++)
+    r[i] = f (d[i]);
+
+  return retval;
+}
+
+ComplexColumnVector&
+ComplexColumnVector::apply (c_c_Mapper f)
+{
+  Complex *d = fortran_vec (); // Ensures only one reference to my privates!
+
   for (int i = 0; i < length (); i++)
-    elem (i) = f (elem (i));
+    d[i] = f (d[i]);
+
+  return *this;
 }
 
 Complex