Changeset f01769 for src/molecule.cpp


Ignore:
Timestamp:
Jul 24, 2015, 4:44:34 PM (10 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, Candidate_v1.7.0, 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:
a58c16
Parents:
1259df
git-author:
Frederik Heber <heber@…> (06/01/15 16:57:36)
git-committer:
Frederik Heber <heber@…> (07/24/15 16:44:34)
Message:

Replaced World::getAtom() wherever possible by const version.

  • some AtomSet member functions now have const atom ptr instead of atom ptr.
  • molecule can return const and non-const AtomSet.
  • added FromIdToConstAtom to allow iterate through atoms in molecule (which are stored by id, not by ptr) in const fashion.
  • in molecule::isInMolecule() is now const, ::CopyMolecule..() is non-const (because copying involves father atom who is stored non-const).
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/molecule.cpp

    r1259df rf01769  
    242242    NOTIFY(AtomRemoved);
    243243  }
    244   const_iterator iter = find(key);
    245   if (iter != end()){
     244  const_iterator iter = const_cast<const molecule &>(*this).find(key);
     245  if (iter != const_cast<const molecule &>(*this).end()){
    246246    ++iter;
    247247    atomIds.erase( key->getId() );
     
    285285}
    286286
    287 World::AtomComposite molecule::getAtomSet() const
     287World::AtomComposite molecule::getAtomSet()
    288288{
    289289  World::AtomComposite vector_of_atoms;
    290290  for (molecule::iterator iter = begin(); iter != end(); ++iter)
     291    vector_of_atoms.push_back(*iter);
     292  return vector_of_atoms;
     293}
     294
     295World::ConstAtomComposite molecule::getAtomSet() const
     296{
     297  World::ConstAtomComposite vector_of_atoms;
     298  for (molecule::const_iterator iter = begin(); iter != end(); ++iter)
    291299    vector_of_atoms.push_back(*iter);
    292300  return vector_of_atoms;
     
    609617 * \return copy of molecule
    610618 */
    611 molecule *molecule::CopyMolecule(const Vector &offset) const
     619molecule *molecule::CopyMolecule(const Vector &offset)
    612620{
    613621  molecule *copy = World::getInstance().createMolecule();
     
    622630
    623631  // copy all bonds
    624   for(const_iterator AtomRunner = begin(); AtomRunner != end(); ++AtomRunner) {
     632  for(const_iterator AtomRunner = const_cast<const molecule &>(*this).begin();
     633      AtomRunner != const_cast<const molecule &>(*this).end();
     634      ++AtomRunner) {
    625635    const BondList& ListOfBonds = (*AtomRunner)->getListOfBonds();
    626636    for(BondList::const_iterator BondRunner = ListOfBonds.begin();
     
    676686 * @param three vectors forming the matrix that defines the shape of the parallelpiped
    677687 */
    678 molecule* molecule::CopyMoleculeFromSubRegion(const Shape &region) const {
     688molecule* molecule::CopyMoleculeFromSubRegion(const Shape &region) {
    679689  molecule *copy = World::getInstance().createMolecule();
    680690
     
    689699
    690700  // copy all bonds
    691   for(molecule::const_iterator AtomRunner = begin(); AtomRunner != end(); ++AtomRunner) {
     701  for(molecule::const_iterator AtomRunner = const_cast<const molecule &>(*this).begin();
     702      AtomRunner != const_cast<const molecule &>(*this).end();
     703      ++AtomRunner) {
    692704    const BondList& ListOfBonds = (*AtomRunner)->getListOfBonds();
    693705    for(BondList::const_iterator BondRunner = ListOfBonds.begin();
     
    821833 * @return true - is member, false - is not
    822834 */
    823 bool molecule::isInMolecule(const atom * const _atom)
     835bool molecule::isInMolecule(const atom * const _atom) const
    824836{
    825837  ASSERT(_atom->getMolecule() == this,
     
    934946 * \todo make this with a good sort O(n), not O(n^2)
    935947 */
    936 int * molecule::GetFatherSonAtomicMap(molecule *OtherMolecule)
     948int * molecule::GetFatherSonAtomicMap(const molecule * const OtherMolecule)
    937949{
    938950  LOG(3, "Begin of GetFatherAtomicMap.");
     
    947959    std::stringstream output;
    948960    output << "Map is ";
    949     for (molecule::const_iterator iter = begin(); iter != end(); ++iter) {
     961    for (molecule::const_iterator iter = const_cast<const molecule &>(*this).begin();
     962        iter != const_cast<const molecule &>(*this).end();
     963        ++iter) {
    950964      if ((*iter)->getFather() == NULL) {
    951965        AtomicMap[(*iter)->getNr()] = -2;
Note: See TracChangeset for help on using the changeset viewer.