PageRenderTime 45ms CodeModel.GetById 41ms app.highlight 1ms RepoModel.GetById 1ms app.codeStats 0ms

/trunk/Lib/go/std_map.i

#
Swig | 60 lines | 48 code | 7 blank | 5 comment | 0 complexity | e50237ceb2ced96efc249d288bbf8d4c 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
23    template<class K, class T> class map {
24        // add typemaps here
25      public:
26        typedef size_t size_type;
27        typedef ptrdiff_t difference_type;
28        typedef K key_type;
29        typedef T mapped_type;
30        map();
31        map(const map<K,T> &);
32        
33        unsigned int size() const;
34        bool empty() const;
35        void clear();
36        %extend {
37            const T& get(const K& key) throw (std::out_of_range) {
38                std::map<K,T >::iterator i = self->find(key);
39                if (i != self->end())
40                    return i->second;
41                else
42                    throw std::out_of_range("key not found");
43            }
44            void set(const K& key, const T& x) {
45                (*self)[key] = x;
46            }
47            void del(const K& key) throw (std::out_of_range) {
48                std::map<K,T >::iterator i = self->find(key);
49                if (i != self->end())
50                    self->erase(i);
51                else
52                    throw std::out_of_range("key not found");
53            }
54            bool has_key(const K& key) {
55                std::map<K,T >::iterator i = self->find(key);
56                return i != self->end();
57            }
58        }
59    };
60}