source: src/Atom/CopyAtoms/CopyAtomsInterface.hpp@ 4464ef

Action_Thermostats Add_AtomRandomPerturbation Add_RotateAroundBondAction Add_SelectAtomByNameAction Adding_Graph_to_ChangeBondActions Adding_MD_integration_tests Adding_StructOpt_integration_tests Automaking_mpqc_open AutomationFragmentation_failures Candidate_v1.6.0 Candidate_v1.6.1 ChangeBugEmailaddress ChangingTestPorts ChemicalSpaceEvaluator Combining_Subpackages Debian_Package_split Debian_package_split_molecuildergui_only Disabling_MemDebug Docu_Python_wait EmpiricalPotential_contain_HomologyGraph_documentation Enable_parallel_make_install Enhance_userguide Enhanced_StructuralOptimization Enhanced_StructuralOptimization_continued Example_ManyWaysToTranslateAtom Exclude_Hydrogens_annealWithBondGraph FitPartialCharges_GlobalError Fix_ChronosMutex Fix_StatusMsg Fix_StepWorldTime_single_argument Fix_Verbose_Codepatterns ForceAnnealing_goodresults ForceAnnealing_oldresults ForceAnnealing_tocheck ForceAnnealing_with_BondGraph ForceAnnealing_with_BondGraph_continued ForceAnnealing_with_BondGraph_continued_betteresults ForceAnnealing_with_BondGraph_contraction-expansion GeometryObjects Gui_displays_atomic_force_velocity IndependentFragmentGrids_IntegrationTest JobMarket_RobustOnKillsSegFaults JobMarket_StableWorkerPool JobMarket_unresolvable_hostname_fix ODR_violation_mpqc_open PartialCharges_OrthogonalSummation PythonUI_with_named_parameters QtGui_reactivate_TimeChanged_changes Recreated_GuiChecks RotateToPrincipalAxisSystem_UndoRedo StoppableMakroAction Subpackage_levmar Subpackage_vmg ThirdParty_MPQC_rebuilt_buildsystem TremoloParser_IncreasedPrecision TremoloParser_MultipleTimesteps Ubuntu_1604_changes stable
Last change on this file since 4464ef was 9e1d01, checked in by Frederik Heber <heber@…>, 13 years ago

Added CopyAtoms structure.

  • this creates a copy of a vector of atoms with as much depth as desired by the user.
  • this is a hierarchy of functors that each add additional functionality such as also re-creating the bonds, ...
  • Property mode set to 100644
File size: 1.9 KB
Line 
1/*
2 * CopyAtomsInterface.hpp
3 *
4 * Created on: Mar 17, 2012
5 * Author: heber
6 */
7
8#ifndef COPYATOMSINTERFACE_HPP_
9#define COPYATOMSINTERFACE_HPP_
10
11// include config.h
12#ifdef HAVE_CONFIG_H
13#include <config.h>
14#endif
15
16#include <vector>
17
18class atom;
19class CopyAtomsInterfaceTest;
20
21/** This class defines a general interface for functors that copy a Vector of Atoms.
22 *
23 * I.e. we can implement here multiple ways of copying a vector of atoms, with or
24 * without bonds, with or without saturation, ...
25 *
26 */
27class CopyAtomsInterface
28{
29 /// grant unit test access
30 friend class CopyAtomsInterfaceTest;
31public:
32 typedef std::vector<atom*> AtomVector;
33 typedef std::vector<const atom*> ConstAtomVector;
34
35 /** Constructor.
36 *
37 */
38 CopyAtomsInterface()
39 {}
40
41 /** Destructor.
42 *
43 */
44 virtual ~CopyAtomsInterface()
45 {}
46
47 /** Function that just stores given atoms in CopyAtomsInterface::OriginalAtoms.
48 *
49 * We reset ourselves.
50 * We initialize CopyAtomsInterface::CopiedAtoms with the size of \a _atoms
51 * but NULL entities.
52 *
53 * \note If you override this function, always first call the implementation
54 * in the original class, then continue with implementation in derived class.
55 *
56 * @param _atoms atoms to copy
57 */
58 virtual void operator()(const AtomVector &_atoms)
59 {
60 // clear ourselves
61 reset();
62 CopiedAtoms.resize(_atoms.size(), NULL);
63 }
64
65 /** Getter for CopiedAtoms to allow outside transformations.
66 *
67 * @return CopiedAtoms
68 */
69 AtomVector& getCopiedAtoms() {
70 return CopiedAtoms;
71 }
72
73private:
74 /// forbid copy cstor as it may change class behavior
75 CopyAtomsInterface(const CopyAtomsInterface &);
76
77 /** Internal helper to reset all member variables.
78 *
79 */
80 void reset()
81 {
82 CopiedAtoms.clear();
83 }
84
85protected:
86 //!> set of copied atoms, this is to allow later transformations in derived classes
87 AtomVector CopiedAtoms;
88};
89
90#endif /* COPYATOMSINTERFACE_HPP_ */
Note: See TracBrowser for help on using the repository browser.