Changeset 38f991
- Timestamp:
- Oct 10, 2011, 2:25:37 PM (13 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:
- 6bc86c
- Parents:
- ab4a33
- git-author:
- Frederik Heber <heber@…> (09/05/11 17:23:16)
- git-committer:
- Frederik Heber <heber@…> (10/10/11 14:25:37)
- Location:
- src
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Actions/AtomAction/RemoveAction.cpp
rab4a33 r38f991 40 40 /** =========== define the function ====================== */ 41 41 Action::state_ptr AtomRemoveAction::performCall() { 42 atom *first = NULL;43 44 42 // create undo state 45 43 std::vector<AtomicInfo> Walkers; 46 for (World::AtomSelectionIterator iter = World::getInstance().beginAtomSelection(); iter != World::getInstance().endAtomSelection(); ++iter) { 44 for (World::AtomSelectionConstIterator iter = World::getInstance().beginAtomSelection(); 45 iter != World::getInstance().endAtomSelection(); 46 ++iter) { 47 47 Walkers.push_back(AtomicInfo(*(iter->second))); 48 48 } … … 50 50 51 51 // remove all selected atoms 52 // std::vector<molecule *> molecules = World::getInstance().getAllMolecules(); 53 for (World::AtomSelectionIterator iter = World::getInstance().beginAtomSelection(); iter != World::getInstance().endAtomSelection(); ++iter) { 54 first = iter->second; 55 DoLog(1) && (Log() << Verbose(1) << "Removing atom " << first->getId() << "." << endl); 56 // // TODO: this is not necessary when atoms and their storing to file are handled by the World 57 // // simply try to erase in every molecule found 58 // for (std::vector<molecule *>::iterator iter = molecules.begin();iter != molecules.end(); ++iter) { 59 // (*iter)->erase(first); 60 // } 61 World::getInstance().destroyAtom(first); 52 for (World::AtomSelectionConstIterator iter = World::getInstance().beginAtomSelection(); 53 iter != World::getInstance().endAtomSelection(); 54 iter = World::getInstance().beginAtomSelection()) { 55 DoLog(1) && (Log() << Verbose(1) << "Removing atom " << (iter->second)->getId() << "." << endl); 56 World::getInstance().destroyAtom((iter->second)); 62 57 } 63 58 return Action::state_ptr(UndoState); -
src/Actions/FragmentationAction/FragmentationAction.cpp
rab4a33 r38f991 50 50 51 51 DepthFirstSearchAnalysis DFS; 52 for (World::MoleculeSelection Iterator iter = World::getInstance().beginMoleculeSelection(); iter != World::getInstance().endMoleculeSelection(); ++iter) {52 for (World::MoleculeSelectionConstIterator iter = World::getInstance().beginMoleculeSelection(); iter != World::getInstance().endMoleculeSelection(); ++iter) { 53 53 mol = iter->second; 54 54 ASSERT(mol != NULL, "No molecule has been picked for fragmentation."); -
src/Parser/FormatParser.cpp
rab4a33 r38f991 33 33 { 34 34 ChangeTracker::getInstance().signOn(this); 35 World::getInstance().signOn(this, World::getInstance().getChannel(World::AtomInserted)); 36 World::getInstance().signOn(this, World::getInstance().getChannel(World::AtomRemoved)); 35 37 } 36 38 … … 40 42 FormatParser::~FormatParser() { 41 43 ChangeTracker::getInstance().signOff(this); 44 World::getInstance().signOff(this, World::getInstance().getChannel(World::AtomInserted)); 45 World::getInstance().signOff(this, World::getInstance().getChannel(World::AtomRemoved)); 42 46 } 43 47 … … 57 61 58 62 /** 63 * With this, each format parser is informed about specific changes in the World. 64 */ 65 void FormatParser::recieveNotification(Observable *publisher, Notification_ptr notification) { 66 switch (notification->getChannelNo()) { 67 case World::AtomInserted: 68 AtomInserted(World::getInstance().lastChanged<atom>()->getId()); 69 break; 70 case World::AtomRemoved: 71 AtomRemoved(World::getInstance().lastChanged<atom>()->getId()); 72 break; 73 default: 74 ASSERT(0, 75 "FormatParser::recieveNotification() - unknown notification " 76 +toString(notification->getChannelNo())+" received."); 77 break; 78 } 79 } 80 81 /** 59 82 * The observable can tell when it dies. 60 83 */ -
src/Parser/FormatParser.hpp
rab4a33 r38f991 31 31 virtual void load(std::istream* file)=0; 32 32 void setOstream(std::ostream* file); 33 34 protected: 33 35 void update(Observable *publisher); 36 void recieveNotification(Observable *publisher, Notification_ptr notification); 34 37 void subjectKilled(Observable *publisher); 38 39 // these functions are called when atoms are inserted or removed 40 virtual void AtomInserted(atomId_t) {}; 41 virtual void AtomRemoved(atomId_t) {}; 35 42 36 43 private: -
src/World.cpp
rab4a33 r38f991 191 191 192 192 void World::destroyMolecule(moleculeId_t id){ 193 OBSERVE;194 193 molecule *mol = molecules[id]; 195 194 ASSERT(mol,"Molecule id that was meant to be destroyed did not exist"); 196 _lastchangedmol = mol; 197 NOTIFY(MoleculeRemoved); 195 // give notice about immediate removal 196 { 197 OBSERVE; 198 _lastchangedmol = mol; 199 NOTIFY(MoleculeRemoved); 200 } 198 201 DeleteMolecule(mol); 202 if (isMoleculeSelected(id)) 203 selectedMolecules.erase(id); 199 204 molecules.erase(id); 200 205 releaseMoleculeId(id); … … 239 244 } 240 245 DeleteAtom(atom); 246 if (isAtomSelected(id)) 247 selectedAtoms.erase(id); 241 248 atoms.erase(id); 242 249 releaseAtomId(id); … … 765 772 } 766 773 774 World::AtomSelectionConstIterator World::beginAtomSelection() const{ 775 return selectedAtoms.begin(); 776 } 777 778 World::AtomSelectionConstIterator World::endAtomSelection() const{ 779 return selectedAtoms.end(); 780 } 781 767 782 768 783 World::MoleculeSelectionIterator World::beginMoleculeSelection(){ … … 771 786 772 787 World::MoleculeSelectionIterator World::endMoleculeSelection(){ 788 return selectedMolecules.end(); 789 } 790 791 World::MoleculeSelectionConstIterator World::beginMoleculeSelection() const{ 792 return selectedMolecules.begin(); 793 } 794 795 World::MoleculeSelectionConstIterator World::endMoleculeSelection() const{ 773 796 return selectedMolecules.end(); 774 797 } -
src/World.hpp
rab4a33 r38f991 356 356 AtomSelectionIterator beginAtomSelection(); 357 357 AtomSelectionIterator endAtomSelection(); 358 typedef AtomSet::const_iterator AtomSelectionConstIterator; 359 AtomSelectionConstIterator beginAtomSelection() const; 360 AtomSelectionConstIterator endAtomSelection() const; 358 361 359 362 typedef MoleculeSet::iterator MoleculeSelectionIterator; 360 363 MoleculeSelectionIterator beginMoleculeSelection(); 361 364 MoleculeSelectionIterator endMoleculeSelection(); 365 typedef MoleculeSet::const_iterator MoleculeSelectionConstIterator; 366 MoleculeSelectionConstIterator beginMoleculeSelection() const; 367 MoleculeSelectionConstIterator endMoleculeSelection() const; 362 368 363 369 protected:
Note:
See TracChangeset
for help on using the changeset viewer.