I've attached a somewhat tweaked example which I think might indicate
that modules don't know about const NumericVector&?


> GroupFixed <- m$GroupFixed

> g <- GroupFixed$new(x, 0.1, 0)

> g$size()
[1] 1

> g$bin(1L)
[1] 0

> g$get(1L)
[1] 6.953223e-310


The answers should be 8, 100 and 0.08075014 respectively.

Hadley


On Wed, Feb 20, 2013 at 11:39 AM, Hadley Wickham <[email protected]> wrote:
> Hi all,
>
> I'm having a simple problem with modules - when I instantiating the
> object and call the methods in C++, I get a different answer from
> instantiating and calling the methods in R via a module.  I've
> attached a simple test case that you can run with sourceCpp() - when I
> run it (using svn rev 4264 or CRAN version) I get 0 instead of 8. What
> am I doing wrong?
>
> Thanks!
>
> Hadley
>
> --
> Chief Scientist, RStudio
> http://had.co.nz/



-- 
Chief Scientist, RStudio
http://had.co.nz/
// Sys.setenv("CXXFLAGS" = "-g -O0")

#include <Rcpp.h>
using namespace Rcpp;

class GroupFixed {
    const NumericVector& x_;
    double width_;
    double origin_;
  public:
    GroupFixed (const NumericVector& x, double width, double origin = 0)
       : x_(x), width_(width), origin_(origin) {
    }

    int bin(int i) const {
      if (x_[i] < origin_) return 0;
      return (x_[i] - origin_) / width_;
    }

    int size() const {
      return x_.size();
    }

    double get(int i) const {
      return x_[i - 1];
    }
};

RCPP_MODULE(Group) {
  class_<GroupFixed>("GroupFixed")
  .constructor<const NumericVector&, double, double>()
  .const_method("bin", &GroupFixed::bin)
  .const_method("size", &GroupFixed::size)
  .const_method("get", &GroupFixed::get)
  ;
}


// [[Rcpp::export]]
int test(const NumericVector& x) {
  GroupFixed g(x, 0.1, 0);
  return g.bin(1);
}

/*** R

# With C++
set.seed(1014)
x <- runif(100)
test(x)

# With R, using module
last <- function(x) x[[length(x)]]
m <- Module("Group", last(getLoadedDLLs()))
GroupFixed <- m$GroupFixed

g <- GroupFixed$new(x, 0.1, 0)
g$size()
g$bin(1L)
g$get(1L)

**/
_______________________________________________
Rcpp-devel mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Reply via email to