VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
rwTemplatedMap.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2016 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
11 #include "vrfutil/rwList.h"
12 #include "vrfutil/iteratorBase.h"
14 
15 template <typename FirstType, typename SecondType>
17 {
18 public:
19 
21 
23 
25  DtReaderWriterRegistry* const parentRegistry = NULL,
26  const DtString& firstName = "first", const DtString& secondName = "second");
28  DtReaderWriterRegistry* const parentRegistry = NULL,
29  const DtString& firstName = "first", const DtString& secondName = "second");
30 
32  DtReaderWriterRegistry* const parentRegistry = NULL);
34 
36  virtual ~DtRwTemplatedPair() {};
37 
40 
42  bool operator==(const DtRwTemplatedPair&) const;
43 
45  virtual const FirstType& first() const { return myFirst; }
46 
48  virtual void setFirst(const FirstType& f) { myFirst = f; }
49 
51  virtual const SecondType& second() const { return mySecond; }
52 
54  virtual void setSecond(const SecondType& s) { mySecond = s; }
55 
57 
58  virtual DtString firstName() const { return myFirst.name().c_str(); }
59  virtual void setFirstName(const DtString& n) { myFirst.setName(n); }
61 
63 
64  virtual DtString secondName() const { return mySecond.name().c_str(); }
65  virtual void setSecondName(const DtString& n) { mySecond.setName(n); }
67 
68 protected:
69 
70  FirstType myFirst;
71  SecondType mySecond;
72 };
73 
74 namespace DtBufferSerialize
75 {
78  template <typename FirstType, typename SecondType>
80 
84  template <typename FirstType, typename SecondType>
85  char *encode(const DtRwTemplatedPair<FirstType, SecondType>& val, char *buffer);
86 
91  template <typename FirstType, typename SecondType>
92  const char *decode(DtRwTemplatedPair<FirstType, SecondType>& val, const char *buffer);
93 };
94 
95 
96 template <typename KeyType, typename ValType>
98 {
99 public:
101  typedef typename std::map<KeyType, ValType>::iterator iterator;
102  typedef typename std::map<KeyType, ValType>::const_iterator const_iterator;
103 
106 
108 
110  DtReaderWriterRegistry* parentRegistry = NULL,
111  const DtString& keyName = "key", const DtString& valueName = "value");
113  DtReaderWriterRegistry* parentRegistry = NULL,
114  const DtString& keyName = "key", const DtString& valueName = "value");
116 
119 
121  DtReaderWriterRegistry* parentRegistry = NULL);
122 
124  DtReaderWriterRegistry* parentRegistry = NULL);
126 
129  DtReaderWriterRegistry* parentRegistry = NULL);
130 
133 
135  virtual ~DtRwTemplatedMapPtr();
136 
138  virtual void removeAndDeleteAll();
139 
140  DtlObjPtr getData(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
141  const DtVariableBindingsList& variableBindings);
142 
144  virtual void prePutSelf();
145 
147  virtual void postGetSelf();
148 
151  virtual void setFromMap(const std::map<KeyType, ValType> sourceMap);
152 
154  virtual const std::map<KeyType, ValType>& convertToMap() const;
155 
157  virtual void clear() { return myMap.clear(); }
158 
160  virtual unsigned size() const { return myMap.size(); }
161 
163 
164  virtual iterator begin() { return myMap.begin(); }
165  virtual const_iterator begin() const { return myMap.begin(); }
167 
169 
170  virtual iterator end() { return myMap.end(); }
171  virtual const_iterator end() const { return myMap.end(); }
173 
175 
176  std::pair<iterator, bool> insert(const std::pair<KeyType, ValType>& item);
177  std::pair<iterator, bool> insert(const RwPairType& item);
178  std::pair<iterator, bool> insert(const KeyType& key, const ValType& val);
180 
182 
183  void erase(iterator pos) { myMap.erase(pos); }
184  void erase(const KeyType& key) { myMap.erase(key); }
186 
188 
189  virtual iterator find(const KeyType& key) { return myMap.find(key); }
190  virtual const_iterator find(const KeyType& key) const { return myMap.find(key); }
192 
194 
195  virtual iterator lower_bound(const KeyType& key) { return myMap.lower_bound(key); }
196  virtual const_iterator lower_bound(const KeyType& key) const { return myMap.lower_bound(key); }
198 
200 
201  virtual iterator upper_bound(const KeyType& key) { return myMap.upper_bound(key); }
202  virtual const_iterator upper_bound(const KeyType& key) const { return myMap.upper_bound(key); }
204 
205 
207 
208  bool operator==(const DtRwTemplatedMapPtr&) const;
209  bool operator!=(const DtRwTemplatedMapPtr&) const;
211 
213 
214  virtual const DtString& keyName() const { return myKeyName; }
215  virtual void setKeyName(const DtString& keyName) { myKeyName = keyName; }
217 
219 
220  virtual const DtString& valueName() const { return myValueName; }
221  virtual void setValueName(const DtString& valName) { myValueName = valName; }
223 
224  static const char* theXmlType()
225  {
226  static DtString xmlType(DtString(KeyType::theXmlType()) + "-" +
227  DtString(ValType::theXmlType()) + "-map");
228  return xmlType.c_str();
229  }
230 
231  virtual const char* xmlType() const
232  {
233  return theXmlType();
234  }
235 
236 public:
237 
238  const char* readerWriterType() const;
239 
240  static const char* ListReaderWriterType();
241 
242 protected:
244 
245  std::map<KeyType, ValType> myMap;
248 };
249 
250 namespace DtBufferSerialize
251 {
254  template <typename KeyType, typename ValType>
256 
260  template <typename KeyType, typename ValType>
261  char *encode(const DtRwTemplatedMapPtr<KeyType, ValType>& m, char *buffer);
262 
267  template <typename KeyType, typename ValType>
268  const char *decode(DtRwTemplatedMapPtr<KeyType, ValType>& m, const char *buffer);
269 };
270 
271 #include "vrfutil/rwTemplatedMap.inl"

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)