Home | History | Annotate | Download | only in tcl
      1 //
      2 // SWIG typemaps for std::map
      3 // Luigi Ballabio
      4 // Jan. 2003
      5 //
      6 // Common implementation
      7 
      8 %include <std_common.i>
      9 
     10 // ------------------------------------------------------------------------
     11 // std::map
     12 // ------------------------------------------------------------------------
     13 
     14 %{
     15 #include <map>
     16 #include <algorithm>
     17 #include <stdexcept>
     18 %}
     19 
     20 // exported class
     21 
     22 namespace std {
     23 
     24     template<class K, class T> class map {
     25         // add typemaps here
     26       public:
     27         typedef size_t size_type;
     28         typedef ptrdiff_t difference_type;
     29         typedef K key_type;
     30         typedef T mapped_type;
     31         map();
     32         map(const map<K,T> &);
     33 
     34         unsigned int size() const;
     35         bool empty() const;
     36         void clear();
     37         %extend {
     38             const T& get(const K& key) throw (std::out_of_range) {
     39                 std::map<K,T >::iterator i = self->find(key);
     40                 if (i != self->end())
     41                     return i->second;
     42                 else
     43                     throw std::out_of_range("key not found");
     44             }
     45             void set(const K& key, const T& x) {
     46                 (*self)[key] = x;
     47             }
     48             void del(const K& key) throw (std::out_of_range) {
     49                 std::map<K,T >::iterator i = self->find(key);
     50                 if (i != self->end())
     51                     self->erase(i);
     52                 else
     53                     throw std::out_of_range("key not found");
     54             }
     55             bool has_key(const K& key) {
     56                 std::map<K,T >::iterator i = self->find(key);
     57                 return i != self->end();
     58             }
     59         }
     60     };
     61 
     62 // Legacy macros (deprecated)
     63 %define specialize_std_map_on_key(K,CHECK,CONVERT_FROM,CONVERT_TO)
     64 #warning "specialize_std_map_on_key ignored - macro is deprecated and no longer necessary"
     65 %enddef
     66 
     67 %define specialize_std_map_on_value(T,CHECK,CONVERT_FROM,CONVERT_TO)
     68 #warning "specialize_std_map_on_value ignored - macro is deprecated and no longer necessary"
     69 %enddef
     70 
     71 %define specialize_std_map_on_both(K,CHECK_K,CONVERT_K_FROM,CONVERT_K_TO, T,CHECK_T,CONVERT_T_FROM,CONVERT_T_TO)
     72 #warning "specialize_std_map_on_both ignored - macro is deprecated and no longer necessary"
     73 %enddef
     74 
     75 }
     76