Changeset ab628c for src/UIElements/Qt4/InstanceBoard
- Timestamp:
- Feb 12, 2016, 11:15:24 PM (9 years ago)
- 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:
- 1b6415a
- Parents:
- 68418e
- git-author:
- Frederik Heber <heber@…> (10/29/15 18:38:02)
- git-committer:
- Frederik Heber <heber@…> (02/12/16 23:15:24)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/UIElements/Qt4/InstanceBoard/ObservedValue_wCallback.hpp
r68418e rab628c 15 15 #endif 16 16 17 #include "CodePatterns/Assert.hpp" 17 18 #include "CodePatterns/ObservedValue.hpp" 18 19 #include "CodePatterns/Observer/Observable.hpp" 19 20 21 #include <algorithm> 20 22 #include <string> 21 23 … … 39 41 const boost::function<const id()> &_getId) : 40 42 ObservedValue<T>(_owner, _recalcMethod, _name, _initialvalue, _channels), 43 signedOnChannels(std::max((size_t)1,_channels.size())), 41 44 callback(_callback), 42 45 getId(_getId) … … 49 52 { 50 53 ObservedValue<T>::subjectKilled(publisher); 51 callback(getId()); 54 ASSERT(signedOnChannels > 0, 55 "ObservedValue_wCallback::subjectKilled() - signedOnChannels is already zero."); 56 if ((--signedOnChannels) == 0) 57 callback(getId()); 52 58 } 53 59 54 60 private: 61 //!> if we are signOn() to multiple channels, count down before callback 62 size_t signedOnChannels; 55 63 //!> callback function to tell other entity about subjectKilled 56 64 const boost::function<void(const id)> callback; … … 84 92 const boost::function<const T()> &_getId) : 85 93 ObservedValue<T>(_owner, _recalcMethod, _name, _initialvalue, _channels), 94 signedOnChannels(std::max((size_t)1,_channels.size())), 86 95 callback(_callback), 87 96 getId(_getId) … … 95 104 const boost::function<void(const T)> &_callback) : 96 105 ObservedValue<T>(_owner, _recalcMethod, _name, _initialvalue, _channels), 106 signedOnChannels(std::max((size_t)1,_channels.size())), 97 107 callback(_callback), 98 108 getId(boost::bind(&ObservedValue<T>::get, this)) … … 105 115 { 106 116 ObservedValue<T>::subjectKilled(publisher); 107 callback(getId()); 117 ASSERT(signedOnChannels > 0, 118 "ObservedValue_wCallback::subjectKilled() - signedOnChannels is already zero."); 119 if ((--signedOnChannels) == 0) 120 callback(getId()); 108 121 } 109 122 110 123 private: 124 //!> if we are signOn() to multiple channels, count down before callback 125 size_t signedOnChannels; 111 126 //!> callback function to tell other entity about subjectKilled 112 127 const boost::function<void(const T)> callback;
Note:
See TracChangeset
for help on using the changeset viewer.