Ignore:
Timestamp:
Feb 11, 2016, 8:06:49 AM (9 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:
ada8df
Parents:
5d8f4f
git-author:
Frederik Heber <heber@…> (12/29/15 14:23:09)
git-committer:
Frederik Heber <heber@…> (02/11/16 08:06:49)
Message:

Extracted common code out of Molecule/AtomObserver into EntityObserver.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/MoleculeObserver.cpp

    r5d8f4f rd4ba3f  
    3535#include "CodePatterns/MemDebug.hpp"
    3636
    37 #include "MoleculeObserver.hpp"
     37#include <boost/assign.hpp>
    3838
    3939#include "CodePatterns/Singleton_impl.hpp"
     
    4141#include "molecule.hpp"
    4242
     43#include "MoleculeObserver.hpp"
    4344
    44 /** Private constructor of class MoleculeObserver.
    45  *
    46  */
    47 MoleculeObserver::MoleculeObserver() :
    48   Relay(std::string("MoleculeObserver"))
     45using namespace boost::assign;
     46
     47static const Observable::channels_t getMoleculeChannels()
    4948{
    50   Channels *OurChannel = new Channels();
    51   Observable::insertNotificationChannel( std::make_pair(static_cast<Observable *>(this), OurChannel) );
    52   OurChannel->addChannel(molecule::AtomInserted);
    53   OurChannel->addChannel(molecule::AtomRemoved);
    54   OurChannel->addChannel(molecule::AtomNrChanged);
    55   OurChannel->addChannel(molecule::AtomMoved);
    56   OurChannel->addChannel(molecule::FormulaChanged);
    57   OurChannel->addChannel(molecule::MoleculeNameChanged);
    58   OurChannel->addChannel(molecule::IndexChanged);
    59   OurChannel->addChannel(molecule::BoundingBoxChanged);
    60   OurChannel->addChannel(molecule::SelectionChanged);
     49  Observable::channels_t channels;
     50  for (int i=0;i<molecule::NotificationType_MAX; ++i)
     51    channels += (enum molecule::NotificationType)i;
     52  return channels;
    6153}
    6254
    63 /** Private Destructor of class MoleculeObserver.
    64  *
    65  */
    66 MoleculeObserver::~MoleculeObserver()
     55const Observable::channels_t MoleculeObserver::MoleculeChannels(getMoleculeChannels());
     56
     57MoleculeObserver::MoleculeObserver() :
     58    EntityObserver<molecule>(MoleculeChannels, std::string("MoleculeObserver"))
    6759{}
    6860
    69 /** Function to call when a new molecule has been created.
    70  *
    71  * @param res
    72  */
    73 void MoleculeObserver::MoleculeInserted(molecule *res)
    74 {
    75   res->signOn(this, molecule::AtomInserted);
    76   res->signOn(this, molecule::AtomRemoved);
    77   res->signOn(this, molecule::AtomNrChanged);
    78   res->signOn(this, molecule::AtomMoved);
    79   res->signOn(this, molecule::FormulaChanged);
    80   res->signOn(this, molecule::MoleculeNameChanged);
    81   res->signOn(this, molecule::IndexChanged);
    82   res->signOn(this, molecule::BoundingBoxChanged);
    83   res->signOn(this, molecule::SelectionChanged);
    84 }
    85 
    86 /** Function to call when an molecule is about to get deleted.
    87  *
    88  * @param res
    89  */
    90 void MoleculeObserver::MoleculeRemoved(molecule *res)
    91 {
    92   res->signOff(this, molecule::AtomInserted);
    93   res->signOff(this, molecule::AtomRemoved);
    94   res->signOff(this, molecule::AtomNrChanged);
    95   res->signOff(this, molecule::AtomMoved);
    96   res->signOff(this, molecule::FormulaChanged);
    97   res->signOff(this, molecule::MoleculeNameChanged);
    98   res->signOff(this, molecule::IndexChanged);
    99   res->signOff(this, molecule::BoundingBoxChanged);
    100   res->signOff(this, molecule::SelectionChanged);
    101 }
    102 
    10361CONSTRUCT_SINGLETON(MoleculeObserver)
Note: See TracChangeset for help on using the changeset viewer.