Improve (Selection|FileName)OptionManager handling
[alexxy/gromacs.git] / src / gromacs / options / filenameoption.cpp
index 9922e16fa977b6a2b3fc27bb7961745ac3324ee9..b56ba9e012d5a289da862563c102e53d71659d2f 100644 (file)
@@ -49,6 +49,7 @@
 
 #include "gromacs/fileio/filenm.h"
 #include "gromacs/options/filenameoptionmanager.h"
+#include "gromacs/options/optionmanagercontainer.h"
 #include "gromacs/utility/arrayref.h"
 #include "gromacs/utility/file.h"
 #include "gromacs/utility/gmxassert.h"
@@ -294,8 +295,9 @@ std::string completeFileName(const std::string &value, OptionFileType filetype,
  * FileNameOptionStorage
  */
 
-FileNameOptionStorage::FileNameOptionStorage(const FileNameOption &settings)
-    : MyBase(settings), info_(this), manager_(NULL),
+FileNameOptionStorage::FileNameOptionStorage(const FileNameOption  &settings,
+                                             FileNameOptionManager *manager)
+    : MyBase(settings), info_(this), manager_(manager),
       filetype_(settings.filetype_), legacyType_(settings.legacyType_),
       bRead_(settings.bRead_), bWrite_(settings.bWrite_),
       bLibrary_(settings.bLibrary_)
@@ -315,16 +317,6 @@ FileNameOptionStorage::FileNameOptionStorage(const FileNameOption &settings)
     }
 }
 
-void FileNameOptionStorage::setManager(FileNameOptionManager *manager)
-{
-    GMX_RELEASE_ASSERT(manager_ == NULL || manager_ == manager,
-                       "Manager cannot be changed once set");
-    if (manager_ == NULL)
-    {
-        manager_ = manager;
-    }
-}
-
 std::string FileNameOptionStorage::typeString() const
 {
     const FileTypeRegistry       &registry    = FileTypeRegistry::instance();
@@ -442,21 +434,11 @@ FileNameOptionInfo::FileNameOptionInfo(FileNameOptionStorage *option)
 {
 }
 
-FileNameOptionStorage &FileNameOptionInfo::option()
-{
-    return static_cast<FileNameOptionStorage &>(OptionInfo::option());
-}
-
 const FileNameOptionStorage &FileNameOptionInfo::option() const
 {
     return static_cast<const FileNameOptionStorage &>(OptionInfo::option());
 }
 
-void FileNameOptionInfo::setManager(FileNameOptionManager *manager)
-{
-    option().setManager(manager);
-}
-
 bool FileNameOptionInfo::isInputFile() const
 {
     return option().isInputFile();
@@ -491,9 +473,11 @@ FileNameOptionInfo::ExtensionList FileNameOptionInfo::extensions() const
  * FileNameOption
  */
 
-AbstractOptionStoragePointer FileNameOption::createStorage() const
+AbstractOptionStoragePointer
+FileNameOption::createStorage(const OptionManagerContainer &managers) const
 {
-    return AbstractOptionStoragePointer(new FileNameOptionStorage(*this));
+    return AbstractOptionStoragePointer(
+            new FileNameOptionStorage(*this, managers.get<FileNameOptionManager>()));
 }
 
 } // namespace gmx