diff src/oct-map.h @ 10746:93422177b697

more octave_map compatibility
author Jaroslav Hajek <highegg@gmail.com>
date Thu, 24 Jun 2010 08:02:26 +0200 (2010-06-24)
parents 4716e2e17118
children 58c1b5402588
line wrap: on
line diff
--- a/src/oct-map.h
+++ b/src/oct-map.h
@@ -143,22 +143,22 @@
 octave_scalar_map
 {
   octave_scalar_map (const octave_fields& k)
-    : keys (k), vals (k.nfields ()) { }
+    : xkeys (k), xvals (k.nfields ()) { }
 
 public:
 
-  octave_scalar_map (void) : keys (), vals () { }
+  octave_scalar_map (void) : xkeys (), xvals () { }
 
   octave_scalar_map (const string_vector& k)
-    : keys (k), vals (k.length ()) { }
+    : xkeys (k), xvals (k.length ()) { }
 
   octave_scalar_map (const octave_scalar_map& m)
-    : keys (m.keys), vals(m.vals) { }
+    : xkeys (m.xkeys), xvals(m.xvals) { }
 
   octave_scalar_map& operator = (const octave_scalar_map& m)
     {
-      keys = m.keys;
-      vals = m.vals;
+      xkeys = m.xkeys;
+      xvals = m.xvals;
 
       return *this;
     }
@@ -168,37 +168,43 @@
   typedef octave_fields::const_iterator const_iterator;
   typedef const_iterator iterator;
 
-  const_iterator begin (void) const { return keys.begin (); }
-  const_iterator end (void) const { return keys.end (); }
+  const_iterator begin (void) const { return xkeys.begin (); }
+  const_iterator end (void) const { return xkeys.end (); }
 
-  const_iterator seek (const std::string& k) const { return keys.seek (k); }
+  const_iterator seek (const std::string& k) const { return xkeys.seek (k); }
 
   std::string key (const_iterator p) const 
-    { return keys.key (p); }
+    { return xkeys.key (p); }
   octave_idx_type index (const_iterator p) const
-    { return keys.index (p); }
+    { return xkeys.index (p); }
 
   const octave_value& contents (const_iterator p) const 
-    { return vals[keys.index (p)]; }
+    { return xvals[xkeys.index (p)]; }
 
   octave_value& contents (iterator p)
-    { return vals[keys.index (p)]; }
+    { return xvals[xkeys.index (p)]; }
 
   const octave_value& contents (octave_idx_type i) const
-    { return vals[i]; }
+    { return xvals[i]; }
 
   octave_value& contents (octave_idx_type i)
-    { return vals[i]; }
+    { return xvals[i]; }
 
   // number of fields.
-  octave_idx_type nfields (void) const { return keys.nfields (); }
+  octave_idx_type nfields (void) const { return xkeys.nfields (); }
 
   // check whether a field exists.
   bool isfield (const std::string& name) const 
-    { return keys.isfield (name); }
+    { return xkeys.isfield (name); }
+
+  bool contains (const std::string& name) const 
+    { return isfield (name); }
 
   string_vector fieldnames (void) const
-    { return keys.fieldnames (); }
+    { return xkeys.fieldnames (); }
+
+  string_vector keys (void) const
+    { return fieldnames (); }
 
   // get contents of a given field. empty value if not exist.
   octave_value getfield (const std::string& key) const;
@@ -208,6 +214,7 @@
 
   // remove a given field. do nothing if not exist.
   void rmfield (const std::string& key);
+  void del (const std::string& k) { rmfield (k); }
 
   // return a copy with fields ordered, optionally along with permutation.
   octave_scalar_map orderfields (void) const;
@@ -221,16 +228,16 @@
 
   void clear (void)
     {
-      keys.clear ();
-      vals.clear ();
+      xkeys.clear ();
+      xvals.clear ();
     }
 
   friend class octave_map;
 
 private:
 
-  octave_fields keys;
-  std::vector<octave_value> vals;
+  octave_fields xkeys;
+  std::vector<octave_value> xvals;
 
 };
 
@@ -238,22 +245,22 @@
 octave_map
 {
   octave_map (const octave_fields& k)
-    : keys (k), vals (k.nfields ()), dimensions () { }
+    : xkeys (k), xvals (k.nfields ()), dimensions () { }
 
 public:
 
-  octave_map (void) : keys (), vals (), dimensions () { }
+  octave_map (void) : xkeys (), xvals (), dimensions () { }
 
-  octave_map (const dim_vector& dv) : keys (), vals (), dimensions (dv) { }
+  octave_map (const dim_vector& dv) : xkeys (), xvals (), dimensions (dv) { }
 
   octave_map (const string_vector& k)
-    : keys (k), vals (k.length ()), dimensions (1, 1) { }
+    : xkeys (k), xvals (k.length ()), dimensions (1, 1) { }
 
   octave_map (const dim_vector& dv, const string_vector& k)
-    : keys (k), vals (k.length ()), dimensions (dv) { }
+    : xkeys (k), xvals (k.length ()), dimensions (dv) { }
 
   octave_map (const octave_map& m)
-    : keys (m.keys), vals (m.vals), dimensions (m.dimensions) { }
+    : xkeys (m.xkeys), xvals (m.xvals), dimensions (m.dimensions) { }
 
   octave_map (const octave_scalar_map& m);
 
@@ -261,8 +268,8 @@
 
   octave_map& operator = (const octave_map& m)
     {
-      keys = m.keys;
-      vals = m.vals;
+      xkeys = m.xkeys;
+      xvals = m.xvals;
       dimensions = m.dimensions;
 
       return *this;
@@ -273,40 +280,43 @@
   typedef octave_fields::const_iterator const_iterator;
   typedef const_iterator iterator;
 
-  const_iterator begin (void) const { return keys.begin (); }
-  const_iterator end (void) const { return keys.end (); }
+  const_iterator begin (void) const { return xkeys.begin (); }
+  const_iterator end (void) const { return xkeys.end (); }
 
-  const_iterator seek (const std::string& k) const { return keys.seek (k); }
+  const_iterator seek (const std::string& k) const { return xkeys.seek (k); }
 
   std::string key (const_iterator p) const 
-    { return keys.key (p); }
+    { return xkeys.key (p); }
   octave_idx_type index (const_iterator p) const
-    { return keys.index (p); }
+    { return xkeys.index (p); }
 
   const Cell& contents (const_iterator p) const 
-    { return vals[keys.index (p)]; }
+    { return xvals[xkeys.index (p)]; }
 
   Cell& contents (iterator p)
-    { return vals[keys.index (p)]; }
+    { return xvals[xkeys.index (p)]; }
 
   const Cell& contents (octave_idx_type i) const
-    { return vals[i]; }
+    { return xvals[i]; }
 
   Cell& contents (octave_idx_type i)
-    { return vals[i]; }
+    { return xvals[i]; }
 
   // number of fields.
-  octave_idx_type nfields (void) const { return keys.nfields (); }
+  octave_idx_type nfields (void) const { return xkeys.nfields (); }
 
   // check whether a field exists.
   bool isfield (const std::string& name) const 
-    { return keys.isfield (name); }
+    { return xkeys.isfield (name); }
 
   bool contains (const std::string& name) const 
     { return isfield (name); }
 
   string_vector fieldnames (void) const
-    { return keys.fieldnames (); }
+    { return xkeys.fieldnames (); }
+
+  string_vector keys (void) const
+    { return fieldnames (); }
 
   // get contents of a given field. empty value if not exist.
   Cell getfield (const std::string& key) const;
@@ -331,8 +341,8 @@
 
   void clear (void)
     {
-      keys.clear ();
-      vals.clear ();
+      xkeys.clear ();
+      xvals.clear ();
     }
 
   // The Array-like methods.
@@ -400,8 +410,8 @@
 
 private:
 
-  octave_fields keys;
-  std::vector<Cell> vals;
+  octave_fields xkeys;
+  std::vector<Cell> xvals;
   dim_vector dimensions;
 
   void optimize_dimensions (void);