VR-Forces 4.1.1 Class Documentation
readerWriterFactory.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2007 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 
20 class DtReaderWriter;
21 
34 {
35 public:
36  typedef DtReaderWriter* (*DtRWCreatorFcn)(const DtString& name, DtReaderWriterRegistry* parentRegistry);
37  typedef void (*DtRWCopyFcn)(const DtReaderWriter* source, DtReaderWriter* dest);
38  typedef int (*DtRwGetSizeFcn)(const DtReaderWriter* source);
39  typedef char* (*DtRwEncodeFcn)(const DtReaderWriter* source, char*);
40  typedef const char* (*DtRwDecodeFcn)(DtReaderWriter* source, const char*);
41 
43  {
44  DtRWCreatorFcn creatorFcn;
45  DtRWCopyFcn copyFcn;
46  DtRwGetSizeFcn getSizeFcn;
47  DtRwEncodeFcn encodeFcn;
48  DtRwDecodeFcn decodeFcn;
49  };
50 
51  typedef std::map<DtString, DtRwFunctions> DtRwFunctionMap;
52 
53 public:
55 
59  virtual DtReaderWriter* createItem(const DtString& type, const DtString& name,
60  DtReaderWriterRegistry* parentRegistry) const;
61 
66  virtual bool copyReaderWriter(const DtReaderWriter* sourceRw, DtReaderWriter* destRw) const;
67 
73  virtual DtReaderWriter* cloneReaderWriter(const DtString& name,
74  const DtReaderWriter* sourceRw, DtReaderWriterRegistry* parentRegistry) const;
75 
78  void addDefaultRwCreators();
79 
84  template<typename T_RWType>
85  void registerType(const DtString& rwTypeString);
86 
88  template<typename T_RWType>
89  void registerTypeWithoutSerialization(const DtString& rwTypeString);
90 
91  const DtRwFunctionMap& functionMap() const;
92 
94  bool typeRegistered(const DtString& rwTypeString) const;
95 
96  virtual int getSize(const DtReaderWriter*) const;
97 
99  virtual char* encode(const DtReaderWriter*, char*) const;
100 
102  virtual const char* decode(DtReaderWriter*, const char*);
103 
104 protected:
107  template <typename T_RWType>
108  static DtReaderWriter* createRWType(const DtString& name, DtReaderWriterRegistry* parentRegistry);
109 
111  template <typename T_RWType>
112  static void copyRwType(const DtReaderWriter* sourceRw, DtReaderWriter* destRw);
113 
115  template <typename T_RWType>
116  static int getRwSize(const DtReaderWriter* sourceRw);
117 
119  template <typename T_RWType>
120  static char* encodeRwType(const DtReaderWriter* sourceRw, char* buf);
121 
123  template <typename T_RWType>
124  static const char* decodeRwType(DtReaderWriter* sourceRw, const char* buf);
125 
126 protected:
128 };
129 
130 #define readerWriterFactory_inl_
131 #include "vrfutil/readerWriterFactory.inl"
132 #undef readerWriterFactory_inl_
133 

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)