Home | History | Annotate | Download | only in java
      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