/* * BaseFillerPrepator.hpp * * Created on: Sep 2, 2014 * Author: heber */ #ifndef BASEFILLERPREPARATOR_HPP_ #define BASEFILLERPREPARATOR_HPP_ // include config.h #ifdef HAVE_CONFIG_H #include #endif class atom; class Filler; class FillPredicate; class Inserter; class LinkedCell_deprecated; class Mesh; class molecule; class Tesselation; #include /** BaseFillerPrepator is the base class for all specific filler preparators. * * Specific preparators combine all the various aspects of filling into a specific * package for easy and convenient calling for returning a filler function. * * It defines both the interface and implements some common functions. */ class BaseFillerPreparator { public: BaseFillerPreparator(molecule *_filler); virtual ~BaseFillerPreparator(); void addSurfacePredicate( const double _radius, std::vector &_atoms); void addRandomInserter( const double _RandAtomDisplacement, const double _RandMoleculeDisplacement, const bool _DoRotate); void addVoidPredicate( const double _mindistance); bool operator()(); /* The operator is just a getter for the constructed fillerFunction. * * \return allocated Filler (is not deleted here) */ Filler* obtainFiller() { Filler *temp = fillerFunction; fillerFunction = NULL; return temp; } protected: molecule *filler; FillPredicate * surface_predicate; LinkedCell_deprecated * LC; Tesselation * TesselStruct; FillPredicate *voidnode_predicate; FillPredicate *Andpredicate; Mesh *mesh; Inserter *inserter; Filler *fillerFunction; }; #endif /* BASEFILLERPREPARATOR_HPP_ */