Skip to content

Commit

Permalink
do not mix overloading with virtual functions
Browse files Browse the repository at this point in the history
  • Loading branch information
yixuan committed Dec 9, 2016
1 parent c4b5377 commit f9367b2
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 10 deletions.
8 changes: 7 additions & 1 deletion README.md
Expand Up @@ -45,11 +45,13 @@ class Func
{
public:
virtual double operator()(const double& x) const = 0;
virtual void operator()(double* x, const int n) const
virtual void eval(double* x, const int n) const
{
for(int i = 0; i < n; i++)
x[i] = this->operator()(x[i]);
}

virtual ~Func() {}
};
```

Expand Down Expand Up @@ -158,6 +160,8 @@ class MFunc
{
public:
virtual double operator()(Constvec& x) = 0;

virtual ~MFunc() {}
};
```

Expand Down Expand Up @@ -276,6 +280,8 @@ class MFuncGrad
{
public:
virtual double f_grad(Constvec& x, Refvec grad) = 0;

virtual ~MFuncGrad() {}
};
```

Expand Down
14 changes: 7 additions & 7 deletions inst/include/Func.h
Expand Up @@ -23,14 +23,14 @@ typedef const Eigen::Ref<const Eigen::VectorXd> Constvec;
class Func
{
public:
virtual ~Func() {}

virtual double operator()(const double& x) const = 0;
virtual void operator()(double* x, const int n) const
virtual void eval(double* x, const int n) const
{
for(int i = 0; i < n; i++)
x[i] = this->operator()(x[i]);
}

virtual ~Func() {}
};


Expand All @@ -39,19 +39,19 @@ class Func
class MFunc
{
public:
virtual ~MFunc() {}

virtual double operator()(Constvec& x) = 0;

virtual ~MFunc() {}
};


// For optimization that requires gradient
class MFuncGrad
{
public:
virtual ~MFuncGrad() {}

virtual double f_grad(Constvec& x, Refvec grad) = 0;

virtual ~MFuncGrad() {}
};


Expand Down
2 changes: 1 addition & 1 deletion inst/include/integration/Integrator.h
Expand Up @@ -552,7 +552,7 @@ class Integrator
}

// Evaluate points.
f(points.data(), 2 * numKronrodRows - 1);
f.eval(points.data(), 2 * numKronrodRows - 1);
Eigen::Array<Scalar, 2 * numKronrodRows - 1, 1>& fPoints = points; // Alias of points

const Scalar fCenter = fPoints[0];
Expand Down
8 changes: 7 additions & 1 deletion vignettes/introduction.Rmd
Expand Up @@ -58,11 +58,13 @@ class Func
{
public:
virtual double operator()(const double& x) const = 0;
virtual void operator()(double* x, const int n) const
virtual void eval(double* x, const int n) const
{
for(int i = 0; i < n; i++)
x[i] = this->operator()(x[i]);
}

virtual ~Func() {}
};
```

Expand Down Expand Up @@ -205,6 +207,8 @@ class MFunc
{
public:
virtual double operator()(Constvec& x) = 0;

virtual ~MFunc() {}
};
```

Expand Down Expand Up @@ -364,6 +368,8 @@ class MFuncGrad
{
public:
virtual double f_grad(Constvec& x, Refvec grad) = 0;

virtual ~MFuncGrad() {}
};
```

Expand Down

0 comments on commit f9367b2

Please sign in to comment.