- Timestamp:
- Feb 22, 2012, 11:26:49 AM (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:
- 3dfd9c
- Parents:
- 52ed5b
- git-author:
- Frederik Heber <heber@…> (01/06/12 17:53:45)
- git-committer:
- Frederik Heber <heber@…> (02/22/12 11:26:49)
- Location:
- src
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Descriptors/AtomOfMoleculeSelectionDescriptor.cpp
r52ed5b rea7a50 37 37 38 38 atom* AtomOfMoleculeSelectionDescriptor_impl::find(){ 39 World &instance = World::getInstance();40 for (World::MoleculeSe lectionIterator iter = instance.beginMoleculeSelection();41 iter != instance.endMoleculeSelection();39 World::MoleculeSet &set = getSelectedMolecules(); 40 for (World::MoleculeSet::internal_iterator iter = set.begin_internal(); 41 iter != set.end_internal(); 42 42 ++iter) { 43 43 if (iter->second->begin() != iter->second->end()) … … 49 49 std::vector<atom*> AtomOfMoleculeSelectionDescriptor_impl::findAll(){ 50 50 std::vector<atom*> res; 51 World &instance = World::getInstance();52 for (World::MoleculeSe lectionIterator iter = instance.beginMoleculeSelection();53 iter != instance.endMoleculeSelection();51 World::MoleculeSet &set = getSelectedMolecules(); 52 for (World::MoleculeSet::internal_iterator iter = set.begin_internal(); 53 iter != set.end_internal(); 54 54 ++iter) { 55 55 std::copy(iter->second->begin(), iter->second->end(), res.begin()); … … 58 58 } 59 59 60 World::MoleculeSet& AtomOfMoleculeSelectionDescriptor_impl::getSelectedMolecules(){ 61 return World::getInstance().selectedMolecules; 62 } 63 60 64 AtomDescriptor AtomsByMoleculeSelection(){ 61 65 return AtomDescriptor(AtomDescriptor::impl_ptr(new AtomOfMoleculeSelectionDescriptor_impl())); -
src/Descriptors/AtomOfMoleculeSelectionDescriptor_impl.hpp
r52ed5b rea7a50 26 26 virtual atom* find(); 27 27 virtual std::vector<atom*> findAll(); 28 29 World::MoleculeSet& getSelectedMolecules(); 28 30 }; 29 31 -
src/Descriptors/MoleculeNameDescriptor.cpp
r52ed5b rea7a50 42 42 return MoleculeDescriptor(MoleculeDescriptor::impl_ptr(new MoleculeNameDescriptor_impl(name))); 43 43 } 44 45 molecule *MoleculeNameDescriptor_impl::find(){46 World::MoleculeSet &molecules = getMolecules();47 World::MoleculeSet::iterator res = molecules.begin();48 for (; res != molecules.end(); res++)49 if (res->second->name == name)50 break;51 return (res!=molecules.end())?((*res).second):0;52 }53 54 vector<molecule*> MoleculeNameDescriptor_impl::findAll(){55 vector<molecule *> foundMolecules;56 World::MoleculeSet &molecules = getMolecules();57 World::MoleculeSet::iterator res = molecules.begin();58 for (; res != molecules.end(); res++)59 if (res->second->name == name)60 foundMolecules.push_back(res->second);61 return foundMolecules;62 } -
src/Descriptors/MoleculeNameDescriptor_impl.hpp
r52ed5b rea7a50 18 18 bool predicate(std::pair<moleculeId_t,molecule*> molecule); 19 19 20 protected:21 virtual molecule *find();22 virtual std::vector<molecule*> findAll();23 20 private: 24 21 std::string name; -
src/Descriptors/MoleculeOfAtomSelectionDescriptor.cpp
r52ed5b rea7a50 43 43 44 44 molecule* MoleculeOfAtomSelectionDescriptor_impl::find(){ 45 World &instance = World::getInstance();46 for (World::AtomSe lectionIterator iter = instance.beginAtomSelection();47 iter != instance.endAtomSelection();45 World::AtomSet &set = getSelectedAtoms(); 46 for (World::AtomSet::internal_iterator iter = set.begin_internal(); 47 iter != set.end_internal(); 48 48 ++iter) { 49 if (iter->second->getMolecule() != NULL)49 if (iter->second->getMolecule()) 50 50 return iter->second->getMolecule(); 51 51 } … … 57 57 std::set<molecule*> temp; 58 58 std::pair< std::set<molecule*>::iterator, bool> inserter; 59 World &instance = World::getInstance();60 for (World::AtomSe lectionIterator iter = instance.beginAtomSelection();61 iter != instance.endAtomSelection();59 World::AtomSet &set = getSelectedAtoms(); 60 for (World::AtomSet::internal_iterator iter = set.begin_internal(); 61 iter != set.end_internal(); 62 62 ++iter) { 63 if (iter->second->getMolecule() != NULL) {63 if (iter->second->getMolecule()) { 64 64 inserter = temp.insert( iter->second->getMolecule() ); 65 65 if (inserter.second) … … 70 70 } 71 71 72 World::AtomSet& MoleculeOfAtomSelectionDescriptor_impl::getSelectedAtoms(){ 73 return World::getInstance().selectedAtoms; 74 } 75 72 76 MoleculeDescriptor MoleculesByAtomSelection(){ 73 77 return MoleculeDescriptor(MoleculeDescriptor::impl_ptr(new MoleculeOfAtomSelectionDescriptor_impl())); -
src/Descriptors/MoleculeOfAtomSelectionDescriptor_impl.hpp
r52ed5b rea7a50 26 26 virtual molecule* find(); 27 27 virtual std::vector<molecule*> findAll(); 28 29 World::AtomSet& getSelectedAtoms(); 28 30 }; 29 31 -
src/Descriptors/MoleculeOrderDescriptor.cpp
r52ed5b rea7a50 45 45 } 46 46 47 molecule *MoleculeOrderDescriptor_impl::find(){ 47 World::MoleculeSet& MoleculeOrderDescriptor_impl::getMolecules() 48 { 49 return World::getInstance().molecules; 50 } 51 52 molecule* MoleculeOrderDescriptor_impl::find() { 48 53 World::MoleculeSet &molecules = getMolecules(); 49 54 … … 53 58 return NULL; 54 59 } else if (id > 0) { 55 World::MoleculeSet:: const_iterator res = molecules.begin();56 for (; res != molecules.end (); ++res) { // when iterator is normal, ++ goes forward!60 World::MoleculeSet::internal_iterator res = molecules.begin_internal(); 61 for (; res != molecules.end_internal(); ++res) { // when iterator is normal, ++ goes forward! 57 62 ++i; 58 63 if (id == i) … … 61 66 mol = res->second; 62 67 } else { 63 World::MoleculeSet:: const_reverse_iterator res = molecules.rbegin();64 for (; res != molecules.rend (); --res) { // when iterator is reverse, ++ goes backward!68 World::MoleculeSet::reverse_internal_iterator res = molecules.rbegin_internal(); 69 for (; res != molecules.rend_internal(); --res) { // when iterator is reverse, ++ goes backward! 65 70 --i; 66 71 if (id == i) -
src/Descriptors/MoleculeOrderDescriptor_impl.hpp
r52ed5b rea7a50 21 21 virtual molecule *find(); 22 22 virtual std::vector<molecule*> findAll(); 23 24 World::MoleculeSet& getMolecules(); 25 23 26 private: 24 27 int id; -
src/Descriptors/MoleculePtrDescriptor.cpp
r52ed5b rea7a50 44 44 return MoleculeDescriptor(MoleculeDescriptor::impl_ptr(new MoleculePtrDescriptor_impl(ptr))); 45 45 } 46 47 molecule *MoleculePtrDescriptor_impl::find(){48 World::MoleculeSet &molecules = getMolecules();49 World::MoleculeSet::iterator res = molecules.find(ptr->getId());50 return (res!=molecules.end())?((*res).second):0;51 }52 53 vector<molecule*> MoleculePtrDescriptor_impl::findAll(){54 molecule *res = find();55 return (res)?(vector<molecule*>(1,res)):(vector<molecule*>());56 } -
src/Descriptors/MoleculePtrDescriptor_impl.hpp
r52ed5b rea7a50 20 20 bool predicate(std::pair<moleculeId_t,molecule*> molecule); 21 21 22 protected:23 virtual molecule *find();24 virtual std::vector<molecule*> findAll();25 22 private: 26 23 molecule * ptr; -
src/World.hpp
r52ed5b rea7a50 87 87 // coupling with descriptors over selection 88 88 friend class AtomSelectionDescriptor_impl; 89 friend class AtomOfMoleculeSelectionDescriptor_impl; 90 friend class MoleculeOfAtomSelectionDescriptor_impl; 91 friend class MoleculeOrderDescriptor_impl; 89 92 friend class MoleculeSelectionDescriptor_impl; 90 93 -
src/documentation/constructs/descriptors.dox
r52ed5b rea7a50 73 73 * - currently selected molecules: MoleculesBySelection() 74 74 * 75 * \subsection descriptors-world Descriptors and the World 75 76 * 76 * \date 2011-10-31 77 * In the World we make heavy use of descriptors. However, the World is also 78 * responsibly of informing connected Observers about removal or insertion of 79 * atoms or molecules. 80 * That's why its containers are protectedly constructed as ObservedContainers. 81 * Whenever you walk through them with a normal iterator, afterwards an update() 82 * is initiated. Only if you use a const_interator, this is prevented. But this 83 * at the natural disadvantage that the reference may only be used in constant 84 * environment. 85 * Descriptors however may return non-const reference. And we rely heavily on 86 * these to cheaply give us the correct reference for a given id, element type, 87 * and so on. So how do we do this? 88 * 89 * Some of the descriptors are friends of the World and may use its internal 90 * containers directly, see AtomSelectionDescriptor_impl. Thus it can quickly 91 * walk through the atoms and find the correct one without causing huge delays 92 * by unnecessarily calling forth an update(). 93 * 94 * 95 * \date 2012-01-06 77 96 * 78 97 */
Note:
See TracChangeset
for help on using the changeset viewer.