VR-Forces 4.1 Class Documentation
Home
Modules
Namespaces
Classes
Files
Examples
Behavior Models
File List
File Members
include
vrfutil
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>
16
#include "
vrfutil/bufferSerialize.h
"
17
18
19
class
DtReaderWriterRegistry
;
20
class
DtReaderWriter
;
21
33
class
DT_DLL_vrfutil
DtReaderWriterFactory
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
42
struct
DtRwFunctions
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
:
54
DtReaderWriterFactory
();
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
:
127
DtRwFunctionMap
myRwFunctionMap
;
128
};
129
130
#define readerWriterFactory_inl_
131
#include "vrfutil/readerWriterFactory.inl"
132
#undef readerWriterFactory_inl_
133
Document ID: Generated on Tue Jan 29 18:21:16 EST 2013 from SVN revision 123193
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (
www.mak.com
)