diff src/oct-map.h @ 4219:23d06c9e1edd

[project @ 2002-12-06 21:29:17 by jwe]
author jwe
date Fri, 06 Dec 2002 21:29:19 +0000
parents 1f04df06e1a6
children dd7af4fa1942
line wrap: on
line diff
--- a/src/oct-map.h	Thu Dec 05 04:43:20 2002 +0000
+++ b/src/oct-map.h	Fri Dec 06 21:29:19 2002 +0000
@@ -27,7 +27,7 @@
 #pragma interface
 #endif
 
-#include "Map.h"
+#include <map>
 
 #include "oct-obj.h"
 
@@ -37,10 +37,14 @@
 Octave_map
 {
  public:
-  Octave_map (void) : map (octave_value_list ()), array_len (0) { }
+
+  typedef std::map<std::string, octave_value_list>::iterator iterator;
+  typedef std::map<std::string, octave_value_list>::const_iterator const_iterator;
+
+  Octave_map (void) : map (), array_len (0) { }
 
   Octave_map (const std::string& key, const octave_value& value)
-    : map (octave_value_list ()), array_len (1)
+    : map (), array_len (1)
       {
 	map[key] = octave_value_list (value);
       }
@@ -61,7 +65,7 @@
   ~Octave_map (void) { }
 
   // This is the number of keys.
-  int length (void) const { return map.length (); }
+  int length (void) const { return map.size (); }
 
   int empty (void) const { return map.empty (); }
 
@@ -69,18 +73,31 @@
 
   octave_value_list operator [] (const std::string& key) const;
 
-  void del (const std::string& key) { map.del (key); }
+  void del (const std::string& key)
+    {
+      iterator p = map.find (key);
+      if (p != map.end ())
+	map.erase (p);
+    }
 
-  Pix first (void) const { return map.first (); }
-  void next (Pix& i) const { map.next (i); }
+  iterator begin (void) { return iterator (map.begin ()); }
+  const_iterator begin (void) const { return const_iterator (map.begin ()); }
+
+  iterator end (void) { return iterator (map.end ()); }
+  const_iterator end (void) const { return const_iterator (map.end ()); }
 
-  std::string key (Pix p) const { return map.key (p); }
+  std::string key (const_iterator p) const { return p->first; }
 
-  octave_value_list& contents (Pix p) const { return map.contents (p); }
+  octave_value_list& contents (const_iterator p)
+    { return operator [] (key(p)); }
 
-  Pix seek (const std::string& key) const { return map.seek (key); }
+  octave_value_list contents (const_iterator p) const
+    { return operator [] (key(p)); }
 
-  int contains (const std::string& key) const { return map.contains (key); }
+  const_iterator seek (const std::string& key) const { return map.find (key); }
+
+  int contains (const std::string& key) const
+    { return (seek (key) != map.end ()); }
 
   void clear (void) { map.clear (); }
 
@@ -104,7 +121,7 @@
 private:
 
   // The map of names to values.
-  CHMap<octave_value_list> map;
+  std::map<std::string, octave_value_list> map;
 
   // The current size of this struct array;
   mutable int array_len;