/*
 * StoreSaturatedFragmentAction.def
 *
 *  Created on: Feb 26, 2013
 *      Author: heber
 */

// all includes and forward declarations necessary for non-integral types below
#include <string>
#include <vector>

#include "Parameters/Validators/DummyValidator.hpp"
#include "Parameters/Validators/RangeValidator.hpp"
#include "Parameters/Validators/STLVectorValidator.hpp"
#include "Parameters/Validators/Specific/BoxLengthValidator.hpp"
#include "Parameters/Validators/Specific/ParserTypeValidator.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 (NOPARAM_DEFAULT) for each (undefined) default value
#define paramtypes (std::string)(bool)(std::vector<std::string>)(double)(unsigned int)
#define paramtokens ("store-saturated-fragment")("DoSaturate")("output-types")("max-meshwidth")("grid-level")
#define paramdescriptions ("name of fragment file")("do saturate dangling bonds with hydrogen")("type(s) of parsers that output fragment config files")("maximum allowed mesh width, i.e. discrete points may be at most that far apart on the fragment grids")("resolution of density sampling multigrid")
#define paramdefaults (NOPARAM_DEFAULT)(PARAM_DEFAULT(true))(PARAM_DEFAULT(std::vector<std::string>()))(PARAM_DEFAULT(0.))(PARAM_DEFAULT(5))
#define paramreferences (prefix)(DoSaturation)(types)(max_meshwidth)(level)
#define paramvalids \
(DummyValidator< std::string >()) \
(DummyValidator< bool >()) \
(STLVectorValidator< std::vector<std::string> >(0, 10, ParserTypeValidator())) \
(BoxLengthValidator()) \
(RangeValidator< unsigned int >(1, 10))

#undef statetypes
#undef statereferences

// some defines for all the names, you may use ACTION, STATE and PARAMS
#define CATEGORY Fragmentation
#define MENUNAME "fragmentation"
#define MENUPOSITION 4
#define ACTIONNAME StoreSaturatedFragment
#define TOKEN "store-saturated-fragment"


// finally the information stored in the ActionTrait specialization
#define DESCRIPTION "store all selected atoms as a single fragment with dangling bonds satured by hydrogen"
#undef SHORTFORM
