source: src/CodePatterns/Observer/ObservedContainer_impl.hpp@ 084729c

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_CodePatterns Subpackage_JobMarket Subpackage_levmar Subpackage_mpqc_open Subpackage_vmg ThirdParty_MPQC_rebuilt_buildsystem TremoloParser_IncreasedPrecision TremoloParser_MultipleTimesteps Ubuntu_1604_changes stable
Last change on this file since 084729c was 084729c, checked in by Frederik Heber <heber@…>, 8 years ago

Squashed 'ThirdParty/CodePatterns/' content from commit c1e1041

git-subtree-dir: ThirdParty/CodePatterns
git-subtree-split: c1e10418c454f98be2f43d93167642b0008428fc

  • Property mode set to 100644
File size: 8.2 KB
Line 
1/*
2 * AtomSet_impl.hpp
3 *
4 * Created on: Jul 8, 2010
5 * Author: crueger
6 */
7
8#ifndef OBSERVEDCONTAINER_IMPL_HPP_
9#define OBSERVEDCONTAINER_IMPL_HPP_
10
11// include config.h
12#ifdef HAVE_CONFIG_H
13#include <config.h>
14#endif
15
16#include "CodePatterns/Observer/ObservedContainer.hpp"
17
18template <class Container, class Iterator>
19inline ObservedContainer<Container, Iterator>::ObservedContainer(Observable* _obs) :
20 obs(_obs)
21{}
22
23template <class Container, class Iterator>
24inline ObservedContainer<Container, Iterator>::ObservedContainer(const ObservedContainer<Container, Iterator> &src) :
25 content(src.content),
26 obs(src.obs)
27{}
28
29template <class Container, class Iterator>
30inline ObservedContainer<Container, Iterator>::~ObservedContainer()
31{}
32
33template <class Container, class Iterator>
34inline
35ObservedContainer<Container, Iterator>&
36ObservedContainer<Container, Iterator>::operator=(const ObservedContainer<Container, Iterator> &rhs){
37 content=rhs.content;
38 return *this;
39}
40
41template <class Container, class Iterator>
42inline
43typename ObservedContainer<Container, Iterator>::iterator
44ObservedContainer<Container, Iterator>::begin(){
45 return ObservedContainer<Container, Iterator>::iterator(content.begin(),obs);
46}
47
48template <class Container, class Iterator>
49inline
50typename ObservedContainer<Container, Iterator>::const_iterator
51ObservedContainer<Container, Iterator>::begin() const{
52 return content.begin();
53}
54
55template <class Container, class Iterator>
56inline
57typename ObservedContainer<Container, Iterator>::iterator
58ObservedContainer<Container, Iterator>::end(){
59 return ObservedContainer<Container, Iterator>::iterator(content.end(),obs);
60}
61
62template <class Container, class Iterator>
63inline
64typename ObservedContainer<Container, Iterator>::const_iterator
65ObservedContainer<Container, Iterator>::end() const{
66 return content.end();
67}
68
69template <class Container, class Iterator>
70inline
71typename ObservedContainer<Container, Iterator>::reverse_iterator
72ObservedContainer<Container, Iterator>::rbegin(){
73 return reverse_iterator(end());
74}
75
76template <class Container, class Iterator>
77inline
78typename ObservedContainer<Container, Iterator>::const_reverse_iterator
79ObservedContainer<Container, Iterator>::rbegin() const{
80 return const_reverse_iterator(end());
81}
82
83template <class Container, class Iterator>
84inline
85typename ObservedContainer<Container, Iterator>::reverse_iterator
86ObservedContainer<Container, Iterator>::rend(){
87 return reverse_iterator(begin());
88}
89
90template <class Container, class Iterator>
91inline
92typename ObservedContainer<Container, Iterator>::const_reverse_iterator
93ObservedContainer<Container, Iterator>::rend() const{
94 return const_reverse_iterator(begin());
95}
96
97template <class Container, class Iterator>
98inline bool ObservedContainer<Container, Iterator>::empty() const{
99 return content.empty();
100}
101
102template <class Container, class Iterator>
103inline size_t ObservedContainer<Container, Iterator>::size() const{
104 return content.size();
105}
106
107template <class Container, class Iterator>
108inline size_t ObservedContainer<Container, Iterator>::max_size() const{
109 return content.max_size();
110}
111
112template <class Container, class Iterator>
113inline
114typename ObservedContainer<Container, Iterator>::mapped_type &
115ObservedContainer<Container, Iterator>::operator[](const key_type &key){
116 return content[key];
117}
118
119template <class Container, class Iterator>
120inline
121std::pair<typename ObservedContainer<Container, Iterator>::iterator,bool>
122ObservedContainer<Container, Iterator>::insert (const value_type &value){
123 std::pair<typename set_t::iterator,bool> res = content.insert(value);
124 return std::make_pair(iterator(res.first,obs),res.second);
125}
126
127template <class Container, class Iterator>
128inline size_t ObservedContainer<Container, Iterator>::erase ( const key_type& x ){
129 return content.erase(x);
130}
131
132template <class Container, class Iterator>
133inline void ObservedContainer<Container, Iterator>::clear(){
134 content.clear();
135}
136
137template <class Container, class Iterator>
138inline
139typename ObservedContainer<Container, Iterator>::iterator
140ObservedContainer<Container, Iterator>::find ( const key_type& x ){
141 return iterator(content.find(x),obs);
142}
143
144template <class Container, class Iterator>
145inline
146typename ObservedContainer<Container, Iterator>::const_iterator
147ObservedContainer<Container, Iterator>::find ( const key_type& x ) const{
148 return content.find(x);
149}
150
151template <class Container, class Iterator>
152inline size_t ObservedContainer<Container, Iterator>::count ( const key_type& x ) const{
153 return content.count(x);
154}
155
156/************ Unprotected access ***************/
157
158template <class Container, class Iterator>
159inline
160typename ObservedContainer<Container, Iterator>::internal_iterator
161ObservedContainer<Container, Iterator>::begin_internal(){
162 return content.begin();
163}
164
165template <class Container, class Iterator>
166inline
167typename ObservedContainer<Container, Iterator>::internal_iterator
168ObservedContainer<Container, Iterator>::end_internal(){
169 return content.end();
170}
171
172template <class Container, class Iterator>
173inline
174typename ObservedContainer<Container, Iterator>::reverse_internal_iterator
175ObservedContainer<Container, Iterator>::rbegin_internal(){
176 return content.rbegin();
177}
178
179template <class Container, class Iterator>
180inline
181typename ObservedContainer<Container, Iterator>::reverse_internal_iterator
182ObservedContainer<Container, Iterator>::rend_internal(){
183 return content.rend();
184}
185
186template <class Container, class Iterator>
187inline
188typename ObservedContainer<Container, Iterator>::set_t &
189ObservedContainer<Container, Iterator>::getContent(){
190 return content;
191}
192
193/************ Explicit instantiation ***************/
194
195#define CONSTRUCT_OBSERVEDCONTAINER(container, name) \
196 template ObservedContainer< container, name >& ObservedContainer< container, name >::operator=(const ObservedContainer< container, name >&); \
197 template ObservedContainer< container, name >::iterator ObservedContainer< container, name >::begin(); \
198 template ObservedContainer< container, name >::const_iterator ObservedContainer< container, name >::begin() const; \
199 template ObservedContainer< container, name >::iterator ObservedContainer< container, name >::end(); \
200 template ObservedContainer< container, name >::const_iterator ObservedContainer< container, name >::end() const; \
201 template ObservedContainer< container, name >::reverse_iterator ObservedContainer< container, name >::rbegin(); \
202 template ObservedContainer< container, name >::const_reverse_iterator ObservedContainer< container, name >::rbegin() const; \
203 template ObservedContainer< container, name >::reverse_iterator ObservedContainer< container, name >::rend(); \
204 template ObservedContainer< container, name >::const_reverse_iterator ObservedContainer< container, name >::rend() const; \
205 template bool ObservedContainer< container, name >::empty() const; \
206 template size_t ObservedContainer< container, name >::size() const; \
207 template size_t ObservedContainer< container, name >::max_size() const; \
208 template ObservedContainer< container, name >::mapped_type &ObservedContainer< container, name >::operator[](const key_type&); \
209 template std::pair<ObservedContainer< container, name >::iterator,bool> ObservedContainer< container, name >::insert (const value_type&); \
210 template size_t ObservedContainer< container, name >::erase ( const key_type& x ); \
211 template void ObservedContainer< container, name >::clear(); \
212 template ObservedContainer< container, name >::iterator ObservedContainer< container, name >::find ( const key_type& x ); \
213 template ObservedContainer< container, name >::const_iterator ObservedContainer< container, name >::find ( const key_type& x ) const; \
214 template size_t ObservedContainer< container, name >::count ( const key_type& x ) const; \
215 template ObservedContainer< container, name >::internal_iterator ObservedContainer< container, name >::begin_internal(); \
216 template ObservedContainer< container, name >::reverse_internal_iterator ObservedContainer< container, name >::rbegin_internal(); \
217 template ObservedContainer< container, name >::internal_iterator ObservedContainer< container, name >::end_internal(); \
218 template ObservedContainer< container, name >::reverse_internal_iterator ObservedContainer< container, name >::rend_internal(); \
219
220#endif /* OBSERVEDCONTAINER_IMPL_HPP_ */
Note: See TracBrowser for help on using the repository browser.