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 61 // Legacy macros (deprecated) 62 %define specialize_std_map_on_key(K,CHECK,CONVERT_FROM,CONVERT_TO) 63 #warning "specialize_std_map_on_key ignored - macro is deprecated and no longer necessary" 64 %enddef 65 66 %define specialize_std_map_on_value(T,CHECK,CONVERT_FROM,CONVERT_TO) 67 #warning "specialize_std_map_on_value ignored - macro is deprecated and no longer necessary" 68 %enddef 69 70 %define specialize_std_map_on_both(K,CHECK_K,CONVERT_K_FROM,CONVERT_K_TO, T,CHECK_T,CONVERT_T_FROM,CONVERT_T_TO) 71 #warning "specialize_std_map_on_both ignored - macro is deprecated and no longer necessary" 72 %enddef 73 74 } 75