diff --git a/Lib/r/std_vector.i b/Lib/r/std_vector.i index d8d82f26a..4ec51dc91 100644 --- a/Lib/r/std_vector.i +++ b/Lib/r/std_vector.i @@ -544,8 +544,7 @@ struct traits_asptr < std::vector > { static int asptr(SEXP obj, std::vector **val) { std::vector *p; - Rprintf("my asptr\n"); - int res = SWIG_R_ConvertPtr(obj, (void**)&p, type_info< std::vector >(), 0); + int res = SWIG_R_ConvertPtr(obj, (void**)&p, type_info< std::vector >(), 0); if (SWIG_IsOK(res)) { if (val) *val = p; } @@ -839,35 +838,35 @@ %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector) %traits_type_name(std::vector) -%typemap("rtypecheck") std::vector, std::vector const, std::vector const& +%typemap("rtypecheck") std::vector, std::vector *, std::vector & %{ is.numeric($arg) %} %typemap("rtype") std::vector "numeric" -%typemap("scoercein") std::vector, std::vector const, std::vector const& ""; +%typemap("scoercein") std::vector, std::vector *, std::vector & "$input = as.numeric($input);"; %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector) %traits_type_name(std::vector) // reuse these for float -%typemap("rtype") std::vector = std::vector; -%typemap("rtypecheck") std::vector = std::vector; -%typemap("scoercein") std::vector = std::vector; +%typemap("rtype") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtypecheck") std::vector, std::vector *, std::vector & = std::vector; +%typemap("scoercein") std::vector, std::vector *, std::vector & = std::vector; %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector); %traits_type_name(std::vector); -%typemap("rtypecheck") std::vector , std::vector const, std::vector const& +%typemap("rtypecheck") std::vector, std::vector *, std::vector & %{ is.logical($arg) %} %typemap("rtype") std::vector "logical" -%typemap("scoercein") std::vector , std::vector const, std::vector const& "$input = as.logical($input);"; +%typemap("scoercein") std::vector , std::vector & "$input = as.logical($input);"; %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector); %traits_type_name(std::vector); -%typemap("rtypecheck") std::vector, std::vector const, std::vector const & +%typemap("rtypecheck") std::vector, std::vector *, std::vector & %{ is.integer($arg) || is.numeric($arg) %} %typemap("rtype") std::vector "integer" -%typemap("scoercein") std::vector , std::vector const, std::vector const& "$input = as.integer($input);"; +%typemap("scoercein") std::vector , std::vector *, std::vector & "$input = as.integer($input);"; // strings %typemap("rtype") std::vector< std::basic_string >, @@ -928,76 +927,83 @@ std::vector< std::basic_string > *, // but we can't use %apply as it will copy the C side ones too // Also note that we don't seem to be able to use types like // int_least8_t here. -%typemap("rtype") std::vector = std::vector; -%typemap("rtype") std::vector = std::vector; -%typemap("rtype") std::vector = std::vector; -%typemap("rtype") std::vector = std::vector; +%typemap("rtype") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtype") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtype") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtype") std::vector, std::vector *, std::vector & = std::vector; #if defined(SWIGWORDSIZE64) -%typemap("rtype") std::vector = std::vector; -%typemap("rtype") std::vector = std::vector; +%typemap("rtype") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtype") std::vector, std::vector *, std::vector & = std::vector; #else -%typemap("rtype") std::vector = std::vector; -%typemap("rtype") std::vector = std::vector; +%typemap("rtype") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtype") std::vector, std::vector *, std::vector & = std::vector; #endif -%typemap("scoercein") std::vector = std::vector; -%typemap("scoercein") std::vector = std::vector; -%typemap("scoercein") std::vector = std::vector; -%typemap("scoercein") std::vector = std::vector; +%typemap("scoercein") std::vector, std::vector *, std::vector & = std::vector; +%typemap("scoercein") std::vector, std::vector *, std::vector & = std::vector; +%typemap("scoercein") std::vector, std::vector *, std::vector & = std::vector; +%typemap("scoercein") std::vector, std::vector *, std::vector & = std::vector; #if defined(SWIGWORDSIZE64) -%typemap("scoercein") std::vector = std::vector; -%typemap("scoercein") std::vector = std::vector; +%typemap("scoercein") std::vector, std::vector *, std::vector & = std::vector; +%typemap("scoercein") std::vector, std::vector *, std::vector & = std::vector; #else -%typemap("scoercein") std::vector = std::vector; -%typemap("scoercein") std::vector = std::vector; +%typemap("scoercein") std::vector, std::vector *, std::vector & = std::vector; +%typemap("scoercein") std::vector, std::vector *, std::vector & = std::vector; #endif -%typemap("rtypecheck") std::vector = std::vector; -%typemap("rtypecheck") std::vector = std::vector; -%typemap("rtypecheck") std::vector = std::vector; -%typemap("rtypecheck") std::vector = std::vector; +%typemap("rtypecheck") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtypecheck") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtypecheck") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtypecheck") std::vector, std::vector *, std::vector & = std::vector; #if defined(SWIGWORDSIZE64) -%typemap("rtypecheck") std::vector = std::vector; -%typemap("rtypecheck") std::vector = std::vector; +%typemap("rtypecheck") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtypecheck") std::vector, std::vector *, std::vector & = std::vector; #else -%typemap("rtypecheck") std::vector = std::vector; -%typemap("rtypecheck") std::vector = std::vector; +%typemap("rtypecheck") std::vector, std::vector *, std::vector & = std::vector; +%typemap("rtypecheck") std::vector, std::vector *, std::vector & = std::vector; #endif /////////////////////////////////////////////////////////////// %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector >); %traits_type_name(std::vector< std::vector >); -%typemap("rtypecheck") std::vector >, std::vector > const, std::vector >const& +%typemap("rtypecheck") std::vector >, std::vector > *, std::vector > & %{ is.list($arg) && all(sapply($arg , is.integer) || sapply($arg, is.numeric)) %} -%typemap("rtype") std::vector > "list" -%typemap("scoercein") std::vector< std::vector >, std::vector > const, std::vector >const& "$input = lapply($input, as.integer);"; +%typemap("rtype") std::vector >, std::vector > *, std::vector > & "list" +%typemap("scoercein") std::vector< std::vector >, std::vector > *, std::vector > & "$input = lapply($input, as.integer);"; + +%typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector >); +%traits_type_name(std::vector< std::vector >); +%typemap("rtypecheck") std::vector >, std::vector > *, std::vector > & + %{ is.list($arg) && all(sapply($arg , is.integer) || sapply($arg, is.numeric)) %} +%typemap("rtype") std::vector >, std::vector > *, std::vector > & "list" +%typemap("scoercein") std::vector< std::vector >, std::vector > *, std::vector > & "$input = lapply($input, as.integer);"; %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector >); %traits_type_name(std::vector< std::vector >); -%typemap("rtypecheck") std::vector >, std::vector > const, std::vector >const& +%typemap("rtypecheck") std::vector >, std::vector > *, std::vector > & %{ is.list($arg) && all(sapply($arg , is.integer) || sapply($arg, is.numeric)) %} -%typemap("rtype") std::vector > "list" -%typemap("scoercein") std::vector< std::vector >, std::vector > const, std::vector >const& "$input = lapply($input, as.numeric);"; +%typemap("rtype") std::vector >, std::vector > *, std::vector > "list" +%typemap("scoercein") std::vector< std::vector >, std::vector > *, std::vector > & "$input = lapply($input, as.numeric);"; %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector >); %traits_type_name(std::vector< std::vector >); -%typemap("rtypecheck") std::vector >, std::vector > const, std::vector >const& +%typemap("rtypecheck") std::vector >, std::vector > *, std::vector > & %{ is.list($arg) && all(sapply($arg , is.integer) || sapply($arg, is.numeric)) %} -%typemap("rtype") std::vector > "list" -%typemap("scoercein") std::vector< std::vector >, std::vector > const, std::vector >const& +%typemap("rtype") std::vector >, std::vector > *, std::vector > & "list" +%typemap("scoercein") std::vector< std::vector >, std::vector > *, std::vector > & "$input = lapply($input, as.numeric);"; %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector >); %traits_type_name(std::vector< std::vector >); -%typemap("rtypecheck") std::vector >, std::vector > const, std::vector >const& +%typemap("rtypecheck") std::vector >, std::vector > *, std::vector > & %{ is.list($arg) && all(sapply($arg , is.integer) || sapply($arg, is.numeric)) %} -%typemap("rtype") std::vector > "list" -%typemap("scoercein") std::vector< std::vector >, std::vector > const, std::vector >const& "$input = lapply($input, as.logical);"; +%typemap("rtype") std::vector >, std::vector > *, std::vector > & "list" +%typemap("scoercein") std::vector< std::vector >, std::vector > *, std::vector > & "$input = lapply($input, as.logical);"; // we don't want these to be given R classes as they // have already been turned into R vectors.