Skip to content
Snippets Groups Projects
IDoubleToComplexFunction.h 1.35 KiB
#ifndef IDOUBLETOCOMPLEXFUNCTION_H_
#define IDOUBLETOCOMPLEXFUNCTION_H_
// ********************************************************************
// * The BornAgain project                                            *
// * Simulation of neutron and x-ray scattering at grazing incidence  *
// *                                                                  *
// * LICENSE AND DISCLAIMER                                           *
// * Lorem ipsum dolor sit amet, consectetur adipiscing elit.  Mauris *
// * eget quam orci. Quisque  porta  varius  dui,  quis  posuere nibh *
// * mollis quis. Mauris commodo rhoncus porttitor.                   *
// ********************************************************************
//! @file   IDoubleToComplexFunction.h
//! @brief  Definition of HomogeneousMaterial class
//! @author herck
//! @date   27.04.2012

#include "Types.h"


class IDoubleToComplexFunction
{
public:
	virtual ~IDoubleToComplexFunction() {}

	virtual complex_t evaluate(double value)=0;
};


class DoubleToComplexFunctionWrapper : public IDoubleToComplexFunction
{
public:
	typedef complex_t (*double_to_complex_t)(double);
	DoubleToComplexFunctionWrapper(double_to_complex_t function) : m_function(function) {}

	virtual complex_t evaluate(double value) { return m_function(value); }

private:
	double_to_complex_t m_function;
};

#endif /* IDOUBLETOCOMPLEXFUNCTION_H_ */