Linux ip-172-26-2-223 5.4.0-1018-aws #18-Ubuntu SMP Wed Jun 24 01:15:00 UTC 2020 x86_64
Apache
: 172.26.2.223 | : 3.144.19.6
Cant Read [ /etc/named.conf ]
8.1.13
www
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
BLACK DEFEND!
README
+ Create Folder
+ Create File
/
usr /
share /
swig4.0 /
r /
[ HOME SHELL ]
Name
Size
Permission
Action
boost_shared_ptr.i
20.88
KB
-rw-r--r--
cdata.i
30
B
-rw-r--r--
exception.i
225
B
-rw-r--r--
r.swg
6.27
KB
-rw-r--r--
rcontainer.swg
5.38
KB
-rw-r--r--
rfragments.swg
4.88
KB
-rw-r--r--
rkw.swg
682
B
-rw-r--r--
ropers.swg
939
B
-rw-r--r--
rrun.swg
8.92
KB
-rw-r--r--
rstdcommon.swg
4.96
KB
-rw-r--r--
rtype.swg
8.17
KB
-rw-r--r--
srun.swg
3.82
KB
-rw-r--r--
std_alloc.i
26
B
-rw-r--r--
std_common.i
2.22
KB
-rw-r--r--
std_container.i
57
B
-rw-r--r--
std_deque.i
25
B
-rw-r--r--
std_except.i
35
B
-rw-r--r--
std_list.i
167
B
-rw-r--r--
std_map.i
67
B
-rw-r--r--
std_pair.i
68
B
-rw-r--r--
std_shared_ptr.i
68
B
-rw-r--r--
std_string.i
35
B
-rw-r--r--
std_vector.i
37.91
KB
-rw-r--r--
stl.i
270
B
-rw-r--r--
typemaps.i
33
B
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : std_vector.i
// R specific swig components /* Vectors */ %fragment("StdVectorTraits","header",fragment="StdSequenceTraits") %{ namespace swig { // vectors of doubles template <> struct traits_from_ptr<std::vector<double> > { static SEXP from (std::vector<double > *val, int owner = 0) { SEXP result; PROTECT(result = Rf_allocVector(REALSXP, val->size())); for (unsigned pos = 0; pos < val->size(); pos++) { NUMERIC_POINTER(result)[pos] = ((*val)[pos]); } UNPROTECT(1); return(result); } }; // vectors of floats template <> struct traits_from_ptr<std::vector<float> > { static SEXP from (std::vector<float > *val, int owner = 0) { SEXP result; PROTECT(result = Rf_allocVector(REALSXP, val->size())); for (unsigned pos = 0; pos < val->size(); pos++) { NUMERIC_POINTER(result)[pos] = ((*val)[pos]); } UNPROTECT(1); return(result); } }; // vectors of unsigned 8bit int template <> struct traits_from_ptr<std::vector<unsigned char> > { static SEXP from (std::vector<unsigned char > *val, int owner = 0) { SEXP result; PROTECT(result = Rf_allocVector(INTSXP, val->size())); for (unsigned pos = 0; pos < val->size(); pos++) { INTEGER_POINTER(result)[pos] = ((*val)[pos]); } UNPROTECT(1); return(result); } }; // vectors of 8bit int template <> struct traits_from_ptr<std::vector<signed char> > { static SEXP from (std::vector<signed char > *val, int owner = 0) { SEXP result; PROTECT(result = Rf_allocVector(INTSXP, val->size())); for (unsigned pos = 0; pos < val->size(); pos++) { INTEGER_POINTER(result)[pos] = ((*val)[pos]); } UNPROTECT(1); return(result); } }; // vectors of unsigned 16bit int template <> struct traits_from_ptr<std::vector<unsigned short int> > { static SEXP from (std::vector<unsigned short int > *val, int owner = 0) { SEXP result; PROTECT(result = Rf_allocVector(INTSXP, val->size())); for (unsigned pos = 0; pos < val->size(); pos++) { INTEGER_POINTER(result)[pos] = ((*val)[pos]); } UNPROTECT(1); return(result); } }; // vectors of 16bit int template <> struct traits_from_ptr<std::vector<short int> > { static SEXP from (std::vector<short int > *val, int owner = 0) { SEXP result; PROTECT(result = Rf_allocVector(INTSXP, val->size())); for (unsigned pos = 0; pos < val->size(); pos++) { INTEGER_POINTER(result)[pos] = ((*val)[pos]); } UNPROTECT(1); return(result); } }; // vectors of 32 bit unsigned int template <> struct traits_from_ptr<std::vector<unsigned int> > { static SEXP from (std::vector<unsigned int> *val, int owner = 0) { SEXP result; PROTECT(result = Rf_allocVector(INTSXP, val->size())); for (unsigned pos = 0; pos < val->size(); pos++) { INTEGER_POINTER(result)[pos] = ((*val)[pos]); } UNPROTECT(1); return(result); } }; // vectors of 32bit int template <> struct traits_from_ptr<std::vector<int> > { static SEXP from (std::vector<int > *val, int owner = 0) { SEXP result; PROTECT(result = Rf_allocVector(INTSXP, val->size())); for (unsigned pos = 0; pos < val->size(); pos++) { INTEGER_POINTER(result)[pos] = ((*val)[pos]); } UNPROTECT(1); return(result); } }; // vectors of 64 bit unsigned int #if defined(SWIGWORDSIZE64) template <> struct traits_from_ptr<std::vector<unsigned long int> > { static SEXP from (std::vector<unsigned long int> *val, int owner = 0) { SEXP result; PROTECT(result = Rf_allocVector(INTSXP, val->size())); for (unsigned pos = 0; pos < val->size(); pos++) { INTEGER_POINTER(result)[pos] = ((*val)[pos]); } UNPROTECT(1); return(result); } }; // vectors of 64 bit int template <> struct traits_from_ptr<std::vector<long int> > { static SEXP from (std::vector<long int> *val, int owner = 0) { SEXP result; PROTECT(result = Rf_allocVector(INTSXP, val->size())); for (unsigned pos = 0; pos < val->size(); pos++) { INTEGER_POINTER(result)[pos] = ((*val)[pos]); } UNPROTECT(1); return(result); } }; #else template <> struct traits_from_ptr<std::vector<unsigned long long int> > { static SEXP from (std::vector<unsigned long long int> *val, int owner = 0) { SEXP result; PROTECT(result = Rf_allocVector(INTSXP, val->size())); for (unsigned pos = 0; pos < val->size(); pos++) { INTEGER_POINTER(result)[pos] = ((*val)[pos]); } UNPROTECT(1); return(result); } }; // vectors of 64 bit int template <> struct traits_from_ptr<std::vector<long long int> > { static SEXP from (std::vector<long long int> *val, int owner = 0) { SEXP result; PROTECT(result = Rf_allocVector(INTSXP, val->size())); for (unsigned pos = 0; pos < val->size(); pos++) { INTEGER_POINTER(result)[pos] = ((*val)[pos]); } UNPROTECT(1); return(result); } }; #endif // vectors of bool template <> struct traits_from_ptr<std::vector<bool> > { static SEXP from (std::vector<bool> *val, int owner = 0) { SEXP result; PROTECT(result = Rf_allocVector(LGLSXP, val->size())); for (unsigned pos = 0; pos < val->size(); pos++) { LOGICAL_POINTER(result)[pos] = ((*val)[pos]); } UNPROTECT(1); return(result); } }; // vectors of strings template <> struct traits_from_ptr<std::vector<std::basic_string<char> > > { static SEXP from (std::vector<std::basic_string<char> > *val, int owner = 0) { SEXP result; PROTECT(result = Rf_allocVector(STRSXP, val->size())); for (unsigned pos = 0; pos < val->size(); pos++) { CHARACTER_POINTER(result)[pos] = Rf_mkChar(((*val)[pos]).c_str()); } UNPROTECT(1); return(result); } }; // catch all that does everything with vectors template <typename T> struct traits_from_ptr< std::vector< T > > { static SEXP from (std::vector< T > *val, int owner = 0) { return SWIG_R_NewPointerObj(val, type_info< std::vector< T > >(), owner); } }; ///////////////////////////////////////////////// template <> struct traits_asptr < std::vector<double> > { static int asptr(SEXP obj, std::vector<double> **val) { std::vector<double> *p; // not sure how to check the size of the SEXP obj is correct unsigned int sexpsz = Rf_length(obj); p = new std::vector<double>(sexpsz); double *S = NUMERIC_POINTER(obj); for (unsigned pos = 0; pos < p->size(); pos++) { (*p)[pos] = static_cast<double>(S[pos]); } int res = SWIG_OK; if (SWIG_IsOK(res)) { if (val) *val = p; } return res; } }; template <> struct traits_asptr < std::vector<float> > { static int asptr(SEXP obj, std::vector<float> **val) { std::vector<float> *p; // not sure how to check the size of the SEXP obj is correct unsigned int sexpsz = Rf_length(obj); p = new std::vector<float>(sexpsz); double *S = NUMERIC_POINTER(obj); for (unsigned pos = 0; pos < p->size(); pos++) { (*p)[pos] = static_cast<double>(S[pos]); } int res = SWIG_OK; if (SWIG_IsOK(res)) { if (val) *val = p; } return res; } }; // 8 bit integer types template <> struct traits_asptr < std::vector<unsigned char> > { static int asptr(SEXP obj, std::vector<unsigned char> **val) { std::vector<unsigned char> *p; unsigned int sexpsz = Rf_length(obj); p = new std::vector<unsigned char>(sexpsz); SEXP coerced; PROTECT(coerced = Rf_coerceVector(obj, INTSXP)); int *S = INTEGER_POINTER(coerced); for (unsigned pos = 0; pos < p->size(); pos++) { (*p)[pos] = static_cast<unsigned char>(S[pos]); } int res = SWIG_OK; if (SWIG_IsOK(res)) { if (val) *val = p; } UNPROTECT(1); return res; } }; template <> struct traits_asptr < std::vector<signed char> > { static int asptr(SEXP obj, std::vector<signed char> **val) { std::vector<signed char> *p; // not sure how to check the size of the SEXP obj is correct int sexpsz = Rf_length(obj); p = new std::vector<signed char>(sexpsz); SEXP coerced; PROTECT(coerced = Rf_coerceVector(obj, INTSXP)); int *S = INTEGER_POINTER(coerced); for (unsigned pos = 0; pos < p->size(); pos++) { (*p)[pos] = static_cast<signed char>(S[pos]); } int res = SWIG_OK; if (SWIG_IsOK(res)) { if (val) *val = p; } UNPROTECT(1); return res; } }; // 16 bit integer types template <> struct traits_asptr < std::vector<unsigned short int> > { static int asptr(SEXP obj, std::vector<unsigned short int> **val) { std::vector<unsigned short int> *p; unsigned int sexpsz = Rf_length(obj); p = new std::vector<unsigned short int>(sexpsz); SEXP coerced; PROTECT(coerced = Rf_coerceVector(obj, INTSXP)); int *S = INTEGER_POINTER(coerced); for (unsigned pos = 0; pos < p->size(); pos++) { (*p)[pos] = static_cast<unsigned short int>(S[pos]); } int res = SWIG_OK; if (SWIG_IsOK(res)) { if (val) *val = p; } UNPROTECT(1); return res; } }; template <> struct traits_asptr < std::vector<short int> > { static int asptr(SEXP obj, std::vector<short int> **val) { std::vector<short int> *p; // not sure how to check the size of the SEXP obj is correct int sexpsz = Rf_length(obj); p = new std::vector<short int>(sexpsz); SEXP coerced; PROTECT(coerced = Rf_coerceVector(obj, INTSXP)); int *S = INTEGER_POINTER(coerced); for (unsigned pos = 0; pos < p->size(); pos++) { (*p)[pos] = static_cast<short int>(S[pos]); } int res = SWIG_OK; if (SWIG_IsOK(res)) { if (val) *val = p; } UNPROTECT(1); return res; } }; // 32 bit integer types template <> struct traits_asptr < std::vector<unsigned int> > { static int asptr(SEXP obj, std::vector<unsigned int> **val) { std::vector<unsigned int> *p; unsigned int sexpsz = Rf_length(obj); p = new std::vector<unsigned int>(sexpsz); SEXP coerced; PROTECT(coerced = Rf_coerceVector(obj, INTSXP)); int *S = INTEGER_POINTER(coerced); for (unsigned pos = 0; pos < p->size(); pos++) { (*p)[pos] = static_cast<unsigned int>(S[pos]); } int res = SWIG_OK; if (SWIG_IsOK(res)) { if (val) *val = p; } UNPROTECT(1); return res; } }; template <> struct traits_asptr < std::vector<int> > { static int asptr(SEXP obj, std::vector<int> **val) { std::vector<int> *p; // not sure how to check the size of the SEXP obj is correct int sexpsz = Rf_length(obj); p = new std::vector<int>(sexpsz); SEXP coerced; PROTECT(coerced = Rf_coerceVector(obj, INTSXP)); int *S = INTEGER_POINTER(coerced); for (unsigned pos = 0; pos < p->size(); pos++) { (*p)[pos] = static_cast<int>(S[pos]); } int res = SWIG_OK; if (SWIG_IsOK(res)) { if (val) *val = p; } UNPROTECT(1); return res; } }; #if defined(SWIGWORDSIZE64) // 64 bit integer types template <> struct traits_asptr < std::vector<unsigned long int> > { static int asptr(SEXP obj, std::vector<unsigned long int> **val) { std::vector<unsigned long int> *p; unsigned int sexpsz = Rf_length(obj); p = new std::vector<unsigned long int>(sexpsz); SEXP coerced; PROTECT(coerced = Rf_coerceVector(obj, INTSXP)); int *S = INTEGER_POINTER(coerced); for (unsigned pos = 0; pos < p->size(); pos++) { (*p)[pos] = static_cast<unsigned long int>(S[pos]); } int res = SWIG_OK; if (SWIG_IsOK(res)) { if (val) *val = p; } UNPROTECT(1); return res; } }; template <> struct traits_asptr < std::vector<long int> > { static int asptr(SEXP obj, std::vector<long int> **val) { std::vector<long int> *p; // not sure how to check the size of the SEXP obj is correct int sexpsz = Rf_length(obj); p = new std::vector<long int>(sexpsz); SEXP coerced; PROTECT(coerced = Rf_coerceVector(obj, INTSXP)); int *S = INTEGER_POINTER(coerced); for (unsigned pos = 0; pos < p->size(); pos++) { (*p)[pos] = static_cast<long int>(S[pos]); } int res = SWIG_OK; if (SWIG_IsOK(res)) { if (val) *val = p; } UNPROTECT(1); return res; } }; #else // 64 bit integer types template <> struct traits_asptr < std::vector<unsigned long long int> > { static int asptr(SEXP obj, std::vector<unsigned long long int> **val) { std::vector<unsigned long long int> *p; unsigned int sexpsz = Rf_length(obj); p = new std::vector<unsigned long long int>(sexpsz); SEXP coerced; PROTECT(coerced = Rf_coerceVector(obj, INTSXP)); int *S = INTEGER_POINTER(coerced); for (unsigned pos = 0; pos < p->size(); pos++) { (*p)[pos] = static_cast<unsigned long long int>(S[pos]); } int res = SWIG_OK; if (SWIG_IsOK(res)) { if (val) *val = p; } UNPROTECT(1); return res; } }; template <> struct traits_asptr < std::vector<long long int> > { static int asptr(SEXP obj, std::vector<long long int> **val) { std::vector<long long int> *p; // not sure how to check the size of the SEXP obj is correct int sexpsz = Rf_length(obj); p = new std::vector<long long int>(sexpsz); SEXP coerced; PROTECT(coerced = Rf_coerceVector(obj, INTSXP)); int *S = INTEGER_POINTER(coerced); for (unsigned pos = 0; pos < p->size(); pos++) { (*p)[pos] = static_cast<long long int>(S[pos]); } int res = SWIG_OK; if (SWIG_IsOK(res)) { if (val) *val = p; } UNPROTECT(1); return res; } }; #endif template <> struct traits_asptr < std::vector<bool> > { static int asptr(SEXP obj, std::vector<bool> **val) { std::vector<bool> *p; // not sure how to check the size of the SEXP obj is correct int sexpsz = Rf_length(obj); p = new std::vector<bool>(sexpsz); SEXP coerced; PROTECT(coerced = Rf_coerceVector(obj, LGLSXP)); int *S = LOGICAL_POINTER(coerced); for (unsigned pos = 0; pos < p->size(); pos++) { (*p)[pos] = static_cast<bool>(S[pos]); } int res = SWIG_OK; if (SWIG_IsOK(res)) { if (val) *val = p; } UNPROTECT(1); return res; } }; template <> struct traits_asptr < std::vector<std::basic_string<char> > > { static int asptr(SEXP obj, std::vector<std::basic_string<char> > **val) { std::vector<std::basic_string<char> > *p; // R character vectors are STRSXP containing CHARSXP // access a CHARSXP using STRING_ELT int sexpsz = Rf_length(obj); p = new std::vector<std::basic_string<char> >(sexpsz); SEXP coerced; PROTECT(coerced = Rf_coerceVector(obj, STRSXP)); //SEXP *S = CHARACTER_POINTER(coerced); for (unsigned pos = 0; pos < p->size(); pos++) { const char * thecstring = CHAR(STRING_ELT(coerced, pos)); (*p)[pos] = std::basic_string<char>(thecstring); } int res = SWIG_OK; if (SWIG_IsOK(res)) { if (val) *val = p; } UNPROTECT(1); return res; } }; // catchall for R to vector conversion template <typename T> struct traits_asptr < std::vector<T> > { static int asptr(SEXP obj, std::vector<T> **val) { std::vector<T> *p; int res = SWIG_R_ConvertPtr(obj, (void**)&p, type_info< std::vector<T> >(), 0); if (SWIG_IsOK(res)) { if (val) *val = p; } return res; } }; // now for vectors of vectors. These will be represented as lists of vectors on the // catch all that does everything with vectors template <> struct traits_from_ptr<std::vector<std::vector<unsigned int> > > { static SEXP from (std::vector< std::vector<unsigned int> > *val, int owner = 0) { SEXP result; // allocate the R list PROTECT(result = Rf_allocVector(VECSXP, val->size())); for (unsigned pos = 0; pos < val->size(); pos++) { // allocate the R vector SET_VECTOR_ELT(result, pos, Rf_allocVector(INTSXP, val->at(pos).size())); // Fill the R vector for (unsigned vpos = 0; vpos < val->at(pos).size(); ++vpos) { INTEGER_POINTER(VECTOR_ELT(result, pos))[vpos] = static_cast<int>(val->at(pos).at(vpos)); } } UNPROTECT(1); return(result); } }; template <> struct traits_from_ptr<std::vector<std::vector<int> > > { static SEXP from (std::vector< std::vector<int > > *val, int owner = 0) { SEXP result; // allocate the R list PROTECT(result = Rf_allocVector(VECSXP, val->size())); for (unsigned pos = 0; pos < val->size(); pos++) { // allocate the R vector SET_VECTOR_ELT(result, pos, Rf_allocVector(INTSXP, val->at(pos).size())); // Fill the R vector for (unsigned vpos = 0; vpos < val->at(pos).size(); ++vpos) { INTEGER_POINTER(VECTOR_ELT(result, pos))[vpos] = static_cast<int>(val->at(pos).at(vpos)); } } UNPROTECT(1); return(result); } }; template <> struct traits_from_ptr<std::vector<std::vector<float> > > { static SEXP from (std::vector< std::vector<float > > *val, int owner = 0) { SEXP result; // allocate the R list PROTECT(result = Rf_allocVector(VECSXP, val->size())); for (unsigned pos = 0; pos < val->size(); pos++) { // allocate the R vector SET_VECTOR_ELT(result, pos, Rf_allocVector(REALSXP, val->at(pos).size())); // Fill the R vector for (unsigned vpos = 0; vpos < val->at(pos).size(); ++vpos) { NUMERIC_POINTER(VECTOR_ELT(result, pos))[vpos] = static_cast<double>(val->at(pos).at(vpos)); } } UNPROTECT(1); return(result); } }; template <> struct traits_from_ptr<std::vector<std::vector<double> > > { static SEXP from (std::vector< std::vector<double > > *val, int owner = 0) { SEXP result; // allocate the R list PROTECT(result = Rf_allocVector(VECSXP, val->size())); for (unsigned pos = 0; pos < val->size(); pos++) { // allocate the R vector SET_VECTOR_ELT(result, pos, Rf_allocVector(REALSXP, val->at(pos).size())); // Fill the R vector for (unsigned vpos = 0; vpos < val->at(pos).size(); ++vpos) { NUMERIC_POINTER(VECTOR_ELT(result, pos))[vpos] = static_cast<double>(val->at(pos).at(vpos)); } } UNPROTECT(1); return(result); } }; template <> struct traits_from_ptr<std::vector<std::vector<bool> > > { static SEXP from (std::vector< std::vector<bool> > *val, int owner = 0) { SEXP result; // allocate the R list PROTECT(result = Rf_allocVector(VECSXP, val->size())); for (unsigned pos = 0; pos < val->size(); pos++) { // allocate the R vector SET_VECTOR_ELT(result, pos, Rf_allocVector(LGLSXP, val->at(pos).size())); // Fill the R vector for (unsigned vpos = 0; vpos < val->at(pos).size(); ++vpos) { LOGICAL_POINTER(VECTOR_ELT(result, pos))[vpos] = (val->at(pos).at(vpos)); } } UNPROTECT(1); return(result); } }; template <typename T> struct traits_from_ptr< std::vector < std::vector< T > > > { static SEXP from (std::vector < std::vector< T > > *val, int owner = 0) { return SWIG_R_NewPointerObj(val, type_info< std::vector < std::vector< T > > >(), owner); } }; ///////////////////////////////////////////////////////////////// // R side template <> struct traits_asptr < std::vector< std::vector<unsigned int> > > { static int asptr(SEXP obj, std::vector< std::vector<unsigned int> > **val) { std::vector <std::vector<unsigned int> > *p; // this is the length of the list unsigned int sexpsz = Rf_length(obj); p = new std::vector< std::vector<unsigned int> > (sexpsz); for (unsigned listpos = 0; listpos < sexpsz; ++listpos) { unsigned vecsize = Rf_length(VECTOR_ELT(obj, listpos)); for (unsigned vpos = 0; vpos < vecsize; ++vpos) { (*p)[listpos].push_back(static_cast<int>(INTEGER_POINTER(VECTOR_ELT(obj, listpos))[vpos])); } } int res = SWIG_OK; if (SWIG_IsOK(res)) { if (val) *val = p; } return res; } }; template <> struct traits_asptr < std::vector< std::vector< int> > > { static int asptr(SEXP obj, std::vector< std::vector< int> > **val) { std::vector <std::vector< int> > *p; // this is the length of the list unsigned int sexpsz = Rf_length(obj); p = new std::vector< std::vector< int> > (sexpsz); for (unsigned listpos = 0; listpos < sexpsz; ++listpos) { unsigned vecsize = Rf_length(VECTOR_ELT(obj, listpos)); for (unsigned vpos = 0; vpos < vecsize; ++vpos) { (*p)[listpos].push_back(static_cast<int>(INTEGER_POINTER(VECTOR_ELT(obj, listpos))[vpos])); } } int res = SWIG_OK; if (SWIG_IsOK(res)) { if (val) *val = p; } return res; } }; template <> struct traits_asptr < std::vector< std::vector< float> > > { static int asptr(SEXP obj, std::vector< std::vector< float> > **val) { std::vector <std::vector< float> > *p; // this is the length of the list unsigned int sexpsz = Rf_length(obj); p = new std::vector< std::vector< float> > (sexpsz); for (unsigned listpos = 0; listpos < sexpsz; ++listpos) { unsigned vecsize = Rf_length(VECTOR_ELT(obj, listpos)); for (unsigned vpos = 0; vpos < vecsize; ++vpos) { (*p)[listpos].push_back(static_cast<float>(NUMERIC_POINTER(VECTOR_ELT(obj, listpos))[vpos])); } } int res = SWIG_OK; if (SWIG_IsOK(res)) { if (val) *val = p; } return res; } }; template <> struct traits_asptr < std::vector< std::vector< double> > > { static int asptr(SEXP obj, std::vector< std::vector< double> > **val) { std::vector <std::vector< double> > *p; // this is the length of the list unsigned int sexpsz = Rf_length(obj); p = new std::vector< std::vector< double> > (sexpsz); for (unsigned listpos = 0; listpos < sexpsz; ++listpos) { unsigned vecsize = Rf_length(VECTOR_ELT(obj, listpos)); for (unsigned vpos = 0; vpos < vecsize; ++vpos) { (*p)[listpos].push_back(static_cast<double>(NUMERIC_POINTER(VECTOR_ELT(obj, listpos))[vpos])); } } int res = SWIG_OK; if (SWIG_IsOK(res)) { if (val) *val = p; } return res; } }; template <> struct traits_asptr < std::vector< std::vector< bool > > > { static int asptr(SEXP obj, std::vector< std::vector< bool> > **val) { std::vector <std::vector< bool > > *p; // this is the length of the list unsigned int sexpsz = Rf_length(obj); p = new std::vector< std::vector< bool > > (sexpsz); for (unsigned listpos = 0; listpos < sexpsz; ++listpos) { unsigned vecsize = Rf_length(VECTOR_ELT(obj, listpos)); for (unsigned vpos = 0; vpos < vecsize; ++vpos) { (*p)[listpos].push_back(static_cast<bool>(LOGICAL_POINTER(VECTOR_ELT(obj, listpos))[vpos])); } } int res = SWIG_OK; if (SWIG_IsOK(res)) { if (val) *val = p; } return res; } }; // catchall template <typename T> struct traits_asptr < std::vector< std::vector<T> > > { static int asptr(SEXP obj, std::vector< std::vector<T> > **val) { std::vector< std::vector<T> > *p; Rprintf("vector of vectors - unsupported content\n"); int res = SWIG_R_ConvertPtr(obj, (void**)&p, type_info< std::vector< std::vector<T> > > (), 0); if (SWIG_IsOK(res)) { if (val) *val = p; } return res; } }; } %} #define %swig_vector_methods(Type...) %swig_sequence_methods(Type) #define %swig_vector_methods_val(Type...) %swig_sequence_methods_val(Type); %define %traits_type_name(Type...) %fragment(SWIG_Traits_frag(Type), "header", fragment="StdTraits",fragment="StdVectorTraits") { namespace swig { template <> struct traits< Type > { typedef pointer_category category; static const char* type_name() { return #Type; } }; } } %enddef %include <std/std_vector.i> %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector<double>) %traits_type_name(std::vector<double>) %typemap("rtypecheck") std::vector<double>, std::vector<double> *, std::vector<double> & %{ is.numeric($arg) %} %typemap("rtype") std::vector<double> "numeric" %typemap("scoercein") std::vector<double>, std::vector<double> *, std::vector<double> & "$input = as.numeric($input);"; %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector<float>) %traits_type_name(std::vector<float>) // reuse these for float %typemap("rtype") std::vector<float>, std::vector<float> *, std::vector<float> & = std::vector<double>; %typemap("rtypecheck") std::vector<float>, std::vector<float> *, std::vector<float> & = std::vector<double>; %typemap("scoercein") std::vector<float>, std::vector<float> *, std::vector<float> & = std::vector<double>; %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector<bool>); %traits_type_name(std::vector<bool>); %typemap("rtypecheck") std::vector<bool>, std::vector<bool> *, std::vector<bool> & %{ is.logical($arg) %} %typemap("rtype") std::vector<bool> "logical" %typemap("scoercein") std::vector<bool> , std::vector<bool> & "$input = as.logical($input);"; %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector<int>); %traits_type_name(std::vector<int>); %typemap("rtypecheck") std::vector<int>, std::vector<int> *, std::vector<int> & %{ is.integer($arg) || is.numeric($arg) %} %typemap("rtype") std::vector<int> "integer" %typemap("scoercein") std::vector<int> , std::vector<int> *, std::vector<int> & "$input = as.integer($input);"; // strings %typemap("rtype") std::vector< std::basic_string<char> >, std::vector< std::basic_string<char> > *, std::vector< std::basic_string<char> > & "character" %typemap("rtypecheck") std::vector< std::basic_string<char> >, std::vector< std::basic_string<char> > *, std::vector< std::basic_string<char> > & %{ is.character($arg) %} %typemap("scoercein") std::vector< std::basic_string<char> >, std::vector< std::basic_string<char> > *, std::vector< std::basic_string<char> > & "$input = as.character($input);"; %typemap("scoerceout") std::vector< std::basic_string<char> >, std::vector< std::basic_string<char> > *, std::vector< std::basic_string<char> > & %{ %} %apply std::vector< std::basic_string<char> > { std::vector< std::string> }; // all the related integer vectors // signed %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector<signed char>); %traits_type_name(std::vector<signed char>); %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector<signed short>); %traits_type_name(std::vector<signed short>); #if defined(SWIGWORDSIZE64) %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector<long int>); %traits_type_name(std::vector<long int>); #else %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector<long long int>); %traits_type_name(std::vector<long long int>); #endif // unsigned %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector<unsigned char>); %traits_type_name(std::vector<unsigned char>); %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector<unsigned short>); %traits_type_name(std::vector<unsigned short>); %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector<unsigned int>); %traits_type_name(std::vector<unsigned int>); #if defined(SWIGWORDSIZE64) %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector<unsigned long int>); %traits_type_name(std::vector<unsigned long int>); #else %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector<unsigned long long int>); %traits_type_name(std::vector<unsigned long long int>); #endif // These R side typemaps are common for integer types // 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<signed char>, std::vector<signed char> *, std::vector<signed char> & = std::vector<int>; %typemap("rtype") std::vector<signed short>, std::vector<signed short> *, std::vector<signed short> & = std::vector<int>; %typemap("rtype") std::vector<unsigned char>, std::vector<unsigned char> *, std::vector<unsigned char> & = std::vector<int>; %typemap("rtype") std::vector<unsigned int>, std::vector<unsigned int> *, std::vector<unsigned int> & = std::vector<int>; #if defined(SWIGWORDSIZE64) %typemap("rtype") std::vector<long int>, std::vector<long int> *, std::vector<long int> & = std::vector<int>; %typemap("rtype") std::vector<unsigned long int>, std::vector<unsigned long int> *, std::vector<unsigned long int> & = std::vector<int>; #else %typemap("rtype") std::vector<long long int>, std::vector<long long int> *, std::vector<long long int> & = std::vector<int>; %typemap("rtype") std::vector<unsigned long long int>, std::vector<unsigned long long int> *, std::vector<unsigned long long int> & = std::vector<int>; #endif %typemap("scoercein") std::vector<signed char>, std::vector<signed char> *, std::vector<signed char> & = std::vector<int>; %typemap("scoercein") std::vector<signed short>, std::vector<signed short> *, std::vector<signed short> & = std::vector<int>; %typemap("scoercein") std::vector<unsigned char>, std::vector<unsigned char> *, std::vector<unsigned char> & = std::vector<int>; %typemap("scoercein") std::vector<unsigned int>, std::vector<unsigned int> *, std::vector<unsigned int> & = std::vector<int>; #if defined(SWIGWORDSIZE64) %typemap("scoercein") std::vector<long int>, std::vector<long int> *, std::vector<long int> & = std::vector<int>; %typemap("scoercein") std::vector<unsigned long int>, std::vector<unsigned long int> *, std::vector<unsigned long int> & = std::vector<int>; #else %typemap("scoercein") std::vector<long long int>, std::vector<long long int> *, std::vector<long long int> & = std::vector<int>; %typemap("scoercein") std::vector<unsigned long long int>, std::vector<unsigned long long int> *, std::vector<unsigned long long int> & = std::vector<int>; #endif %typemap("rtypecheck") std::vector<signed char>, std::vector<signed char> *, std::vector<signed char> & = std::vector<int>; %typemap("rtypecheck") std::vector<signed short>, std::vector<signed short> *, std::vector<signed short> & = std::vector<int>; %typemap("rtypecheck") std::vector<unsigned char>, std::vector<unsigned char> *, std::vector<unsigned char> & = std::vector<int>; %typemap("rtypecheck") std::vector<unsigned int>, std::vector<unsigned int> *, std::vector<unsigned int> & = std::vector<int>; #if defined(SWIGWORDSIZE64) %typemap("rtypecheck") std::vector<long int>, std::vector<long int> *, std::vector<long int> & = std::vector<int>; %typemap("rtypecheck") std::vector<unsigned long int>, std::vector<unsigned long int> *, std::vector<unsigned long int> & = std::vector<int>; #else %typemap("rtypecheck") std::vector<long long int>, std::vector<long long int> *, std::vector<long long int> & = std::vector<int>; %typemap("rtypecheck") std::vector<unsigned long long int>, std::vector<unsigned long long int> *, std::vector<unsigned long long int> & = std::vector<int>; #endif /////////////////////////////////////////////////////////////// %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector<std::vector<int> >); %traits_type_name(std::vector< std::vector<int> >); %typemap("rtypecheck") std::vector<std::vector<int> >, std::vector<std::vector<int> > *, std::vector<std::vector<int> > & %{ is.list($arg) && all(sapply($arg , is.integer) || sapply($arg, is.numeric)) %} %typemap("rtype") std::vector<std::vector<int> >, std::vector<std::vector<int> > *, std::vector<std::vector<int> > & "list" %typemap("scoercein") std::vector< std::vector<int> >, std::vector<std::vector<int> > *, std::vector<std::vector<int> > & "$input = lapply($input, as.integer);"; %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector<std::vector<unsigned int> >); %traits_type_name(std::vector< std::vector<unsigned int> >); %typemap("rtypecheck") std::vector<std::vector<unsigned int> >, std::vector<std::vector<unsigned int> > *, std::vector<std::vector<unsigned int> > & %{ is.list($arg) && all(sapply($arg , is.integer) || sapply($arg, is.numeric)) %} %typemap("rtype") std::vector<std::vector<unsigned int> >, std::vector<std::vector<unsigned int> > *, std::vector<std::vector<unsigned int> > & "list" %typemap("scoercein") std::vector< std::vector<unsigned int> >, std::vector<std::vector<int> > *, std::vector<std::vector<unsigned int> > & "$input = lapply($input, as.integer);"; %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector<std::vector<float> >); %traits_type_name(std::vector< std::vector<float> >); %typemap("rtypecheck") std::vector<std::vector<float> >, std::vector<std::vector<float> > *, std::vector<std::vector<float> > & %{ is.list($arg) && all(sapply($arg , is.integer) || sapply($arg, is.numeric)) %} %typemap("rtype") std::vector<std::vector<float> >, std::vector<std::vector<float> > *, std::vector<std::vector<float> > "list" %typemap("scoercein") std::vector< std::vector<float> >, std::vector<std::vector<float> > *, std::vector<std::vector<float> > & "$input = lapply($input, as.numeric);"; %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector<std::vector<double> >); %traits_type_name(std::vector< std::vector<double> >); %typemap("rtypecheck") std::vector<std::vector<double> >, std::vector<std::vector<double> > *, std::vector<std::vector<double> > & %{ is.list($arg) && all(sapply($arg , is.integer) || sapply($arg, is.numeric)) %} %typemap("rtype") std::vector<std::vector<double> >, std::vector<std::vector<double> > *, std::vector<std::vector<double> > & "list" %typemap("scoercein") std::vector< std::vector<double> >, std::vector<std::vector<double> > *, std::vector<std::vector<double> > & "$input = lapply($input, as.numeric);"; %typemap_traits_ptr(SWIG_TYPECHECK_VECTOR, std::vector<std::vector<bool> >); %traits_type_name(std::vector< std::vector<bool> >); %typemap("rtypecheck") std::vector<std::vector<bool> >, std::vector<std::vector<bool> > *, std::vector<std::vector<bool> > & %{ is.list($arg) && all(sapply($arg , is.integer) || sapply($arg, is.numeric)) %} %typemap("rtype") std::vector<std::vector<bool> >, std::vector<std::vector<bool> > *, std::vector<std::vector<bool> > & "list" %typemap("scoercein") std::vector< std::vector<bool> >, std::vector<std::vector<bool> > *, std::vector<std::vector<bool> > & "$input = lapply($input, as.logical);"; // we don't want these to be given R classes as they // have already been turned into R vectors. %typemap(scoerceout) std::vector<double>, std::vector<double>*, std::vector<double>&, std::vector<float> , std::vector<float>*, std::vector<float> , std::vector<signed char>, std::vector<signed char>*, std::vector<signed char>&, std::vector<signed short>, std::vector<signed short>*, std::vector<signed short>&, std::vector<int>, std::vector<int>*, std::vector<int>&, std::vector<unsigned char>, std::vector<unsigned char>*, std::vector<unsigned char>&, std::vector<unsigned short>, std::vector<unsigned short>*, std::vector<unsigned short>&, std::vector<unsigned int>, std::vector<unsigned int>*, std::vector<unsigned int>&, std::vector<bool>, std::vector<bool>*, std::vector<bool>&, // vectors of vectors std::vector< std::vector<unsigned int> >, std::vector< std::vector<unsigned int> >*, std::vector< std::vector<unsigned int> >&, std::vector< std::vector<int> >, std::vector< std::vector<int> >*, std::vector< std::vector<int> >&, std::vector< std::vector<float> >, std::vector< std::vector<float> >*, std::vector< std::vector<float> >&, std::vector< std::vector<double> >, std::vector< std::vector<double> >*, std::vector< std::vector<double> >&, std::vector< std::vector<bool> >, std::vector< std::vector<bool> >*, std::vector< std::vector<bool> >& %{ %} #if defined(SWIGWORDSIZE64) %typemap(scoerceout) std::vector<long int>, std::vector<long int>*, std::vector<long int>&, std::vector<unsigned long int>, std::vector<unsigned long int>*, std::vector<unsigned long int>& %{ %} #else %typemap(scoerceout) std::vector<long long int>, std::vector<long long int>*, std::vector<long long int>&, std::vector<unsigned long long int>, std::vector<unsigned long long int>*, std::vector<unsigned long long int>& %{ %} #endif
Close