/* * RandomNumberDistribution_Encapsulation.hpp * * Created on: Jan 01, 2011 * Author: heber */ #ifndef RANDOMNUMBERDISTRIBUTION_ENCAPSULATION_HPP_ #define RANDOMNUMBERDISTRIBUTION_ENCAPSULATION_HPP_ // include config.h #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "CodePatterns/Clone.hpp" #include "RandomNumberDistribution.hpp" class RandomNumberDistributionFactory; /** Template class that encapsulates the random number distributions from * random::boost. * * * We need one template parameters: * -# the distribution - generates uniform random numbers */ template class RandomNumberDistribution_Encapsulation : public RandomNumberDistribution, public Clone { /** * Factory is friend such that it can access private cstor when filling its * table */ friend class RandomNumberDistributionFactory; public: /** Getter for the type name of the internal distribution. * */ std::string name() { return typeid(distribution_type).name(); } /** Getter for the distribution instance. * * @return reference to instance */ distribution& getDistribution() { return distribution_type; } /** Clones the current instance. * * Implementation of Clone pattern. * * @return interface reference to cloned instance */ RandomNumberDistribution* clone() const { RandomNumberDistribution* MyClone = NULL; MyClone = new RandomNumberDistribution_Encapsulation(); return MyClone; } protected: /** Constructor that instantiates a specific random number generator and * distribution. * @param _distribution_type instance of the desired distribution */ RandomNumberDistribution_Encapsulation() {} /** Destructor of the class. * */ virtual ~RandomNumberDistribution_Encapsulation() {} private: distribution distribution_type; }; #endif /* RANDOMNUMBERDISTRIBUTION_ENCAPSULATION_HPP_ */