diff options
author | David Robillard <d@drobilla.net> | 2007-07-26 08:30:11 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-07-26 08:30:11 +0000 |
commit | 9867aa08b2566800f81c8b2cdeff7372b2bb8c5b (patch) | |
tree | 3c9789b3ab40d11d73e76e16419c2b2ef43a0af3 /raul/TableImpl.hpp | |
parent | ffe8ccde2157ef802b7876cef9489904c02bcece (diff) | |
download | raul-9867aa08b2566800f81c8b2cdeff7372b2bb8c5b.tar.gz raul-9867aa08b2566800f81c8b2cdeff7372b2bb8c5b.tar.bz2 raul-9867aa08b2566800f81c8b2cdeff7372b2bb8c5b.zip |
Implement std::map[key] = value interface.
git-svn-id: http://svn.drobilla.net/lad/raul@632 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'raul/TableImpl.hpp')
-rw-r--r-- | raul/TableImpl.hpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/raul/TableImpl.hpp b/raul/TableImpl.hpp index 35bf2f6..8fcba0b 100644 --- a/raul/TableImpl.hpp +++ b/raul/TableImpl.hpp @@ -140,6 +140,28 @@ Table<K,T>::insert(const std::pair<K, T>& entry) return make_pair(iterator(*this, i), true); } + + +/** Insert an item, and return a reference to it's value. + * + * This may be used to insert values with pretty syntax: + * + * table["gorilla"] = "killa"; + * + * T must have a default constructor for this to be possible. + */ +template <typename K, typename T> +T& +Table<K, T>::operator[](const K& key) +{ + iterator i = find(key); + if (i != end()) { + return i->second; + } else { + std::pair<iterator,bool> ret = insert(make_pair(key, T())); + return ret.first->second; + } +} template <typename K, typename T> |