Mercurial > hg > octave-nkf
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 +++ b/src/oct-map.h @@ -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;