blob: 84b0c74ff30b59d06b67df8044252e639d94ddc5 [file] [log] [blame]
Alice Chingc9602282014-03-05 12:03:26 -08001/* -----------------------------------------------------------------------------
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}