source: src/Descriptors/DescriptorBase.hpp@ 270bdf

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 270bdf was feb5d0, checked in by Frederik Heber <heber@…>, 12 years ago

Added SelectiveConstIterator, allows for constant iteration over Descriptor-constraint ranges.

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