MAK Data Logger API Documentation for HLA
Home
Modules
Namespaces
Classes
Files
Examples
Libraries
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
include
lgrUtil
lgrVariableLengthData.h
Go to the documentation of this file.
1
/******************************************************************************
2
** Copyright (c) 1992-2010 VT MAK
3
** All rights reserved.
4
******************************************************************************/
5
8
9
#ifndef lgrVariableLengthData_H_
10
#define lgrVariableLengthData_H_
11
12
#include <memory.h>
13
#include <vlutil/vlMachineTypes.h>
14
15
namespace
MAKLogger
16
{
17
21
class
DT_DLL_LGRSIM
DtLgrVariableLengthData
22
{
23
public
:
24
DtLgrVariableLengthData
() :
25
myData(0),
26
mySize()
27
{
28
}
29
31
DtLgrVariableLengthData
(
void
const
* inData,
unsigned
long
inSize) :
32
myData(0),
33
mySize(0)
34
{
35
setData(inData,inSize);
36
}
37
38
//Dupcliate object (with new copy of the object).
39
DtLgrVariableLengthData
(
DtLgrVariableLengthData
const
& rhs) :
40
myData(0),
41
mySize(0)
42
{
43
setData(rhs.
data
(),rhs.
size
());
44
}
45
46
47
~
DtLgrVariableLengthData
()
48
{
49
delete
[] (
char
*)myData;
50
myData = 0;
51
mySize = 0;
52
}
53
55
bool
operator<(
const
DtLgrVariableLengthData
& rhs)
const
56
{
57
if
(size() < rhs.
size
())
return
true
;
58
if
(size() > rhs.
size
())
return
false
;
59
//Check size and do 1 integer compare if possible. Start with 4 for MAK RTI
60
if
( size() == 4 )
61
{
62
const
DtInt32* intPtr1 = (
const
DtInt32*)data();
63
const
DtInt32* intPtr2 = (
const
DtInt32*)rhs.
data
();
64
return
(*intPtr1 < *intPtr2);
65
}
66
else
if
( size() == 8 )
67
{
68
const
DtInt64* intPtr1 = (
const
DtInt64*)data();
69
const
DtInt64* intPtr2 = (
const
DtInt64*)rhs.
data
();
70
if
(*intPtr1 < *intPtr2)
return
true
;
71
}
72
else
if
( size() == 2 )
73
{
74
const
DtInt16* intPtr1 = (
const
DtInt16*)data();
75
const
DtInt16* intPtr2 = (
const
DtInt16*)rhs.
data
();
76
return
(*intPtr1 < *intPtr2);
77
}
78
79
//Do memcmp
80
return
memcmp(data(), rhs.
data
(), size()) < 0;
81
}
82
84
bool
operator==(
const
DtLgrVariableLengthData
& rhs)
const
85
{
86
if
(size() != rhs.
size
())
return
false
;
87
91
if
( size() == 4 )
92
{
93
const
DtInt32* intPtr1 = (
const
DtInt32*)data();
94
const
DtInt32* intPtr2 = (
const
DtInt32*)rhs.
data
();
95
if
(*intPtr1 != *intPtr2)
return
false
;
96
}
97
else
if
( size() == 8 )
98
{
99
const
DtInt64* intPtr1 = (
const
DtInt64*)data();
100
const
DtInt64* intPtr2 = (
const
DtInt64*)rhs.
data
();
101
if
(*intPtr1 != *intPtr2)
return
false
;
102
}
103
else
if
( size() == 2 )
104
{
105
const
DtInt16* intPtr1 = (
const
DtInt16*)data();
106
const
DtInt16* intPtr2 = (
const
DtInt16*)rhs.
data
();
107
if
(*intPtr1 != *intPtr2)
return
false
;
108
}
109
else
110
{
111
return
memcmp(data(), rhs.
data
(), size()) == 0;
112
}
113
return
true
;
114
}
115
117
DtLgrVariableLengthData
& operator=(
DtLgrVariableLengthData
const
& rhs)
118
{
119
setData(rhs.
data
(),rhs.
size
());
120
return
*
this
;
121
}
122
126
void
const
*
data
()
const
{
return
myData;}
127
void
*
data
() {
return
myData;}
128
unsigned
int
size
()
const
{
return
mySize;}
129
131
void
setData(
void
const
* inData,
unsigned
long
inSize)
132
{
133
delete
[] (
char
*)myData;
134
if
(inSize != 0)
135
{
136
myData = (
void
*)
new
char
[inSize];
137
}
138
else
139
{
140
myData = 0;
141
}
142
mySize = inSize;
143
memcpy(myData,inData,mySize);
144
}
145
149
void
setDataPointer(
void
* inData,
unsigned
long
inSize)
150
{
151
myData = inData;
152
mySize = inSize;
153
}
154
158
void
takeDataPointer(
void
* inData,
unsigned
long
inSize)
159
{
160
delete
[] (
char
*)myData;
161
myData = inData;
162
mySize = inSize;
163
}
164
168
void
releaseDataPointer()
169
{
170
myData = 0;
171
mySize = 0;
172
}
173
174
private
:
175
void
*
myData
;
176
unsigned
long
mySize
;
177
178
};
179
}
180
181
#endif
Document ID: Generated on Thu Jul 23 15:05:27 EDT 2020 from SVN revision 215371
Copyright © 2020 MAK Technologies. All Rights Reserved (
www.mak.com
)