Ignore:
Timestamp:
Jun 26, 2012, 7:51:04 AM (13 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
Children:
7670865
Parents:
f0834d
git-author:
Frederik Heber <heber@…> (02/06/12 09:33:27)
git-committer:
Frederik Heber <heber@…> (06/26/12 07:51:04)
Message:

FragmentResult is now also encapsulated in boost::shared_ptr.

  • this allows in the same way to have different implementations of an abstract FragmentResult class.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Fragmentation/Automation/FragmentQueue.cpp

    rf0834d r35f587  
    2424#include "CodePatterns/Assert.hpp"
    2525
    26 FragmentResult FragmentQueue::NoResult(-1);
    27 FragmentResult FragmentQueue::NoResultQueued(-2);
    28 FragmentResult FragmentQueue::ResultDelivered(-3);
     26FragmentResult::ptr FragmentQueue::NoResult( new FragmentResult(-1) );
     27FragmentResult::ptr FragmentQueue::NoResultQueued( new FragmentResult(-2) );
     28FragmentResult::ptr FragmentQueue::ResultDelivered( new FragmentResult(-3) );
    2929
    3030/** Constructor for class FragmentQueue.
     
    106106 * @return true - result is a present, valid result, false - result is one of the statics
    107107 */
    108 bool FragmentQueue::isPresentResult(const FragmentResult &_result) const
     108bool FragmentQueue::isPresentResult(const FragmentResult::ptr result) const
    109109{
    110   return (_result != NoResult)
    111       && (_result != NoResultQueued)
    112       && (_result != ResultDelivered);
     110  return (*result != *NoResult)
     111      && (*result != *NoResultQueued)
     112      && (*result != *ResultDelivered);
    113113}
    114114
     
    134134  for (ResultMap::const_iterator iter = results.begin();
    135135      iter != results.end(); ++iter)
    136     if ((iter->second != NoResult)
    137         && (iter->second != NoResultQueued)
    138         && (iter->second != ResultDelivered))
     136    if (isPresentResult(iter->second))
    139137      ++doneJobs;
    140138    return doneJobs;
     
    148146 * \return result for job of given \a jobid
    149147 */
    150 FragmentResult FragmentQueue::getResult(JobId_t jobid)
     148FragmentResult::ptr FragmentQueue::getResult(JobId_t jobid)
    151149{
    152150  ResultMap::iterator iter = results.find(jobid);
    153151  ASSERT(iter != results.end(),
    154152      "FragmentQueue::pushResult() - job "+toString(jobid)+" is not known to us.");
    155   ASSERT(iter->second != NoResult,
     153  ASSERT(*iter->second != *NoResult,
    156154      "FragmentQueue::pushResult() - job "+toString(jobid)+" has not been request for calculation yet.");
    157   ASSERT(iter->second != NoResultQueued,
     155  ASSERT(*iter->second != *NoResultQueued,
    158156      "FragmentQueue::pushResult() - job "+toString(jobid)+"'s calculation is underway but not result has arrived yet.");
    159   ASSERT(iter->second != ResultDelivered,
     157  ASSERT(*iter->second != *ResultDelivered,
    160158      "FragmentQueue::pushResult() - job "+toString(jobid)+"'s result has already been delivered.");
    161159  /// store result
    162   FragmentResult _result = iter->second;
     160  FragmentResult::ptr _result = iter->second;
    163161  /// mark as delivered in map
    164162  iter->second = ResultDelivered;
     
    167165}
    168166
    169 std::vector<FragmentResult> FragmentQueue::getAllResults()
     167std::vector<FragmentResult::ptr> FragmentQueue::getAllResults()
    170168{
    171   std::vector<FragmentResult> returnresults;
     169  std::vector<FragmentResult::ptr> returnresults;
    172170  for (ResultMap::iterator iter = results.begin();
    173171      iter != results.end(); ++iter) {
     
    187185 * \param result result of job to store
    188186 */
    189 void FragmentQueue::pushResult(FragmentResult &_result)
     187void FragmentQueue::pushResult(FragmentResult::ptr &_result)
    190188{
    191189  /// check for presence
    192   ResultMap::iterator iter = results.find(_result.getId());
     190  ResultMap::iterator iter = results.find(_result->getId());
    193191  ASSERT(iter != results.end(),
    194       "FragmentQueue::pushResult() - job "+toString(_result.getId())+" is not known to us.");
    195   ASSERT(iter->second == NoResultQueued,
    196       "FragmentQueue::pushResult() - is not waiting for the result of job "+toString(_result.getId())+".");
     192      "FragmentQueue::pushResult() - job "+toString(_result->getId())+" is not known to us.");
     193  ASSERT(*iter->second == *NoResultQueued,
     194      "FragmentQueue::pushResult() - is not waiting for the result of job "+toString(_result->getId())+".");
    197195  /// and overwrite NoResult in found entry
    198196  iter->second = _result;
Note: See TracChangeset for help on using the changeset viewer.