VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtConfigurationCollection.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2007 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #ifndef DtConfigurationCollection_H_
11 #define DtConfigurationCollection_H_
12 
13 #include <algorithm>
14 #include <vector>
15 
16 #include <boost/serialization/split_member.hpp>
17 #include <boost/serialization/set.hpp>
18 
19 namespace makVrv
20 {
22  template <typename ConfigurationType>
24  {
25  public:
26  typedef std::vector<ConfigurationType*> Configurations;
27  //typedef ConfigurationType ConfigurationType;
28  typedef typename Configurations::iterator iterator;
29  typedef typename Configurations::const_iterator const_iterator;
30 
32  {
33  }
34 
37  {
39  }
40 
42  {
43  if(this == &copy) return *this;
44  destroyAll();
46  return *this;
47  }
48 
50  {
51  destroyAll();
52  }
53 
54 
55  friend class boost::serialization::access;
59 
60  template<class Archive>
61  void serialize(Archive & ar, const unsigned int version)
62  {
64  }
65 
66 
68  virtual ConfigurationType& add(const ConfigurationType& orig)
69  {
70  typename Configurations::iterator curIter = myConfigurations.begin();
71  typename Configurations::iterator endIter = myConfigurations.end();
72  for(;curIter != endIter;++curIter)
73  {
74  if((*curIter)->name() == orig.name())
75  {
76  DtTHROW_NEW(DtInvalidInput,"A configuration with that name"
77  "already exists in the collection.");
78  }
79  }
80 
81  ConfigurationType* newConfig = new ConfigurationType(orig);
82  myConfigurations.push_back( newConfig );
83  return *newConfig;
84  }
85 
99  virtual void destroyConfiguration(ConfigurationType* config)
100  {
101  typename Configurations::iterator iter = std::find(myConfigurations.begin(), myConfigurations.end(), config);
102  if(iter == myConfigurations.end())
103  {
104  return;
105  }
106 
107  myConfigurations.erase(iter);
108  delete config;
109  }
110 
111  size_t size() const { return myConfigurations.size(); }
112 
113  iterator begin() { return myConfigurations.begin(); }
114  const_iterator begin() const { return myConfigurations.begin(); }
115 
116  iterator end() { return myConfigurations.end(); }
117  const_iterator end() const { return myConfigurations.end(); }
118 
119 
122  {
123  return myConfigurations;
124  }
125 
127  void addConfigurations(const Configurations& configs)
128  {
129  typename Configurations::const_iterator curIter = configs.begin();
130  typename Configurations::const_iterator endIter = configs.end();
131  for(;curIter != endIter;++curIter)
132  {
133  add(**curIter);
134  }
135  }
136 
138  void destroyAll()
139  {
140  typename Configurations::iterator curIter = myConfigurations.begin();
141  typename Configurations::iterator endIter = myConfigurations.end();
142  for(;curIter != endIter;++curIter)
143  {
144  delete *curIter;
145  }
146  myConfigurations.clear();
147  }
148 
151  virtual ConfigurationType* findConfiguration(const std::string& name)
152  {
153  typename Configurations::iterator curIter = myConfigurations.begin();
154  typename Configurations::iterator endIter = myConfigurations.end();
155  for(;curIter != endIter;++curIter)
156  {
157  if((*curIter)->name() == name)
158  {
159  return (*curIter);
160  }
161  }
162  return 0;
163  }
164 
167  virtual const ConfigurationType* findConfiguration(const std::string& name) const
168  {
169  typename Configurations::const_iterator curIter = myConfigurations.begin();
170  typename Configurations::const_iterator endIter = myConfigurations.end();
171  for(;curIter != endIter;++curIter)
172  {
173  if((*curIter)->name() == name)
174  {
175  return (*curIter);
176  }
177  }
178  return 0;
179  }
180 
181  protected:
182 
184 
185  };
186 }
187 
188 #endif
189 
const_iterator begin() const
Definition: DtConfigurationCollection.h:114
virtual ~DtConfigurationCollection()
Definition: DtConfigurationCollection.h:49
Configurations::iterator iterator
Definition: DtConfigurationCollection.h:28
const Configurations & configurations() const
Get the channels for this window.
Definition: DtConfigurationCollection.h:121
std::vector< ConfigurationType * > Configurations
Definition: DtConfigurationCollection.h:26
DtConfigurationCollection()
Definition: DtConfigurationCollection.h:31
virtual const ConfigurationType * findConfiguration(const std::string &name) const
Return the configuration associated with name or null if one doesn&#39;t exist.
Definition: DtConfigurationCollection.h:167
void serialize(Archive &ar, const unsigned int version)
When the class Archive corresponds to an output archive, the &amp; operator is defined similar to &lt;&lt;...
Definition: DtConfigurationCollection.h:61
virtual void destroyConfiguration(ConfigurationType *config)
Destroys a Channel configuration. Now the pointer must be a member of the channel Configuration...
Definition: DtConfigurationCollection.h:99
DtConfigurationCollection & operator=(const DtConfigurationCollection &copy)
Definition: DtConfigurationCollection.h:41
void destroyAll()
Destroys all channel configurations.
Definition: DtConfigurationCollection.h:138
A collection of configurations.
Definition: DtConfigurationCollection.h:23
iterator begin()
Definition: DtConfigurationCollection.h:113
virtual ConfigurationType * findConfiguration(const std::string &name)
Return the configuration associated with name or null if one doesn&#39;t exist.
Definition: DtConfigurationCollection.h:151
iterator end()
Definition: DtConfigurationCollection.h:116
size_t size() const
Definition: DtConfigurationCollection.h:111
Configurations::const_iterator const_iterator
Definition: DtConfigurationCollection.h:29
void addConfigurations(const Configurations &configs)
Add several configurations.
Definition: DtConfigurationCollection.h:127
#define DT_SERIALIZE_MEMBER(NAME)
Serialize a Member whose name starts with &#39;my&#39; If your member does not have that name, use Dt_SERIALIZE.
Definition: DtSerialize.h:158
virtual ConfigurationType & add(const ConfigurationType &orig)
Add a Channel configuration.
Definition: DtConfigurationCollection.h:68
DtConfigurationCollection(const DtConfigurationCollection &copy)
Definition: DtConfigurationCollection.h:35
Configurations myConfigurations
Definition: DtConfigurationCollection.h:183
const_iterator end() const
Definition: DtConfigurationCollection.h:117

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)