MAK Data Logger API Documentation for HLA
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 
14 namespace MAKLogger
15 {
16 
21  {
22  public:
24  myData(0),
25  mySize()
26  {
27  }
28 
30  DtLgrVariableLengthData(void const * inData, unsigned long inSize) :
31  myData(0),
32  mySize(0)
33  {
34  setData(inData,inSize);
35  }
36 
37  //Dupcliate object (with new copy of the object).
39  myData(0),
40  mySize(0)
41  {
42  setData(rhs.data(),rhs.size());
43  }
44 
45 
47  {
48  delete[] (char*)myData;
49  myData = 0;
50  mySize = 0;
51  }
52 
54  bool operator<(const DtLgrVariableLengthData& rhs) const
55  {
56  if(size() < rhs.size()) return true;
57  if(size() > rhs.size()) return false;
58  int count1 = size();
59  int count2 = rhs.size();
60  int count = (count1<count2)?count1:count2;
61  const char* data1 = (const char*)data();
62  const char* data2 = (const char*)rhs.data();
63  for(int i = 0;i < count;++i,++data1,++data2)
64  {
65  if(*data1 > *data2) return false;
66  if(*data1 < *data2) return true;
67  }
68  return count1 < count2;
69  }
70 
72  bool operator==(const DtLgrVariableLengthData& rhs) const
73  {
74  if(size() != rhs.size()) return false;
76  int integerCompares = size() >> 2;
77  const unsigned int* intPtr1 = (const unsigned int*)data();
78  const unsigned int* intPtr2 = (const unsigned int*)rhs.data();
79  while(integerCompares--)
80  {
81  if(*intPtr1 != *intPtr2) return false;
82  ++intPtr1;
83  ++intPtr2;
84  }
85  int byteCompares = size() & 0x3;
86  const unsigned char* bytePtr1 = (const unsigned char*)intPtr1;
87  const unsigned char* bytePtr2 = (const unsigned char*)intPtr2;
88  while(byteCompares)
89  {
90  if(*bytePtr1 != *bytePtr2) return false;
91  ++bytePtr1;
92  ++bytePtr2;
93  }
94  return true;
95  }
96 
99  {
100  setData(rhs.data(),rhs.size());
101  return *this;
102  }
103 
107  void const * data() const {return myData;}
108  void* data() {return myData;}
109  unsigned int size() const {return mySize;}
110 
112  void setData(void const * inData, unsigned long inSize)
113  {
114  delete[] (char*)myData;
115  if(inSize != 0)
116  {
117  myData = (void*)new char[inSize];
118  }
119  else
120  {
121  myData = 0;
122  }
123  mySize = inSize;
124  memcpy(myData,inData,mySize);
125  }
126 
130  void setDataPointer(void* inData, unsigned long inSize)
131  {
132  myData = inData;
133  mySize = inSize;
134  }
135 
139  void takeDataPointer(void* inData, unsigned long inSize)
140  {
141  delete[] (char*)myData;
142  myData = inData;
143  mySize = inSize;
144  }
145 
149  void releaseDataPointer()
150  {
151  myData = 0;
152  mySize = 0;
153  }
154 
155  private:
156  void* myData;
157  unsigned long mySize;
158 
159  };
160 }
161 
162 #endif

Document ID: Generated on Thu Apr 10 18:53:01 EDT 2014 from SVN revision 138105
Copyright © 2005-2012 VT MÄK. All Rights Reserved (www.mak.com)