// SWIG typemaps for std::map
// ------------------------------------------------------------------------
// The aim of all that follows would be to integrate std::map with
// Ruby as much as possible, namely, to allow the user to pass and
// be returned Ruby hash maps.
// const declarations are used to guess the intent of the function being
// exported; therefore, the following rationale is applied:
// -- f(std::map<T>), f(const std::map<T>&), f(const std::map<T>*):
// the parameter being read-only, either a Ruby hash or a
// previously wrapped std::map<T> can be passed.
// -- f(std::map<T>&), f(std::map<T>*):
// the parameter must be modified; therefore, only a wrapped std::map
// the map is returned by copy; therefore, a Ruby hash
// is returned which is most easily used in other Ruby functions
// -- std::map<T>& f(), std::map<T>* f(), const std::map<T>& f(),
// const std::map<T>* f():
// the map is returned by reference; therefore, a wrapped std::map
// ------------------------------------------------------------------------
template<class K, class T> class map {
%typemap(in) map<K,T> (std::map<K,T>* m) {
if (rb_obj_is_kind_of($input,rb_cHash)) {
VALUE keys = rb_funcall($input,rb_intern("keys"),0);
unsigned int size = RARRAY(keys)->len;
for (unsigned int i=0; i<size; i++) {
VALUE key = RARRAY(keys)->ptr[i];
VALUE val = rb_hash_aref($input,key);
SWIG_ConvertPtr(key, (void **) &k, $descriptor(K *), 1);
SWIG_ConvertPtr(val, (void **) &x, $descriptor(T *), 1);
(($1_type &)$1)[*k] = *x;
SWIG_ConvertPtr($input, (void **) &m, $&1_descriptor, 1);
%typemap(in) const map<K,T>& (std::map<K,T> temp,
const map<K,T>* (std::map<K,T> temp,
if (rb_obj_is_kind_of($input,rb_cHash)) {
VALUE keys = rb_funcall($input,rb_intern("keys"),0);
unsigned int size = RARRAY(keys)->len;
for (unsigned int i=0; i<size; i++) {
VALUE key = RARRAY(keys)->ptr[i];
VALUE val = rb_hash_aref($input,key);
SWIG_ConvertPtr(key, (void **) &k, $descriptor(K *), 1);
SWIG_ConvertPtr(val, (void **) &x, $descriptor(T *), 1);
SWIG_ConvertPtr($input, (void **) &m, $1_descriptor, 1);
for (std::map<K,T >::iterator i=$1.begin(); i!=$1.end(); ++i) {
K* key = new K(i->first);
T* val = new T(i->second);
SWIG_NewPointerObj((void *) key,
SWIG_NewPointerObj((void *) val,
%typecheck(SWIG_TYPECHECK_MAP) map<K,T> {
if (rb_obj_is_kind_of($input,rb_cHash)) {
VALUE keys = rb_funcall($input,rb_intern("keys"),0);
unsigned int size = RARRAY(keys)->len;
/* an empty dictionary can be of any type */
/* check the first element only */
VALUE key = RARRAY(keys)->ptr[0];
VALUE val = rb_hash_aref($input,key);
if (SWIG_ConvertPtr(key,(void **) &k,
$descriptor(K *),0) != -1 &&
SWIG_ConvertPtr(val,(void **) &x,
$descriptor(T *),0) != -1)
if (SWIG_ConvertPtr($input,(void **) &m,
%typecheck(SWIG_TYPECHECK_MAP) const map<K,T>&,
if (rb_obj_is_kind_of($input,rb_cHash)) {
VALUE keys = rb_funcall($input,rb_intern("keys"),0);
unsigned int size = RARRAY(keys)->len;
/* an empty dictionary can be of any type */
/* check the first element only */
VALUE key = RARRAY(keys)->ptr[0];
VALUE val = rb_hash_aref($input,key);
if (SWIG_ConvertPtr(key,(void **) &k,
$descriptor(K *),0) != -1 &&
SWIG_ConvertPtr(val,(void **) &x,
$descriptor(T *),0) != -1)
if (SWIG_ConvertPtr($input,(void **) &m,
%rename("delete") __delitem__;
%rename("has_key?") has_key;
unsigned int size() const;
T& __getitem__(const K& key) throw (std::out_of_range) {
std::map<K,T >::iterator i = self->find(key);
throw std::out_of_range("key not found");
void __setitem__(const K& key, const T& x) {
T __delitem__(const K& key) throw (std::out_of_range) {
std::map<K,T >::iterator i = self->find(key);
throw std::out_of_range("key not found");
bool has_key(const K& key) {
std::map<K,T >::iterator i = self->find(key);
VALUE keyList = rb_ary_new2(self->size());
std::map<K,T >::iterator i;
for (i=self->begin(), j=0; i!=self->end(); ++i, ++j) {
K* ptr = new K(i->first);
SWIG_NewPointerObj((void *) ptr,
VALUE valueList = rb_ary_new2(self->size());
std::map<K,T >::iterator i;
for (i=self->begin(), j=0; i!=self->end(); ++i, ++j) {
T* ptr = new T(i->second);
rb_ary_store(valueList,j,
SWIG_NewPointerObj((void *) ptr,
std::map<K,T >::iterator i;
for (i=self->begin(); i!=self->end(); ++i) {
K* key = new K(i->first);
VALUE entry = rb_ary_new2(2);
VALUE k = SWIG_NewPointerObj((void *) key,
VALUE x = SWIG_NewPointerObj((void *) val,
// specializations for built-ins
%define specialize_std_map_on_key(K,CHECK,CONVERT_FROM,CONVERT_TO)
%mixin map<K,T> "Enumerable";
template<class T> class map<K,T> {
%typemap(in) map<K,T> (std::map<K,T>* m) {
if (rb_obj_is_kind_of($input,rb_cHash)) {
VALUE keys = rb_funcall($input,rb_intern("keys"),0);
unsigned int size = RARRAY(keys)->len;
for (unsigned int i=0; i<size; i++) {
VALUE key = RARRAY(keys)->ptr[i];
VALUE val = rb_hash_aref($input,key);
" (expected map<" #K "," #T ">)");
SWIG_ConvertPtr(val,(void **) &x,
(($1_type &)$1)[CONVERT_FROM(key)] = *x;
SWIG_ConvertPtr($input,(void **) &m, $&1_descriptor,1);
%typemap(in) const map<K,T>& (std::map<K,T> temp,
const map<K,T>* (std::map<K,T> temp,
if (rb_obj_is_kind_of($input,rb_cHash)) {
VALUE keys = rb_funcall($input,rb_intern("keys"),0);
unsigned int size = RARRAY(keys)->len;
for (unsigned int i=0; i<size; i++) {
VALUE key = RARRAY(keys)->ptr[i];
VALUE val = rb_hash_aref($input,key);
" (expected map<" #K "," #T ">)");
SWIG_ConvertPtr(val,(void **) &x,
temp[CONVERT_FROM(key)] = *x;
SWIG_ConvertPtr($input,(void **) &m,$1_descriptor,1);
for (std::map<K,T >::iterator i=$1.begin(); i!=$1.end(); ++i) {
T* obj = new T(i->second);
SWIG_NewPointerObj((void *) obj,
%typecheck(SWIG_TYPECHECK_MAP) map<K,T> {
if (rb_obj_is_kind_of($input,rb_cHash)) {
VALUE keys = rb_funcall($input,rb_intern("keys"),0);
unsigned int size = RARRAY(keys)->len;
// an empty dictionary can be of any type
// check the first element only
VALUE key = RARRAY(keys)->ptr[0];
VALUE val = rb_hash_aref($input,key);
SWIG_ConvertPtr(val,(void **) &x,
$descriptor(T *),0) != -1)
if (SWIG_ConvertPtr($input,(void **) &m,
%typecheck(SWIG_TYPECHECK_MAP) const map<K,T>&,
if (rb_obj_is_kind_of($input,rb_cHash)) {
VALUE keys = rb_funcall($input,rb_intern("keys"),0);
unsigned int size = RARRAY(keys)->len;
// an empty dictionary can be of any type
// check the first element only
VALUE key = RARRAY(keys)->ptr[0];
VALUE val = rb_hash_aref($input,key);
SWIG_ConvertPtr(val,(void **) &x,
$descriptor(T *),0) != -1)
if (SWIG_ConvertPtr($input,(void **) &m,
%rename("delete") __delitem__;
%rename("has_key?") has_key;
unsigned int size() const;
T& __getitem__(K key) throw (std::out_of_range) {
std::map<K,T >::iterator i = self->find(key);
throw std::out_of_range("key not found");
void __setitem__(K key, const T& x) {
T __delitem__(K key) throw (std::out_of_range) {
std::map<K,T >::iterator i = self->find(key);
throw std::out_of_range("key not found");
std::map<K,T >::iterator i = self->find(key);
VALUE keyList = rb_ary_new2(self->size());
std::map<K,T >::iterator i;
for (i=self->begin(), j=0; i!=self->end(); ++i, ++j) {
VALUE valueList = rb_ary_new2(self->size());
std::map<K,T >::iterator i;
for (i=self->begin(), j=0; i!=self->end(); ++i, ++j) {
T* ptr = new T(i->second);
rb_ary_store(valueList,j,
SWIG_NewPointerObj((void *) ptr,
std::map<K,T >::iterator i;
for (i=self->begin(); i!=self->end(); ++i) {
VALUE entry = rb_ary_new2(2);
VALUE k = CONVERT_TO(i->first);
VALUE x = SWIG_NewPointerObj((void *) val,
%define specialize_std_map_on_value(T,CHECK,CONVERT_FROM,CONVERT_TO)
%mixin map<K,T> "Enumerable";
template<class K> class map<K,T> {
%typemap(in) map<K,T> (std::map<K,T>* m) {
if (rb_obj_is_kind_of($input,rb_cHash)) {
VALUE keys = rb_funcall($input,rb_intern("keys"),0);
unsigned int size = RARRAY(keys)->len;
for (unsigned int i=0; i<size; i++) {
VALUE key = RARRAY(keys)->ptr[i];
VALUE val = rb_hash_aref($input,key);
" (expected map<" #K "," #T ">)");
SWIG_ConvertPtr(key,(void **) &k,
(($1_type &)$1)[*k] = CONVERT_FROM(val);
SWIG_ConvertPtr($input,(void **) &m, $&1_descriptor,1);
%typemap(in) const map<K,T>& (std::map<K,T> temp,
const map<K,T>* (std::map<K,T> temp,
if (rb_obj_is_kind_of($input,rb_cHash)) {
VALUE keys = rb_funcall($input,rb_intern("keys"),0);
unsigned int size = RARRAY(keys)->len;
for (unsigned int i=0; i<size; i++) {
VALUE key = RARRAY(keys)->ptr[i];
VALUE val = rb_hash_aref($input,key);
" (expected map<" #K "," #T ">)");
SWIG_ConvertPtr(key,(void **) &k,
temp[*k] = CONVERT_FROM(val);
SWIG_ConvertPtr($input,(void **) &m, $1_descriptor,1);
for (std::map<K,T >::iterator i=$1.begin(); i!=$1.end(); ++i) {
K* key = new K(i->first);
SWIG_NewPointerObj((void *) key,
%typecheck(SWIG_TYPECHECK_MAP) map<K,T> {
if (rb_obj_is_kind_of($input,rb_cHash)) {
VALUE keys = rb_funcall($input,rb_intern("keys"),0);
unsigned int size = RARRAY(keys)->len;
// an empty dictionary can be of any type
// check the first element only
VALUE key = RARRAY(keys)->ptr[0];
VALUE val = rb_hash_aref($input,key);
if (SWIG_ConvertPtr(val,(void **) &k,
$descriptor(K *),0) != -1 &&
if (SWIG_ConvertPtr($input,(void **) &m,
%typecheck(SWIG_TYPECHECK_MAP) const map<K,T>&,
if (rb_obj_is_kind_of($input,rb_cHash)) {
VALUE keys = rb_funcall($input,rb_intern("keys"),0);
unsigned int size = RARRAY(keys)->len;
// an empty dictionary can be of any type
// check the first element only
VALUE key = RARRAY(keys)->ptr[0];
VALUE val = rb_hash_aref($input,key);
if (SWIG_ConvertPtr(val,(void **) &k,
$descriptor(K *),0) != -1 &&
if (SWIG_ConvertPtr($input,(void **) &m,
%rename("delete") __delitem__;
%rename("has_key?") has_key;
unsigned int size() const;
T __getitem__(const K& key) throw (std::out_of_range) {
std::map<K,T >::iterator i = self->find(key);
throw std::out_of_range("key not found");
void __setitem__(const K& key, T x) {
T __delitem__(const K& key) throw (std::out_of_range) {
std::map<K,T >::iterator i = self->find(key);
throw std::out_of_range("key not found");
bool has_key(const K& key) {
std::map<K,T >::iterator i = self->find(key);
VALUE keyList = rb_ary_new2(self->size());
std::map<K,T >::iterator i;
for (i=self->begin(), j=0; i!=self->end(); ++i, ++j) {
K* ptr = new K(i->first);
SWIG_NewPointerObj((void *) ptr,
VALUE valueList = rb_ary_new2(self->size());
std::map<K,T >::iterator i;
for (i=self->begin(), j=0; i!=self->end(); ++i, ++j) {
rb_ary_store(valueList,j,
std::map<K,T >::iterator i;
for (i=self->begin(); i!=self->end(); ++i) {
K* key = new K(i->first);
VALUE entry = rb_ary_new2(2);
VALUE k = SWIG_NewPointerObj((void *) key,
VALUE x = CONVERT_TO(i->second);
%define specialize_std_map_on_both(K,CHECK_K,CONVERT_K_FROM,CONVERT_K_TO,
T,CHECK_T,CONVERT_T_FROM,CONVERT_T_TO)
%mixin map<K,T> "Enumerable";
template<> class map<K,T> {
%typemap(in) map<K,T> (std::map<K,T>* m) {
if (rb_obj_is_kind_of($input,rb_cHash)) {
VALUE keys = rb_funcall($input,rb_intern("keys"),0);
unsigned int size = RARRAY(keys)->len;
for (unsigned int i=0; i<size; i++) {
VALUE key = RARRAY(keys)->ptr[i];
VALUE val = rb_hash_aref($input,key);
if (!(CHECK_K(key) && CHECK_T(val)))
" (expected map<" #K "," #T ">)");
(($1_type &)$1)[CONVERT_K_FROM(key)] =
SWIG_ConvertPtr($input,(void **) &m, $&1_descriptor,1);
%typemap(in) const map<K,T>& (std::map<K,T> temp,
const map<K,T>* (std::map<K,T> temp,
if (rb_obj_is_kind_of($input,rb_cHash)) {
VALUE keys = rb_funcall($input,rb_intern("keys"),0);
unsigned int size = RARRAY(keys)->len;
for (unsigned int i=0; i<size; i++) {
VALUE key = RARRAY(keys)->ptr[i];
VALUE val = rb_hash_aref($input,key);
if (!(CHECK_K(key) && CHECK_T(val)))
" (expected map<" #K "," #T ">)");
temp[CONVERT_K_FROM(key)] = CONVERT_T_FROM(val);
SWIG_ConvertPtr($input,(void **) &m, $1_descriptor,1);
for (std::map<K,T >::iterator i=$1.begin(); i!=$1.end(); ++i) {
CONVERT_T_TO(i->second));
%typecheck(SWIG_TYPECHECK_MAP) map<K,T> {
if (rb_obj_is_kind_of($input,rb_cHash)) {
VALUE keys = rb_funcall($input,rb_intern("keys"),0);
unsigned int size = RARRAY(keys)->len;
// an empty dictionary can be of any type
// check the first element only
VALUE key = RARRAY(keys)->ptr[0];
VALUE val = rb_hash_aref($input,key);
if (CHECK_K(key) && CHECK_T(val))
if (SWIG_ConvertPtr($input,(void **) &m,
%typecheck(SWIG_TYPECHECK_MAP) const map<K,T>&,
if (rb_obj_is_kind_of($input,rb_cHash)) {
VALUE keys = rb_funcall($input,rb_intern("keys"),0);
unsigned int size = RARRAY(keys)->len;
// an empty dictionary can be of any type
// check the first element only
VALUE key = RARRAY(keys)->ptr[0];
VALUE val = rb_hash_aref($input,key);
if (CHECK_K(key) && CHECK_T(val))
if (SWIG_ConvertPtr($input,(void **) &m,
%rename("delete") __delitem__;
%rename("has_key?") has_key;
unsigned int size() const;
T __getitem__(K key) throw (std::out_of_range) {
std::map<K,T >::iterator i = self->find(key);
throw std::out_of_range("key not found");
void __setitem__(K key, T x) {
T __delitem__(K key) throw (std::out_of_range) {
std::map<K,T >::iterator i = self->find(key);
throw std::out_of_range("key not found");
std::map<K,T >::iterator i = self->find(key);
VALUE keyList = rb_ary_new2(self->size());
std::map<K,T >::iterator i;
for (i=self->begin(), j=0; i!=self->end(); ++i, ++j) {
VALUE valueList = rb_ary_new2(self->size());
std::map<K,T >::iterator i;
for (i=self->begin(), j=0; i!=self->end(); ++i, ++j) {
rb_ary_store(valueList,j,
CONVERT_T_TO(i->second));
std::map<K,T >::iterator i;
for (i=self->begin(); i!=self->end(); ++i) {
VALUE entry = rb_ary_new2(2);
rb_ary_store(entry,0,CONVERT_K_TO(i->first));
rb_ary_store(entry,1,CONVERT_T_TO(i->second));
specialize_std_map_on_key(bool,SWIG_BOOL_P,
SWIG_RB2BOOL,SWIG_BOOL2RB);
specialize_std_map_on_key(int,FIXNUM_P,
specialize_std_map_on_key(short,FIXNUM_P,
specialize_std_map_on_key(long,FIXNUM_P,
specialize_std_map_on_key(unsigned int,FIXNUM_P,
specialize_std_map_on_key(unsigned short,FIXNUM_P,
specialize_std_map_on_key(unsigned long,FIXNUM_P,
specialize_std_map_on_key(double,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_key(float,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_key(std::string,SWIG_STRING_P,
SWIG_RB2STR,SWIG_STR2RB);
specialize_std_map_on_value(bool,SWIG_BOOL_P,
SWIG_RB2BOOL,SWIG_BOOL2RB);
specialize_std_map_on_value(int,FIXNUM_P,
specialize_std_map_on_value(short,FIXNUM_P,
specialize_std_map_on_value(long,FIXNUM_P,
specialize_std_map_on_value(unsigned int,FIXNUM_P,
specialize_std_map_on_value(unsigned short,FIXNUM_P,
specialize_std_map_on_value(unsigned long,FIXNUM_P,
specialize_std_map_on_value(double,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_value(float,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_value(std::string,SWIG_STRING_P,
SWIG_RB2STR,SWIG_STR2RB);
specialize_std_map_on_both(bool,SWIG_BOOL_P,
SWIG_RB2BOOL,SWIG_BOOL2RB,
SWIG_RB2BOOL,SWIG_BOOL2RB);
specialize_std_map_on_both(bool,SWIG_BOOL_P,
SWIG_RB2BOOL,SWIG_BOOL2RB,
specialize_std_map_on_both(bool,SWIG_BOOL_P,
SWIG_RB2BOOL,SWIG_BOOL2RB,
specialize_std_map_on_both(bool,SWIG_BOOL_P,
SWIG_RB2BOOL,SWIG_BOOL2RB,
specialize_std_map_on_both(bool,SWIG_BOOL_P,
SWIG_RB2BOOL,SWIG_BOOL2RB,
specialize_std_map_on_both(bool,SWIG_BOOL_P,
SWIG_RB2BOOL,SWIG_BOOL2RB,
specialize_std_map_on_both(bool,SWIG_BOOL_P,
SWIG_RB2BOOL,SWIG_BOOL2RB,
specialize_std_map_on_both(bool,SWIG_BOOL_P,
SWIG_RB2BOOL,SWIG_BOOL2RB,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_both(bool,SWIG_BOOL_P,
SWIG_RB2BOOL,SWIG_BOOL2RB,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_both(bool,SWIG_BOOL_P,
SWIG_RB2BOOL,SWIG_BOOL2RB,
std::string,SWIG_STRING_P,
SWIG_RB2STR,SWIG_STR2RB);
specialize_std_map_on_both(int,FIXNUM_P,
SWIG_RB2BOOL,SWIG_BOOL2RB);
specialize_std_map_on_both(int,FIXNUM_P,
specialize_std_map_on_both(int,FIXNUM_P,
specialize_std_map_on_both(int,FIXNUM_P,
specialize_std_map_on_both(int,FIXNUM_P,
specialize_std_map_on_both(int,FIXNUM_P,
specialize_std_map_on_both(int,FIXNUM_P,
specialize_std_map_on_both(int,FIXNUM_P,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_both(int,FIXNUM_P,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_both(int,FIXNUM_P,
std::string,SWIG_STRING_P,
SWIG_RB2STR,SWIG_STR2RB);
specialize_std_map_on_both(short,FIXNUM_P,
SWIG_RB2BOOL,SWIG_BOOL2RB);
specialize_std_map_on_both(short,FIXNUM_P,
specialize_std_map_on_both(short,FIXNUM_P,
specialize_std_map_on_both(short,FIXNUM_P,
specialize_std_map_on_both(short,FIXNUM_P,
specialize_std_map_on_both(short,FIXNUM_P,
specialize_std_map_on_both(short,FIXNUM_P,
specialize_std_map_on_both(short,FIXNUM_P,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_both(short,FIXNUM_P,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_both(short,FIXNUM_P,
std::string,SWIG_STRING_P,
SWIG_RB2STR,SWIG_STR2RB);
specialize_std_map_on_both(long,FIXNUM_P,
SWIG_RB2BOOL,SWIG_BOOL2RB);
specialize_std_map_on_both(long,FIXNUM_P,
specialize_std_map_on_both(long,FIXNUM_P,
specialize_std_map_on_both(long,FIXNUM_P,
specialize_std_map_on_both(long,FIXNUM_P,
specialize_std_map_on_both(long,FIXNUM_P,
specialize_std_map_on_both(long,FIXNUM_P,
specialize_std_map_on_both(long,FIXNUM_P,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_both(long,FIXNUM_P,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_both(long,FIXNUM_P,
std::string,SWIG_STRING_P,
SWIG_RB2STR,SWIG_STR2RB);
specialize_std_map_on_both(unsigned int,FIXNUM_P,
SWIG_RB2BOOL,SWIG_BOOL2RB);
specialize_std_map_on_both(unsigned int,FIXNUM_P,
specialize_std_map_on_both(unsigned int,FIXNUM_P,
specialize_std_map_on_both(unsigned int,FIXNUM_P,
specialize_std_map_on_both(unsigned int,FIXNUM_P,
specialize_std_map_on_both(unsigned int,FIXNUM_P,
specialize_std_map_on_both(unsigned int,FIXNUM_P,
specialize_std_map_on_both(unsigned int,FIXNUM_P,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_both(unsigned int,FIXNUM_P,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_both(unsigned int,FIXNUM_P,
std::string,SWIG_STRING_P,
SWIG_RB2STR,SWIG_STR2RB);
specialize_std_map_on_both(unsigned short,FIXNUM_P,
SWIG_RB2BOOL,SWIG_BOOL2RB);
specialize_std_map_on_both(unsigned short,FIXNUM_P,
specialize_std_map_on_both(unsigned short,FIXNUM_P,
specialize_std_map_on_both(unsigned short,FIXNUM_P,
specialize_std_map_on_both(unsigned short,FIXNUM_P,
specialize_std_map_on_both(unsigned short,FIXNUM_P,
specialize_std_map_on_both(unsigned short,FIXNUM_P,
specialize_std_map_on_both(unsigned short,FIXNUM_P,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_both(unsigned short,FIXNUM_P,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_both(unsigned short,FIXNUM_P,
std::string,SWIG_STRING_P,
SWIG_RB2STR,SWIG_STR2RB);
specialize_std_map_on_both(unsigned long,FIXNUM_P,
SWIG_RB2BOOL,SWIG_BOOL2RB);
specialize_std_map_on_both(unsigned long,FIXNUM_P,
specialize_std_map_on_both(unsigned long,FIXNUM_P,
specialize_std_map_on_both(unsigned long,FIXNUM_P,
specialize_std_map_on_both(unsigned long,FIXNUM_P,
specialize_std_map_on_both(unsigned long,FIXNUM_P,
specialize_std_map_on_both(unsigned long,FIXNUM_P,
specialize_std_map_on_both(unsigned long,FIXNUM_P,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_both(unsigned long,FIXNUM_P,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_both(unsigned long,FIXNUM_P,
std::string,SWIG_STRING_P,
SWIG_RB2STR,SWIG_STR2RB);
specialize_std_map_on_both(double,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new,
SWIG_RB2BOOL,SWIG_BOOL2RB);
specialize_std_map_on_both(double,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new,
specialize_std_map_on_both(double,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new,
specialize_std_map_on_both(double,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new,
specialize_std_map_on_both(double,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new,
specialize_std_map_on_both(double,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new,
specialize_std_map_on_both(double,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new,
specialize_std_map_on_both(double,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_both(double,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_both(double,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new,
std::string,SWIG_STRING_P,
SWIG_RB2STR,SWIG_STR2RB);
specialize_std_map_on_both(float,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new,
SWIG_RB2BOOL,SWIG_BOOL2RB);
specialize_std_map_on_both(float,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new,
specialize_std_map_on_both(float,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new,
specialize_std_map_on_both(float,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new,
specialize_std_map_on_both(float,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new,
specialize_std_map_on_both(float,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new,
specialize_std_map_on_both(float,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new,
specialize_std_map_on_both(float,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_both(float,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_both(float,SWIG_FLOAT_P,
SWIG_NUM2DBL,rb_float_new,
std::string,SWIG_STRING_P,
SWIG_RB2STR,SWIG_STR2RB);
specialize_std_map_on_both(std::string,SWIG_STRING_P,
SWIG_RB2BOOL,SWIG_BOOL2RB);
specialize_std_map_on_both(std::string,SWIG_STRING_P,
specialize_std_map_on_both(std::string,SWIG_STRING_P,
specialize_std_map_on_both(std::string,SWIG_STRING_P,
specialize_std_map_on_both(std::string,SWIG_STRING_P,
specialize_std_map_on_both(std::string,SWIG_STRING_P,
specialize_std_map_on_both(std::string,SWIG_STRING_P,
specialize_std_map_on_both(std::string,SWIG_STRING_P,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_both(std::string,SWIG_STRING_P,
SWIG_NUM2DBL,rb_float_new);
specialize_std_map_on_both(std::string,SWIG_STRING_P,
std::string,SWIG_STRING_P,
SWIG_RB2STR,SWIG_STR2RB);