diff options
author | William S Fulton <wsf@fultondesigns.co.uk> | 2009-05-26 17:08:53 +0000 |
---|---|---|
committer | William S Fulton <wsf@fultondesigns.co.uk> | 2009-05-26 17:08:53 +0000 |
commit | 25bcb4d5e60933b787f077c68837343fa27b38f9 (patch) | |
tree | 61f851baf7aba42afa4e048030bbb379ea97979c /Lib/csharp/std_map.i | |
parent | 3ffdfee64ad32119196c2d8f34454fabce7804f4 (diff) | |
download | swig-25bcb4d5e60933b787f077c68837343fa27b38f9.tar.gz |
std::map C# improvements
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11236 626c5289-ae23-0410-ae9c-e8d60b6d4f22
Diffstat (limited to 'Lib/csharp/std_map.i')
-rw-r--r-- | Lib/csharp/std_map.i | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/Lib/csharp/std_map.i b/Lib/csharp/std_map.i index 32914affe..3b09861a2 100644 --- a/Lib/csharp/std_map.i +++ b/Lib/csharp/std_map.i @@ -53,7 +53,7 @@ %rename(Clear) clear; void clear(); %extend { - const mapped_type& get(const key_type& key) throw (std::out_of_range) { + const mapped_type& getitem(const key_type& key) throw (std::out_of_range) { std::map<K,T >::iterator iter = $self->find(key); if (iter != $self->end()) return iter->second; @@ -61,22 +61,31 @@ throw std::out_of_range("key not found"); } - void set(const key_type& key, const mapped_type& x) { + void setitem(const key_type& key, const mapped_type& x) { (*$self)[key] = x; } - void del(const key_type& key) throw (std::out_of_range) { - std::map<K,T >::iterator iter = $self->find(key); + bool ContainsKey(const key_type& key) { + std::map<K, T >::iterator iter = $self->find(key); + return iter != $self->end(); + } + + void Add(const key_type& key, const mapped_type& val) throw (std::out_of_range) { + std::map<K, T >::iterator iter = $self->find(key); if (iter != $self->end()) - $self->erase(iter); - else - throw std::out_of_range("key not found"); + throw std::out_of_range("key already exists"); + $self->insert(std::pair<K, T >(key, val)); } - bool has_key(const key_type& key) { - std::map<K,T >::iterator iter = $self->find(key); - return iter != $self->end(); + bool Remove(const key_type& key) { + std::map<K, T >::iterator iter = $self->find(key); + if (iter != $self->end()) { + $self->erase(iter); + return true; + } + return false; } + } %enddef |