diff src/oct-obj.h @ 1968:a2e206524aa0

[project @ 1996-02-17 02:54:24 by jwe]
author jwe
date Sat, 17 Feb 1996 02:57:16 +0000
parents e62277bf5fe0
children 003570e69c7b
line wrap: on
line diff
--- a/src/oct-obj.h
+++ b/src/oct-obj.h
@@ -28,7 +28,10 @@
 #pragma interface
 #endif
 
+#include <string>
+
 #include "Array.h"
+#include "str-vec.h"
 
 // Including this is all we need because pt-const.h gives us
 // declarations for all the data types Octave knows about.
@@ -40,44 +43,80 @@
 {
 public:
 
-  Octave_object (void) : Array<tree_constant> () { }
+  Octave_object (void)
+    : Array<tree_constant> () { }
+
   Octave_object (int n, const tree_constant& val)
     : Array<tree_constant> (n, val) { }
 
-  Octave_object (const tree_constant& tc) : Array<tree_constant> (1, tc) { }
+  Octave_object (const tree_constant& tc)
+    : Array<tree_constant> (1, tc) { }
+
+  Octave_object (double d)
+    : Array<tree_constant> (1, tree_constant (d)) { }
+
+  Octave_object (const Matrix& m)
+    : Array<tree_constant> (1, tree_constant (m)) { }
+
+  Octave_object (const DiagMatrix& d)
+    : Array<tree_constant> (1, tree_constant (d)) { }
 
-  Octave_object (double d);
-  Octave_object (const Matrix& m);
-  Octave_object (const DiagMatrix& d);
-  Octave_object (const RowVector& v, int pcv = -1);
-  Octave_object (const ColumnVector& v, int pcv = -1);
+  Octave_object (const RowVector& v, int pcv)
+    : Array<tree_constant> (1, tree_constant (v, pcv)) { }
+
+  Octave_object (const ColumnVector& v, int pcv)
+    : Array<tree_constant> (1, tree_constant (v, pcv)) { }
+
+  Octave_object (const Complex& c)
+    : Array<tree_constant> (1, tree_constant (c)) { }
+
+  Octave_object (const ComplexMatrix& m)
+    : Array<tree_constant> (1, tree_constant (m)) { }
 
-  Octave_object (const Complex& c);
-  Octave_object (const ComplexMatrix& m);
-  Octave_object (const ComplexDiagMatrix& d);
-  Octave_object (const ComplexRowVector& v, int pcv = -1);
-  Octave_object (const ComplexColumnVector& v, int pcv = -1);
+  Octave_object (const ComplexDiagMatrix& d)
+    : Array<tree_constant> (1, tree_constant (d)) { }
+
+  Octave_object (const ComplexRowVector& v, int pcv)
+    : Array<tree_constant> (1, tree_constant (v, pcv)) { }
+
+  Octave_object (const ComplexColumnVector& v, int pcv)
+    : Array<tree_constant> (1, tree_constant (v, pcv)) { }
+
+  Octave_object (const char *s)
+    : Array<tree_constant> (1, tree_constant (s)) { }
 
-  Octave_object (const char *s);
-  Octave_object (const string& s);
-  Octave_object (const string_vector& s);
+  Octave_object (const string& s)
+    : Array<tree_constant> (1, tree_constant (s)) { }
+
+  Octave_object (const string_vector& s)
+    : Array<tree_constant> (1, tree_constant (s)) { }
 
-  Octave_object (double base, double limit, double inc);
-  Octave_object (const Range& r);
+  Octave_object (double base, double limit, double inc)
+    : Array<tree_constant> (1, tree_constant (base, limit, inc)) { }
 
-  Octave_object (const Octave_object& obj) : Array<tree_constant> (obj) { }
+  Octave_object (const Range& r)
+    : Array<tree_constant> (1, tree_constant (r)) { }
+
+  Octave_object (const Octave_object& obj)
+    : Array<tree_constant> (obj) { }
 
   Octave_object& operator = (const Octave_object& obj)
     {
-      Array<tree_constant>::operator = (obj);
+      if (this != &obj)
+	Array<tree_constant>::operator = (obj);
+
       return *this;
     }
 
 // Assignment will resize on range errors.
 
-  tree_constant& operator () (int n);
+  tree_constant& operator () (int n) { return elem (n); }
+
+  tree_constant operator () (int n) const { return elem (n); }
 
-  tree_constant operator () (int n) const;
+  int all_strings (void) const;
+
+  string_vector make_argv (const string&) const;
 
 private:
 
@@ -96,14 +135,27 @@
 
   Octave_object (int n);
 
-  void maybe_resize (int n);
+  void maybe_resize (int n)
+    {
+      if (n >= length ())
+	resize (n + 1, Matrix ());
+    }
 
-  tree_constant& elem (int n);
+  tree_constant& elem (int n)
+    {
+      maybe_resize (n);
+      return Array<tree_constant>::elem (n);
+    }
+
   tree_constant& checkelem (int n);
 
   tree_constant& xelem (int n);
 
-  tree_constant elem (int n) const;
+  tree_constant elem (int n) const
+    {
+      return Array<tree_constant>::operator () (n);
+    }
+
   tree_constant checkelem (int n) const;
 };