1- // Copyright (C) 2019 - 2021 by Pedro Mendes, Rector and Visitors of the
1+ // Copyright (C) 2019 - 2022 by Pedro Mendes, Rector and Visitors of the
22// University of Virginia, University of Heidelberg, and University
33// of Connecticut School of Medicine.
44// All rights reserved.
@@ -81,6 +81,24 @@ void CScanProblem::initializeParameter()
8181}
8282
8383// ***********************************
84+ // virtual
85+ CCopasiTask * CScanProblem::getSubTask () const
86+ {
87+ CDataModel* pDataModel = getObjectDataModel ();
88+ CTaskEnum::Task SubTaskType = getSubtask ();
89+
90+ if (pDataModel != NULL )
91+ {
92+ CDataVectorN< CCopasiTask >::iterator it = pDataModel->getTaskList ()->begin ();
93+ CDataVectorN< CCopasiTask >::iterator end = pDataModel->getTaskList ()->end ();
94+
95+ for (; it != end; ++it)
96+ if (it->getType () == SubTaskType)
97+ return &*it;
98+ }
99+
100+ return NULL ;
101+ }
84102
85103void CScanProblem::setSubtask (CTaskEnum::Task type)
86104{
@@ -120,7 +138,6 @@ void CScanProblem::setContinueOnError(bool coe)
120138 setValue (" Continue on Error" , coe);
121139}
122140
123-
124141// ************************************
125142
126143void CScanProblem::load (CReadConfig & C_UNUSED (configBuffer),
@@ -200,7 +217,6 @@ CCopasiParameterGroup* CScanProblem::createScanItem(CScanProblem::Type type, siz
200217 tmp->addParameter (" Use Values" , CCopasiParameter::Type::BOOL, false );
201218 }
202219
203-
204220 if (type == SCAN_RANDOM)
205221 {
206222 tmp->addParameter (" Distribution type" , CCopasiParameter::Type::UINT, (unsigned C_INT32)0 );
@@ -222,18 +238,10 @@ void CScanProblem::clearScanItems()
222238
223239bool CScanProblem::restore (const bool & updateModel)
224240{
225- auto * dm = getObjectDataModel ();
226-
227- if (dm == NULL )
228- return false ;
241+ CCopasiTask * pSubTask = getSubTask ();
229242
230- auto & tasks = *dm->getTaskList ();
231-
232- for (auto & task : tasks)
233- {
234- if (task.getType () == getSubtask ())
235- return task.restore ();
236- }
243+ if (pSubTask != NULL )
244+ return pSubTask->restore ();
237245
238246 return true ;
239247}
0 commit comments