VR-Forces 4.3 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
readerWriterFactory.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include "vrfutil/vrfutilDefines.h"
14 #include <map>
15 #include <vlutil/vlString.h>
17 
18 #include <boost/function.hpp>
19 
21 class DtReaderWriter;
22 
35 {
36 public:
37  typedef DtReaderWriter* (*DtRWCreatorFcn)(const DtString& name, DtReaderWriterRegistry* parentRegistry);
38  typedef void (*DtRWCopyFcn)(const DtReaderWriter* source, DtReaderWriter* dest);
39  typedef int (*DtRwGetSizeFcn)(const DtReaderWriter* source);
40  typedef bool (*DtRwCompareFcn)(const DtReaderWriter* lhs, const DtReaderWriter* rhs);
41  typedef char* (*DtRwEncodeFcn)(const DtReaderWriter* source, char*);
42  typedef const char* (*DtRwDecodeFcn)(DtReaderWriter* source, const char*);
43 
45  {
46  DtRWCreatorFcn creatorFcn;
47  DtRwCompareFcn compareFcn;
48  DtRWCopyFcn copyFcn;
49  DtRwGetSizeFcn getSizeFcn;
50  DtRwEncodeFcn encodeFcn;
51  DtRwDecodeFcn decodeFcn;
52  };
53 
54  typedef std::map<DtString, DtRwFunctions> DtRwFunctionMap;
55 
56 public:
57  DtReaderWriterFactory(bool registerDefaults = true);
58 
60  virtual std::set<DtString> xmlTypes() const;
61 
63  virtual DtString mapXmlToRwType(const DtString& xmlType) const;
64 
66  virtual DtString mapRwToXmlType(const DtString& rwType) const;
67 
71  virtual DtReaderWriter* createItem(const DtString& type, const DtString& name,
72  DtReaderWriterRegistry* parentRegistry) const;
73 
78  virtual bool copyReaderWriter(const DtReaderWriter* sourceRw, DtReaderWriter* destRw) const;
79 
81  virtual bool compareReaderWriter(const DtReaderWriter* sourceRw, const DtReaderWriter* destRw) const;
82 
88  virtual DtReaderWriter* cloneReaderWriter(const DtString& name,
89  const DtReaderWriter* sourceRw, DtReaderWriterRegistry* parentRegistry) const;
90 
93  void addDefaultRwCreators();
94 
99  template<typename T_RWType>
100  void registerType(const DtString& rwTypeString);
101 
103  template<typename T_RWType>
104  void registerTypeWithoutSerialization(const DtString& rwTypeString);
105 
106  const DtRwFunctionMap& functionMap() const;
107 
109  bool typeRegistered(const DtString& rwTypeString) const;
110 
111  virtual int getSize(const DtReaderWriter*) const;
112 
114  virtual char* encode(const DtReaderWriter*, char*) const;
115 
117  virtual const char* decode(DtReaderWriter*, const char*);
118 
119 protected:
121  virtual void mapRwToXml(const DtString& rwType, const DtString& xmlType);
122 
125  template <typename T_RWType>
126  static DtReaderWriter* createRWType(const DtString& name, DtReaderWriterRegistry* parentRegistry);
127 
129  template <typename T_RWType>
130  static void copyRwType(const DtReaderWriter* sourceRw, DtReaderWriter* destRw);
131 
133  template <typename T_RWType>
134  static bool compareRwType(const DtReaderWriter* sourceRw, const DtReaderWriter* destRw);
135 
137  template <typename T_RWType>
138  static int getRwSize(const DtReaderWriter* sourceRw);
139 
141  template <typename T_RWType>
142  static char* encodeRwType(const DtReaderWriter* sourceRw, char* buf);
143 
145  template <typename T_RWType>
146  static const char* decodeRwType(DtReaderWriter* sourceRw, const char* buf);
147 
148 protected:
150 
151  typedef std::map<DtString, DtString> StringMap;
154 
155  std::set<DtString> myXmlTypes;
156 };
157 
159 {
162 
165 };
166 
167 typedef std::vector<DtMergePathStruct> DtMergePath;
168 
169 typedef boost::function<bool (const DtReaderWriter* source, DtReaderWriter* destination,
171 
174 {
175 public:
176  typedef std::map<DtString, DtPropertyRollUpFunction> RollUpRules;
177 
178  DtReaderWriterPropertyFactory(bool registerDefaults = true);
180 
182  virtual bool defaultRollUpFunction(const DtReaderWriter* source, DtReaderWriter* destination);
183  virtual DtPropertyRollUpFunction defaultRollUpRule() const;
184  virtual void setDefaultRollUpRule(DtPropertyRollUpFunction);
185 
187  virtual void setRollUpRule(const DtString& type, DtPropertyRollUpFunction fcn);
188 
191  virtual bool rollUpReaderWriter(const DtReaderWriter* source, DtReaderWriter* destination,
192  const DtMergePath&) const;
193 
194  virtual const RollUpRules& rollUpRules() const
195  {
196  return myRollUpRules;
197  }
198 
199  virtual RollUpRules& rollUpRules()
200  {
201  return myRollUpRules;
202  }
203 
204 protected:
206 
208 };
209 
210 #define readerWriterFactory_inl_
211 #include "vrfutil/readerWriterFactory.inl"
212 #undef readerWriterFactory_inl_
213 

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)