Hello,

while extending Rcpp with my C++ classes, I received hundreds of " 'wrap' is not a template function" and " 'as' is not a template function" errors when compiling. Beside this, I get an impressive list of errors referring to RcppGSL files.

The library from which my classes come from makes use GSL (on C++ side), thus I link RcppGSL to my package.

Here is my extending for one class:
#ifndef SAMDATA_HPP_
#define SAMDATA_HPP_

class SamData;

#include <RcppCommon.h>

namespace Rcpp {
    template<> SEXP wrap(const SamData &s);
    template<> SamData as( SEXP s ) ;
}

#include <Rcpp.h>

#include "common.hpp"

class SamData {

    // class implementation
};

namespace Rcpp {

template<> SEXP wrap(const SamData &s) {
   return Rcpp::List::create( Rcpp::Named("Chr1") = s.getChr1(),
                              Rcpp::Named("Chr2") = s.getChr2(),
                              Rcpp::Named("Seq1") = s.getSeq(),
                              Rcpp::Named("HS1")  = s.getHS1(),
                              Rcpp::Named("HS2")  = s.getHS2(),
                              Rcpp::Named("Id")   = s.getId(),
                              Rcpp::Named("Start1") = s.getStart1(),
                              Rcpp::Named("Start2") = s.getStart2() );
}

template <> SamData as( SEXP s ) {
    Rcpp::List samL(s);
    SamData sam;
    sam.setChr1( Rcpp::as<std::string>(samL["Chr1"]) );
    sam.setChr2( Rcpp::as<std::string>(samL["Chr2"]) );
    sam.setSeq( Rcpp::as<std::string>(samL["Seq1"]) );
    sam.setHS1( Rcpp::as<size_t>(samL["HS1"]) );
    sam.setHS2( Rcpp::as<size_t>(samL["HS2"]) );
    sam.setStart1( Rcpp::as<long>( samL["Start1"]) );
    sam.setStart2( Rcpp::as<long>( samL["Start2"]) );
    sam.setId( Rcpp::as<long>( samL["Id"]) );

    return sam;
}

}
#endif /* SAMDATA_HPP_ */


The Rcpp package worked just fine before I started using wrap and as. Also, this very same code runs fine on a separate sample Rcpp project, where I omit the GSL (and RcppGSL) dependency (I could attach it but I don't know if it is allowed).

Sorry if this question might sound silly (and it does to me), but is there any known issue or incompatibility with RcppGSL and wrap/as?


Thanks,
Fabio


_______________________________________________
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

Reply via email to