Sorry if this sounds too naive (I now little about R,), but what is wrong with using the types
uint64_t, int64_t etc which are defined in the c++ standard header <cstdint>? walter. On Wed, Jul 11, 2012 at 4:34 PM, Bob Carpenter <c...@alias-i.com> wrote: > Jiqiang created a standalone example that illustrates > our problem with wrapping size_t into Rcpp on Win64. > The simple example is as follows (full running dump > from R/Rcpp below): > > size_t b = 100; > Rcpp::List lst(a); > lst["b"] = b; > return lst; > > We found this discussion: > > http://stackoverflow.com/**questions/8931123/return-wrap-** > of-size-t-in-rcpp<http://stackoverflow.com/questions/8931123/return-wrap-of-size-t-in-rcpp> > > where Romain suggests just avoiding size_t and long long > altogether. We're willing to fly in the face of all the > other advice we've ever gotten (which is to use "size_t" for > portability), but we don't know how to specify the type of > size_t in Win64 given that Romain doesn't want us to use > "size_t" or "unsigned long long". Unfortunately, "unsigned long" > is only 32 bits on Windows. > > I'm following Dirk's final comment on Stack Overflow > and "taking it to the [rcpp] list". > > How should we specify the type of size_t in > Windows 64 bit given that we can't say "size_t" or "unsigned > long long"? The only other option seems to be "unsigned __int64". > Here's the full table of types from the horse's mouth: > > > http://msdn.microsoft.com/en-**us/library/s3f49ktz(v=VS.80).**aspx<http://msdn.microsoft.com/en-us/library/s3f49ktz(v=VS.80).aspx> > > - Bob Carpenter & Jiqiang Guo > Columbia Uni., Dept. of Statistics > > > P.S. Here's the full dump: > > > library(Rcpp) > > library(inline) > > > > sessionInfo() > R version 2.15.1 (2012-06-22) > Platform: x86_64-pc-mingw32/x64 (64-bit) > > locale: > [1] LC_COLLATE=English_United States.1252 > [2] LC_CTYPE=English_United States.1252 > [3] LC_MONETARY=English_United States.1252 > [4] LC_NUMERIC=C > [5] LC_TIME=English_United States.1252 > > attached base packages: > [1] stats graphics grDevices utils datasets methods base > > other attached packages: > [1] inline_0.3.8 Rcpp_0.9.13 > > > > src <- ' > + size_t b = 100; > + Rcpp::List lst(a); > + lst["b"] = b; > + return lst; > + ' > > > > fx <- cxxfunction(signature(a = 'list'), body = src, includes = '', > + plugin = 'Rcpp', verbose = !TRUE) > In file included from C:/Program Files/R/R-2.15.1/library/Rcpp/** > include/RcppCommon.h:326:0, > from C:/Program Files/R/R-2.15.1/library/Rcpp/** > include/Rcpp.h:27, > from file8c8759b1a9b.cpp:4: > C:/Program Files/R/R-2.15.1/library/Rcpp/**include/Rcpp/internal/wrap.h: > In function 'SEXPREC* Rcpp::internal::wrap_dispatch_**unknown_iterable(const > T&, Rcpp::traits::false_type) [with T = long long unsigned int, SEXP = > SEXPREC*, Rcpp::traits::false_type = Rcpp::traits::integral_**constant<bool, > false>]': > C:/Program > Files/R/R-2.15.1/library/Rcpp/**include/Rcpp/internal/wrap.h:**638:98: > instantiated from 'SEXPREC* Rcpp::internal::wrap_dispatch_**unknown(const > T&, Rcpp::traits::false_type) [with T = long long unsigned int, SEXP = > SEXPREC*, Rcpp::traits::false_type = Rcpp::traits::integral_**constant<bool, > false>]' > C:/Program > Files/R/R-2.15.1/library/Rcpp/**include/Rcpp/internal/wrap.h:**654:96: > instantiated from 'SEXPREC* Rcpp::internal::wrap_dispatch_**eigen(const > T&, Rcpp::traits::false_type) [with T = long long unsigned int, SEXP = > SEXPREC*, Rcpp::traits::false_type = Rcpp::traits::integral_**constant<bool, > false>]' > C:/Program > Files/R/R-2.15.1/library/Rcpp/**include/Rcpp/internal/wrap.h:**669:80: > instantiated from 'SEXPREC* > Rcpp::internal::wrap_dispatch_**unknown_importable(const > T&, Rcpp::traits::false_type) [with T = long long unsigned int, SEXP = > SEXPREC*, Rcpp::traits::false_type = Rcpp::traits::integral_**constant<bool, > false>]' > C:/Program > Files/R/R-2.15.1/library/Rcpp/**include/Rcpp/internal/wrap.h:**687:99: > instantiated from 'SEXPREC* Rcpp::internal::wrap_dispatch(**const T&, > Rcpp::traits::wrap_type_**unknown_tag) [with T = long long unsigned int, > SEXP = SEXPREC*]' > C:/Program > Files/R/R-2.15.1/library/Rcpp/**include/Rcpp/internal/wrap.h:**791:104: > instantiated from 'SEXPREC* Rcpp::wrap(const T&) [with T = long long > unsigned int, SEXP = SEXPREC*]' > C:/Program > Files/R/R-2.15.1/library/Rcpp/**include/Rcpp/vector/proxy.h:**155:4: > instantiated from 'Rcpp::internal::generic_name_**proxy<RTYPE>& > Rcpp::internal::generic_name_**proxy<RTYPE>::operator=(const T&) [with T > = long long unsigned int, int RTYPE = 19, > Rcpp::internal::generic_name_**proxy<RTYPE> > = Rcpp::internal::generic_name_**proxy<19>]' > file8c8759b1a9b.cpp:33:14: instantiated from here > C:/Program > Files/R/R-2.15.1/library/Rcpp/**include/Rcpp/internal/wrap.h:**433:11: > error: invalid conversion from 'long long unsigned int' to 'SEXP' > [-fpermissive] > make: *** [file8c8759b1a9b.o] Error 1 > > ERROR(s) during compilation: source code errors or compiler configuration > errors! > > Program source: > 1: > 2: // includes from the plugin > 3: > 4: #include <Rcpp.h> > 5: > 6: > 7: #ifndef BEGIN_RCPP > 8: #define BEGIN_RCPP > 9: #endif > 10: > 11: #ifndef END_RCPP > 12: #define END_RCPP > 13: #endif > 14: > 15: using namespace Rcpp; > 16: > 17: > 18: // user includes > 19: > 20: > 21: // declarations > 22: extern "C" { > 23: SEXP file8c8759b1a9b( SEXP a) ; > 24: } > 25: > 26: // definition > 27: > 28: SEXP file8c8759b1a9b( SEXP a ){ > 29: BEGIN_RCPP > 30: > 31: size_t b = 100; > 32: Rcpp::List lst(a); > 33: lst["b"] = b; > 34: return lst; > 35: > 36: END_RCPP > 37: } > 38: > 39: > Error in compileCode(f, code, language = language, verbose = verbose) : > Compilation ERROR, function(s)/method(s) not created! In file included > from C:/Program Files/R/R-2.15.1/library/Rcpp/** > include/RcppCommon.h:326:0, > from C:/Program Files/R/R-2.15.1/library/Rcpp/** > include/Rcpp.h:27, > from file8c8759b1a9b.cpp:4: > C:/Program Files/R/R-2.15.1/library/Rcpp/**include/Rcpp/internal/wrap.h: > In function 'SEXPREC* Rcpp::internal::wrap_dispatch_**unknown_iterable(const > T&, Rcpp::traits::false_type) [with T = long long unsigned int, SEXP = > SEXPREC*, Rcpp::traits::false_type = Rcpp::traits::integral_**constant<bool, > false>]': > C:/Program > Files/R/R-2.15.1/library/Rcpp/**include/Rcpp/internal/wrap.h:**638:98: > instantiated from 'SEXPREC* Rcpp::internal::wrap_dispatch_**unknown(const > T&, Rcpp::traits::false_type) [with T = long long unsigned int, SEXP = > SEXPREC*, Rcpp::traits::false_type = Rcpp::traits::integral_**constant<bool, > false>]' > C:/Program > Files/R/R-2.15.1/library/Rcpp/**include/Rcpp/internal/wrap.h:**654:96: > instantiated from 'SEXPREC* R > Calls: cxxfunction -> compileCode > In addition: Warning message: > running command 'C:/PROGRA~1/R/R-215~1.1/bin/**x64/R CMD SHLIB > file8c8759b1a9b.cpp 2> file8c8759b1a9b.cpp.err.txt' had status 1 > Execution halted > > ______________________________**_________________ > Rcpp-devel mailing list > Rcpp-devel@lists.r-forge.r-**project.org<Rcpp-devel@lists.r-forge.r-project.org> > https://lists.r-forge.r-**project.org/cgi-bin/mailman/** > listinfo/rcpp-devel<https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel> >
_______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel