20#ifndef CCGSL_FILTER_HPP
21#define CCGSL_FILTER_HPP
23#include<gsl/gsl_filter.h>
52 try {
count =
new size_t; }
catch( std::bad_alloc& e ){
102#ifdef __GXX_EXPERIMENTAL_CXX0X__
108 std::swap(
count, v.count );
109 v.ccgsl_pointer =
nullptr;
227#ifdef __GXX_EXPERIMENTAL_CXX0X__
242 inline int gaussian( gsl_filter_end_t
const endtype,
double const alpha,
size_t const order,
244 return gsl_filter_gaussian( endtype, alpha,
order, x.
get(), y.
get(), w.
get() ); }
255 return gsl_filter_gaussian_kernel( alpha,
order, normalize, kernel.
get() ); }
276 try {
count =
new size_t; }
catch( std::bad_alloc& e ){
327#ifdef __GXX_EXPERIMENTAL_CXX0X__
334 std::swap(
count, v.count );
335 v.ccgsl_pointer =
nullptr;
458#ifdef __GXX_EXPERIMENTAL_CXX0X__
473 return gsl_filter_median( endtype, x.
get(), y.
get(), w.
get() ); }
494 try {
count =
new size_t; }
catch( std::bad_alloc& e ){
545#ifdef __GXX_EXPERIMENTAL_CXX0X__
552 std::swap(
count, v.count );
553 v.ccgsl_pointer =
nullptr;
676#ifdef __GXX_EXPERIMENTAL_CXX0X__
691 return gsl_filter_rmedian( endtype, x.
get(), y.
get(), w.
get() ); }
712 try {
count =
new size_t; }
catch( std::bad_alloc& e ){
763#ifdef __GXX_EXPERIMENTAL_CXX0X__
770 std::swap(
count, v.count );
771 v.ccgsl_pointer =
nullptr;
894#ifdef __GXX_EXPERIMENTAL_CXX0X__
913 inline int impulse( gsl_filter_end_t
const endtype, gsl_filter_scale_t
const scale_type,
917 return gsl_filter_impulse( endtype, scale_type, t, x.
get(), y.
get(), xmedian.
get(),
918 xsigma.
get(), &noutlier, ioutlier.
get(), w.
get() ); }
bool unique() const
Find if this is the only object sharing the gsl_filter_gaussian_workspace.
gaussian_workspace & operator=(gaussian_workspace const &v)
The assignment operator.
gsl_filter_gaussian_workspace * get() const
Get the gsl_filter_gaussian_workspace.
bool operator==(gaussian_workspace const &v) const
Two workspace are identically equal if their elements are identical.
gsl_filter_gaussian_workspace * ccgsl_pointer
The shared pointer.
bool operator>(gaussian_workspace const &v) const
A container needs to define an ordering for sorting.
bool operator>=(gaussian_workspace const &v) const
A container needs to define an ordering for sorting.
gaussian_workspace(gaussian_workspace &&v)
Move constructor.
gaussian_workspace(size_t const K)
bool operator<=(gaussian_workspace const &v) const
A container needs to define an ordering for sorting.
~gaussian_workspace()
The destructor only deletes the pointers if count reaches zero.
gaussian_workspace(gaussian_workspace const &v)
The copy constructor.
gaussian_workspace & operator=(gaussian_workspace &&v)
Move operator.
bool operator<(gaussian_workspace const &v) const
A container needs to define an ordering for sorting.
bool operator!=(gaussian_workspace const &v) const
Two workspace are different if their elements are not identical.
void swap(gaussian_workspace &v)
Swap two workspace objects.
gaussian_workspace(gsl_filter_gaussian_workspace *v)
Could construct from a gsl_filter_gaussian_workspace.
bool empty() const
Find if the workspace is empty.
size_t * count
The shared reference count.
size_t use_count() const
Find how many workspace objects share this pointer.
gaussian_workspace()
The default constructor is only really useful for assigning to.
bool operator>(impulse_workspace const &v) const
A container needs to define an ordering for sorting.
bool operator<(impulse_workspace const &v) const
A container needs to define an ordering for sorting.
impulse_workspace()
The default constructor is only really useful for assigning to.
bool operator>=(impulse_workspace const &v) const
A container needs to define an ordering for sorting.
gsl_filter_impulse_workspace * ccgsl_pointer
The shared pointer.
bool unique() const
Find if this is the only object sharing the gsl_filter_impulse_workspace.
impulse_workspace(gsl_filter_impulse_workspace *v)
Could construct from a gsl_filter_impulse_workspace.
impulse_workspace & operator=(impulse_workspace &&v)
Move operator.
impulse_workspace & operator=(impulse_workspace const &v)
The assignment operator.
void swap(impulse_workspace &v)
Swap two workspace objects.
bool operator==(impulse_workspace const &v) const
Two workspace are identically equal if their elements are identical.
gsl_filter_impulse_workspace * get() const
Get the gsl_filter_impulse_workspace.
size_t use_count() const
Find how many workspace objects share this pointer.
~impulse_workspace()
The destructor only deletes the pointers if count reaches zero.
bool operator<=(impulse_workspace const &v) const
A container needs to define an ordering for sorting.
bool empty() const
Find if the workspace is empty.
impulse_workspace(size_t const K)
impulse_workspace(impulse_workspace &&v)
Move constructor.
bool operator!=(impulse_workspace const &v) const
Two workspace are different if their elements are not identical.
impulse_workspace(impulse_workspace const &v)
The copy constructor.
size_t * count
The shared reference count.
This class handles vector_int objects as shared handles.
gsl_vector_int * get()
Get the gsl_vector_int.
This class handles vector objects as shared handles.
gsl_vector * get()
Get the gsl_vector.
size_t order(workspace &w)
C++ version of gsl_bspline_order().
int impulse(gsl_filter_end_t const endtype, gsl_filter_scale_t const scale_type, double const t, vector const &x, vector &y, vector &xmedian, vector &xsigma, size_t &noutlier, vector_int &ioutlier, impulse_workspace &w)
C++ version of gsl_filter_impulse().
int gaussian(gsl_filter_end_t const endtype, double const alpha, size_t const order, vector const &x, vector &y, gaussian_workspace &w)
C++ version of gsl_filter_gaussian().
int gaussian_kernel(double const alpha, size_t const order, int const normalize, vector &kernel)
C++ version of gsl_filter_gaussian_kernel().
int median(gsl_filter_end_t const endtype, vector const &x, vector &y, median_workspace &w)
C++ version of gsl_filter_median().
int rmedian(gsl_filter_end_t const endtype, vector const &x, vector &y, rmedian_workspace &w)
C++ version of gsl_filter_rmedian().
The gsl package creates an interface to the GNU Scientific Library for C++.