2 * This file is part of the GROMACS molecular simulation package.
4 * Copyright (c) 2010,2011,2012, by the GROMACS development team, led by
5 * David van der Spoel, Berk Hess, Erik Lindahl, and including many
6 * others, as listed in the AUTHORS file in the top-level source
7 * directory and at http://www.gromacs.org.
9 * GROMACS is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public License
11 * as published by the Free Software Foundation; either version 2.1
12 * of the License, or (at your option) any later version.
14 * GROMACS is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * Lesser General Public License for more details.
19 * You should have received a copy of the GNU Lesser General Public
20 * License along with GROMACS; if not, see
21 * http://www.gnu.org/licenses, or write to the Free Software Foundation,
22 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
24 * If you want to redistribute modifications to GROMACS, please
25 * consider that scientific software is very special. Version
26 * control is crucial - bugs must be traceable. We will be happy to
27 * consider code for inclusion in the official distribution, but
28 * derived work must not be called official GROMACS. Details are found
29 * in the README & COPYING files - if they are missing, get the
30 * official version at http://www.gromacs.org.
32 * To help us fund GROMACS development, we humbly ask that you cite
33 * the research papers on the package. Check out http://www.gromacs.org.
37 * Defines flags used in option implementation.
39 * Symbols in this header are considered an implementation detail, and should
40 * not be accessed outside the module.
41 * Because of details in the implementation, it is still installed.
43 * \author Teemu Murtola <teemu.murtola@gmail.com>
44 * \ingroup module_options
46 #ifndef GMX_OPTIONS_OPTIONFLAGS_H
47 #define GMX_OPTIONS_OPTIONFLAGS_H
49 #include "../utility/flags.h"
55 /*! \libinternal \brief
58 * These flags are not part of the public interface, even though they are in an
59 * installed header. They are needed in a few template class implementations.
62 * The flags related to default values are confusing, consider reorganizing
67 //! %Option has been set.
69 //! The current value of the option is a programmatic default value.
70 efOption_HasDefaultValue = 1<<1,
71 //! An explicit default value has been provided for the option.
72 efOption_ExplicitDefaultValue = 1<<2,
74 * Next assignment to the option clears old values.
76 * This flag is set when a new option source starts, such that values
77 * from the new source will overwrite old ones.
79 efOption_ClearOnNextSet = 1<<3,
80 //! %Option is required to be set.
81 efOption_Required = 1<<4,
82 //! %Option can be specified multiple times.
83 efOption_MultipleTimes = 1<<5,
84 //! %Option is hidden from standard help.
85 efOption_Hidden = 1<<6,
87 * %Option value is a vector, but a single value is also accepted.
89 * \see AbstractOption::setVector()
91 efOption_Vector = 1<<8,
92 //! %Option does not support default values.
93 efOption_NoDefaultValue = 1<<9,
95 * Storage object does its custom checking for minimum value count.
97 * If this flag is set, the class derived from OptionStorageTemplate should
98 * implement processSetValues(), processAll(), and possible other functions
99 * it provides such that it always fails if not enough values are provided.
100 * This is useful to override the default check, which is done in
101 * OptionStorageTemplate::processSet().
103 efOption_DontCheckMinimumCount = 1<<10
106 //! \libinternal Holds a combination of ::OptionFlag values.
107 typedef FlagsTemplate<OptionFlag> OptionFlags;