source: src/Descriptors/DescriptorBase.hpp@ 28c351

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
Last change on this file since 28c351 was 6e97e5, checked in by Tillmann Crueger <crueger@…>, 15 years ago

Added a generic Iterator that can be used to iterate only over certain parts of an internal data structure

  • Property mode set to 100644
File size: 2.2 KB
Line 
1/*
2 * DescriptorBase.hpp
3 *
4 * Created on: Mar 12, 2010
5 * Author: crueger
6 */
7
8#ifndef DESCRIPTORBASE_HPP_
9#define DESCRIPTORBASE_HPP_
10
11#include <vector>
12#include <boost/shared_ptr.hpp>
13
14/***
15 * Code in this file is not used.
16 *
17 * I was not able to figure out how to factor out the common code for
18 * descriptors and have given up :-( . If somebody else wants to have
19 * another shot just go ahead, but expect a hard ride from here on.
20 */
21
22template<class _Target,
23 class _Container>
24class DescriptorBase_impl;
25
26
27template<class _Target,
28 class _Container>
29class SelectiveIterator;
30
31template<class _Target,
32 class _Container>
33class DescriptorBase
34{
35 friend class DescriptorBase_impl<_Target,_Container>;
36 friend class SelectiveIterator<_Target,_Container>;
37
38
39 // expose the type of this descriptor to the public
40public:
41 typedef _Target Target;
42 typedef std::vector<Target> TargetVec;
43
44protected:
45 typedef _Container Container;
46 typedef typename Container::iterator iterator;
47
48 typedef DescriptorBase_impl<Target,Container> impl;
49 typedef boost::shared_ptr<impl> impl_ptr;
50
51
52public:
53
54 DescriptorBase();
55 DescriptorBase(const DescriptorBase&);
56 DescriptorBase(impl_ptr);
57 virtual ~DescriptorBase();
58
59 DescriptorBase& operator=(const DescriptorBase&);
60
61 /**
62 * forward Method to implementation
63 */
64 Target find(Container&);
65
66 /**
67 * forward Method to implementation
68 */
69 TargetVec findAll(Container&);
70
71
72private:
73 impl_ptr theImpl;
74};
75
76template<class _Target,
77 class _Container>
78DescriptorBase<_Target,_Container> AllX();
79
80template<class _Target,
81 class _Container>
82DescriptorBase<_Target,_Container> NoX();
83
84template<class _Target,
85 class _Container>
86DescriptorBase<_Target,_Container>
87 operator&&(DescriptorBase<_Target,_Container>&,
88 DescriptorBase<_Target,_Container>&);
89
90template<class _Target,
91 class _Container>
92DescriptorBase<_Target,_Container>
93 operator||(DescriptorBase<_Target,_Container>&,
94 DescriptorBase<_Target,_Container>&);
95
96template<class _Target,
97 class _Container>
98DescriptorBase<_Target,_Container>
99 operator!(DescriptorBase<_Target,_Container>&);
100
101#endif /* DESCRIPTORBASE_HPP_ */
Note: See TracBrowser for help on using the repository browser.