VR-Forces 4.7 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 <readerWriter/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", const DtString& elementName = "item");
113  DtReaderWriterRegistry* parentRegistry = NULL,
114  const DtString& keyName = "key", const DtString& valueName = "value", const DtString& elementName = "item");
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 
219  virtual const DtString& elementName() const { return myElementName; }
220  virtual void setElementName(const DtString& e) { myElementName = e; };
222 
224 
225  virtual const DtString& valueName() const { return myValueName; }
226  virtual void setValueName(const DtString& valName) { myValueName = valName; }
228 
229  static const char* theXmlType()
230  {
231  static DtString xmlType(DtString(KeyType::theXmlType()) + "-" +
232  DtString(ValType::theXmlType()) + "-map");
233  return xmlType.c_str();
234  }
235 
236  virtual const char* xmlType() const
237  {
238  return theXmlType();
239  }
240 
241 public:
242 
243  const char* readerWriterType() const;
244 
245  static const char* ListReaderWriterType();
246 
247 protected:
249 
250  std::map<KeyType, ValType> myMap;
251 
255 
258 };
259 
260 namespace DtBufferSerialize
261 {
264  template <typename KeyType, typename ValType>
266 
270  template <typename KeyType, typename ValType>
271  char *encode(const DtRwTemplatedMapPtr<KeyType, ValType>& m, char *buffer);
272 
277  template <typename KeyType, typename ValType>
278  const char *decode(DtRwTemplatedMapPtr<KeyType, ValType>& m, const char *buffer);
279 };
280 
281 #include "vrfutil/rwTemplatedMap.inl"

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)