/*
 * FillVoidWithMoleculeAction.def
 *
 *  Created on: Aug 26, 2010
 *      Author: heber
 */

// all includes and forward declarations necessary for non-integral types below
#include "LinearAlgebra/Vector.hpp"
class MoleculeListClass;

#include "Parameters/Validators/DummyValidator.hpp"

// i.e. there is an integer with variable name Z that can be found in
// ValueStorage by the token "Z" -> first column: int, Z, "Z"
// "undefine" if no parameters are required, use (NODEFAULT) for each (undefined) default value
#define paramtypes (boost::filesystem::path)(Vector)(double)(double)(double)(double)(bool)
#define paramvalids (DummyValidator< boost::filesystem::path >())(DummyValidator< Vector >())(DummyValidator< double >())(DummyValidator< double >())(DummyValidator< double >())(DummyValidator< double >())(DummyValidator< bool >())
#define paramtokens ("fill-void")("distances")("distance-to-molecule")("random-atom-displacement")("random-molecule-displacement")("distance-to-boundary")("DoRotate")
#define paramdescriptions ("name of xyz file of filler molecule")("list of three of distances in space, one for each axis direction")("minimum distance to present molecules")("magnitude of random atom displacement")("magnitude of random molecule displacement")("minimum distance to boundary")("whether to rotate or not")
#define paramdefaults (NODEFAULT)(NODEFAULT)("0.")("0.")("0.")("0.")("0")
#define paramreferences (fillername)(distances)(boundary)(RandAtomDisplacement)(RandMoleculeDisplacement)(MinDistance)(DoRotate)

#define statetypes (std::vector<molecule *>)
#define statereferences (fillermolecules)

// some defines for all the names, you may use ACTION, STATE and PARAMS
#define CATEGORY Molecule
#define MENUNAME "molecule"
#define MENUPOSITION 5
#define ACTIONNAME FillVoidWithMolecule
#define TOKEN "fill-void"


// finally the information stored in the ActionTrait specialization
#define DESCRIPTION "fill void space of box with a filler molecule"
#undef SHORTFORM
