Apply clang-format to source tree
[alexxy/gromacs.git] / src / gromacs / options / ioptionscontainer.h
index d988f4c3fd68fbb327cad2fa165fee42eb5ab5e9..1217dacb537d479d720b95620f2b24f3b16c2590 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the GROMACS molecular simulation package.
  *
- * Copyright (c) 2015,2016,2018, by the GROMACS development team, led by
+ * Copyright (c) 2015,2016,2018,2019, by the GROMACS development team, led by
  * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
  * and including many others, as listed in the AUTHORS file in the
  * top-level source directory and at http://www.gromacs.org.
@@ -79,72 +79,71 @@ namespace gmx
  */
 class IOptionsContainer
 {
-    public:
-        /*! \brief
-         * Creates a subgroup of options within the current options.
-         *
-         * To add options to the group, use the returned interface.
-         *
-         * Currently, this is only used to influence the order of options:
-         * all options in a group appear before options in a group added after
-         * it, no matter in which order the options are added to the groups.
-         * In the future, the groups could also be used to influence the help
-         * output.
-         */
-        virtual IOptionsContainer &addGroup() = 0;
-        /*! \brief
-         * Adds a recognized option.
-         *
-         * \tparam    OptionType Type of the options description object.
-         * \param[in] settings   Option description.
-         * \returns   OptionInfo object for the created option (never NULL).
-         * \throws    APIError if invalid option settings are provided.
-         *
-         * The return value is a pointer for more convenient use in callers:
-         * often callers need to declare the variable that will hold the return
-         * value in wider scope than would be achieved by declaring it at the
-         * site where addOption() is called.
-         * The returned pointer must not be freed.
-         *
-         * See \link Options class documentation \endlink for example usage.
-         *
-         * \libinternal
-         * \p OptionType::InfoType must specify a type that derives from
-         * OptionInfo and matches the type that is returned by
-         * AbstractOptionStorage::optionInfo() for the storage object that
-         * corresponds to \p OptionType.
-         */
-        template <class OptionType>
-        typename OptionType::InfoType *addOption(const OptionType &settings)
-        {
-            OptionInfo *info
-                = addOptionImpl(static_cast<const AbstractOption &>(settings));
-            GMX_ASSERT(info->isType<typename OptionType::InfoType>(),
-                       "Mismatching option info type declaration and implementation");
-            return info->toType<typename OptionType::InfoType>();
-        }
+public:
+    /*! \brief
+     * Creates a subgroup of options within the current options.
+     *
+     * To add options to the group, use the returned interface.
+     *
+     * Currently, this is only used to influence the order of options:
+     * all options in a group appear before options in a group added after
+     * it, no matter in which order the options are added to the groups.
+     * In the future, the groups could also be used to influence the help
+     * output.
+     */
+    virtual IOptionsContainer& addGroup() = 0;
+    /*! \brief
+     * Adds a recognized option.
+     *
+     * \tparam    OptionType Type of the options description object.
+     * \param[in] settings   Option description.
+     * \returns   OptionInfo object for the created option (never NULL).
+     * \throws    APIError if invalid option settings are provided.
+     *
+     * The return value is a pointer for more convenient use in callers:
+     * often callers need to declare the variable that will hold the return
+     * value in wider scope than would be achieved by declaring it at the
+     * site where addOption() is called.
+     * The returned pointer must not be freed.
+     *
+     * See \link Options class documentation \endlink for example usage.
+     *
+     * \libinternal
+     * \p OptionType::InfoType must specify a type that derives from
+     * OptionInfo and matches the type that is returned by
+     * AbstractOptionStorage::optionInfo() for the storage object that
+     * corresponds to \p OptionType.
+     */
+    template<class OptionType>
+    typename OptionType::InfoType* addOption(const OptionType& settings)
+    {
+        OptionInfo* info = addOptionImpl(static_cast<const AbstractOption&>(settings));
+        GMX_ASSERT(info->isType<typename OptionType::InfoType>(),
+                   "Mismatching option info type declaration and implementation");
+        return info->toType<typename OptionType::InfoType>();
+    }
 
-    protected:
-        // Disallow deletion through the interface.
-        // (no need for the virtual, but some compilers warn otherwise)
-        virtual ~IOptionsContainer();
+protected:
+    // Disallow deletion through the interface.
+    // (no need for the virtual, but some compilers warn otherwise)
+    virtual ~IOptionsContainer();
 
-        /*! \brief
-         * Adds a recognized option.
-         *
-         * \param[in] settings Option description.
-         * \returns   OptionInfo object for the created option (never NULL).
-         * \throws    APIError if invalid option settings are provided.
-         *
-         * This method provides the internal implementation, but the templated
-         * method is called from user code.  See the templated method for more
-         * details.
-         */
-        virtual OptionInfo *addOptionImpl(const AbstractOption &settings) = 0;
+    /*! \brief
+     * Adds a recognized option.
+     *
+     * \param[in] settings Option description.
+     * \returns   OptionInfo object for the created option (never NULL).
+     * \throws    APIError if invalid option settings are provided.
+     *
+     * This method provides the internal implementation, but the templated
+     * method is called from user code.  See the templated method for more
+     * details.
+     */
+    virtual OptionInfo* addOptionImpl(const AbstractOption& settings) = 0;
 
-        GMX_DEFAULT_CONSTRUCTORS(IOptionsContainer);
+    GMX_DEFAULT_CONSTRUCTORS(IOptionsContainer);
 };
 
-}  // namespace gmx
+} // namespace gmx
 
 #endif