VR-Forces 4.6.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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 RwPairType& item);
177  std::pair<iterator, bool> insert(const KeyType& key, const ValType& val);
179 
181 
182  void erase(iterator pos) { myMap.erase(pos); }
183  void erase(const KeyType& key) { myMap.erase(key); }
185 
187 
188  virtual iterator find(const KeyType& key) { return myMap.find(key); }
189  virtual const_iterator find(const KeyType& key) const { return myMap.find(key); }
191 
193 
194  virtual iterator lower_bound(const KeyType& key) { return myMap.lower_bound(key); }
195  virtual const_iterator lower_bound(const KeyType& key) const { return myMap.lower_bound(key); }
197 
199 
200  virtual iterator upper_bound(const KeyType& key) { return myMap.upper_bound(key); }
201  virtual const_iterator upper_bound(const KeyType& key) const { return myMap.upper_bound(key); }
203 
204 
206 
207  bool operator==(const DtRwTemplatedMapPtr&) const;
208  bool operator!=(const DtRwTemplatedMapPtr&) const;
210 
212 
213  virtual const DtString& keyName() const { return myKeyName; }
214  virtual void setKeyName(const DtString& keyName) { myKeyName = keyName; }
216 
218 
219  virtual const DtString& valueName() const { return myValueName; }
220  virtual void setValueName(const DtString& valName) { myValueName = valName; }
222 
223  static const char* theXmlType()
224  {
225  static DtString xmlType(DtString(KeyType::theXmlType()) + "-" +
226  DtString(ValType::theXmlType()) + "-map");
227  return xmlType.c_str();
228  }
229 
230  virtual const char* xmlType() const
231  {
232  return theXmlType();
233  }
234 
235 public:
236 
237  const char* readerWriterType() const;
238 
239  static const char* ListReaderWriterType();
240 
241 protected:
243 
244  std::map<KeyType, ValType> myMap;
247 };
248 
249 namespace DtBufferSerialize
250 {
253  template <typename KeyType, typename ValType>
255 
259  template <typename KeyType, typename ValType>
260  char *encode(const DtRwTemplatedMapPtr<KeyType, ValType>& m, char *buffer);
261 
266  template <typename KeyType, typename ValType>
267  const char *decode(DtRwTemplatedMapPtr<KeyType, ValType>& m, const char *buffer);
268 };
269 
270 #include "vrfutil/rwTemplatedMap.inl"

Document ID: Generated on Wed Jul 25 16:57:45 EDT 2018 from SVN revision 190790
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)