Ignore:
Timestamp:
Apr 17, 2013, 6:56:32 PM (12 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:
691318
Parents:
79d0b9
git-author:
Frederik Heber <heber@…> (03/18/13 18:34:02)
git-committer:
Frederik Heber <heber@…> (04/17/13 18:56:32)
Message:

FIX: Using fixed Observer in CodePatterns 1.2.6.

  • we now require CodePatterns 1.2.6.
  • Notifications now use subjectKilled() when the Observable they are associated with is destroyed. This allows Observers that are just sign on to a single channel safely sign off.
  • also, derived Observable classes must not remove their Channels and Notifications by themselves. This is done by the Observable base class. Otherwise, subjectKilled() is not called.
  • changed AtomObserver: Is directly connected to the atom class, AtomInserted and AtomRemoved called in its cstor and dstor. The World has nothing to do with it. However, we have to make sure AtomObserver is purged after World.
  • Fixed also some faulty uses of ObserverLog and we always insert into NotificationChannels with static_cast to Observable for clarity.
Location:
src/LinkedCell/unittests/stubs
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/LinkedCell/unittests/stubs/AtomObserverStub.cpp

    r79d0b9 r708277  
    4646{
    4747  Channels *OurChannel = new Channels();
    48   NotificationChannels.insert( std::make_pair(this, OurChannel) );
     48  NotificationChannels.insert( std::make_pair(static_cast<Observable *>(this), OurChannel) );
    4949  OurChannel->addChannel(AtomObservable::PositionChanged);
    5050}
    5151
    5252AtomObserver::~AtomObserver()
    53 {
    54   // observable stuff
    55   std::map<Observable *, Channels*>::iterator iter = NotificationChannels.find(this);
    56   delete iter->second;
    57   NotificationChannels.erase(iter);
    58 }
     53{}
    5954
    6055CONSTRUCT_SINGLETON(AtomObserver);
  • src/LinkedCell/unittests/stubs/ObserverBoxStub.cpp

    r79d0b9 r708277  
    4949  // observable stuff
    5050  Channels *OurChannel = new Channels;
    51   NotificationChannels.insert( std::make_pair(this, OurChannel) );
     51  NotificationChannels.insert( std::make_pair(static_cast<Observable *>(this), OurChannel) );
    5252  // add instance for each notification type
    5353  OurChannel->addChannel(Box::MatrixChanged);
     
    5757Box::~Box()
    5858{
    59   // observable stuff
    60   std::map<Observable *, Channels*>::iterator iter = NotificationChannels.find(this);
    61   delete iter->second;
    62   NotificationChannels.erase(iter);
    63 
    6459  delete M;
    6560  delete Minv;
  • src/LinkedCell/unittests/stubs/WorldTimeStub.cpp

    r79d0b9 r708277  
    4949  // observable stuff
    5050  Channels *OurChannel = new Channels;
    51   NotificationChannels.insert( std::make_pair(this, OurChannel) );
     51  NotificationChannels.insert( std::make_pair(static_cast<Observable *>(this), OurChannel) );
    5252  // add instance for each notification type
    5353  for (size_t type = 0; type < NotificationType_MAX; ++type)
     
    5656
    5757WorldTime::~WorldTime()
    58 {
    59   // observable stuff
    60   std::map<Observable *, Channels*>::iterator iter = NotificationChannels.find(this);
    61   delete iter->second;
    62   NotificationChannels.erase(iter);
    63 }
     58{}
    6459
    6560void WorldTime::setStepWidth(const double _width)
Note: See TracChangeset for help on using the changeset viewer.