comparison lib/swig/swigwin-2.0.11/Lib/lua/std_map.i @ 1899:b3009adc0e2f

Adding swig, gitignore, hgignore
author Nomad
date Mon, 21 Oct 2013 10:42:27 +0200
parents
children
comparison
equal deleted inserted replaced
1867:eb580660bbbb 1899:b3009adc0e2f
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
21 namespace 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 }