PageRenderTime 17ms CodeModel.GetById 11ms app.highlight 2ms RepoModel.GetById 1ms app.codeStats 0ms

/trunk/Lib/d/std_map.i

#
Swig | 59 lines | 48 code | 6 blank | 5 comment | 0 complexity | 304148b9456230c8c94aa922142f09ca MD5 | raw file
 1/* -----------------------------------------------------------------------------
 2 * std_map.i
 3 *
 4 * SWIG typemaps for std::map
 5 * ----------------------------------------------------------------------------- */
 6
 7%include <std_common.i>
 8
 9// ------------------------------------------------------------------------
10// std::map
11// ------------------------------------------------------------------------
12
13%{
14#include <map>
15#include <algorithm>
16#include <stdexcept>
17%}
18
19// exported class
20
21namespace std {
22    template<class K, class T> class map {
23        // add typemaps here
24      public:
25        typedef size_t size_type;
26        typedef ptrdiff_t difference_type;
27        typedef K key_type;
28        typedef T mapped_type;
29        map();
30        map(const map<K,T> &);
31
32        unsigned int size() const;
33        bool empty() const;
34        void clear();
35        %extend {
36            const T& get(const K& key) throw (std::out_of_range) {
37                std::map<K,T >::iterator i = self->find(key);
38                if (i != self->end())
39                    return i->second;
40                else
41                    throw std::out_of_range("key not found");
42            }
43            void set(const K& key, const T& x) {
44                (*self)[key] = x;
45            }
46            void del(const K& key) throw (std::out_of_range) {
47                std::map<K,T >::iterator i = self->find(key);
48                if (i != self->end())
49                    self->erase(i);
50                else
51                    throw std::out_of_range("key not found");
52            }
53            bool has_key(const K& key) {
54                std::map<K,T >::iterator i = self->find(key);
55                return i != self->end();
56            }
57        }
58    };
59}