changeset 9556:948795dc1974

make a few Array methods inline
author Jaroslav Hajek <highegg@gmail.com>
date Sun, 23 Aug 2009 22:00:03 +0200
parents 76ecc571879e
children 3a1dd361f978
files liboctave/Array.cc liboctave/Array.h liboctave/ChangeLog
diffstat 3 files changed, 37 insertions(+), 42 deletions(-) [+]
line wrap: on
line diff
--- a/liboctave/Array.cc	Sun Aug 23 05:57:51 2009 +0200
+++ b/liboctave/Array.cc	Sun Aug 23 22:00:03 2009 +0200
@@ -46,18 +46,6 @@
 // all the derived classes.
 
 template <class T>
-void
-Array<T>::make_unique (void)
-{
-  if (rep->count > 1)
-    {
-      --rep->count;
-      rep = new ArrayRep (slice_data, slice_len, true);
-      slice_data = rep->data;
-    }
-}
-
-template <class T>
 Array<T>::Array (const Array<T>& a, const dim_vector& dv)
   : rep (a.rep), dimensions (dv), 
     slice_data (a.slice_data), slice_len (a.slice_len)
@@ -70,33 +58,6 @@
 }
 
 template <class T>
-Array<T>::~Array (void)
-{
-  if (--rep->count <= 0)
-    delete rep;
-}
-
-template <class T>
-Array<T>&
-Array<T>::operator = (const Array<T>& a)
-{
-  if (this != &a)
-    {
-      if (--rep->count <= 0)
-	delete rep;
-
-      rep = a.rep;
-      rep->count++;
-
-      dimensions = a.dimensions;
-      slice_data = a.slice_data;
-      slice_len = a.slice_len;
-    }
-
-  return *this;
-}
-
-template <class T>
 void
 Array<T>::fill (const T& val)
 {
--- a/liboctave/Array.h	Sun Aug 23 05:57:51 2009 +0200
+++ b/liboctave/Array.h	Sun Aug 23 22:00:03 2009 +0200
@@ -98,7 +98,15 @@
 
 public:
 
-  void make_unique (void);
+  void make_unique (void)
+    {
+      if (rep->count > 1)
+        {
+          --rep->count;
+          rep = new ArrayRep (slice_data, slice_len, true);
+          slice_data = rep->data;
+        }
+    }
 
   typedef T element_type;
 
@@ -233,9 +241,29 @@
 
   Array (const Array<T>& a, const dim_vector& dv);
 
-  virtual ~Array (void);
+  ~Array (void)
+    {
+      if (--rep->count <= 0)
+        delete rep;
+    }
 
-  Array<T>& operator = (const Array<T>& a);
+  Array<T>& operator = (const Array<T>& a)
+    {
+      if (this != &a)
+        {
+          if (--rep->count <= 0)
+            delete rep;
+
+          rep = a.rep;
+          rep->count++;
+
+          dimensions = a.dimensions;
+          slice_data = a.slice_data;
+          slice_len = a.slice_len;
+        }
+
+      return *this;
+    }
 
   void fill (const T& val); 
   void clear (void);
--- a/liboctave/ChangeLog	Sun Aug 23 05:57:51 2009 +0200
+++ b/liboctave/ChangeLog	Sun Aug 23 22:00:03 2009 +0200
@@ -1,3 +1,9 @@
+2009-08-23  Jaroslav Hajek  <highegg@gmail.com>
+
+	* Array.h (Array::make_unique, Array::~Array, Array::operator =):
+	Move here to allow inlining.
+	* Array.cc: Remove from here.
+
 2009-08-20  Jaroslav Hajek  <highegg@gmail.com>
 
 	* mx-inlines.cc (logical_value): New overloaded template.