8 #include "daq/slc/base/Writer.h"
10 #include "daq/slc/base/Serializable.h"
18 void Writer::reverse(
void* buf,
size_t len)
21 for (
int c = 0 ; c < (int)len / 2 ; c ++) {
22 tmp = *((
char*)buf + c);
23 *((
char*)buf + c) = *((
char*)buf + len - 1 - c);
24 *((
char*)buf + len - 1 - c) = tmp;
28 void Writer::writeBool(
bool v)
30 write(&v,
sizeof(
bool));
33 void Writer::writeChar(
char v)
35 write(&v,
sizeof(
char));
38 void Writer::writeUChar(
unsigned char v)
40 write(&v,
sizeof(
unsigned char));
43 void Writer::writeShort(
short v)
45 #if defined(__ENDIAN_L__)
46 reverse(&v,
sizeof(
short));
48 write(&v,
sizeof(
short));
51 void Writer::writeUShort(
unsigned short v)
53 #if defined(__ENDIAN_L__)
54 reverse(&v,
sizeof(
unsigned short));
56 write(&v,
sizeof(
unsigned short));
59 void Writer::writeInt(
int v)
61 #if defined(__ENDIAN_L__)
62 reverse(&v,
sizeof(
int));
64 write(&v,
sizeof(
int));
67 void Writer::writeUInt(
unsigned int v)
69 #if defined(__ENDIAN_L__)
70 reverse(&v,
sizeof(
unsigned int));
72 write(&v,
sizeof(
unsigned int));
75 void Writer::writeLong(
long long v)
77 #if defined(__ENDIAN_L__)
78 reverse(&v,
sizeof(
long long));
80 write(&v,
sizeof(
long long));
83 void Writer::writeULong(
unsigned long long v)
85 #if defined(__ENDIAN_L__)
86 reverse(&v,
sizeof(
unsigned long long));
88 write(&v,
sizeof(
unsigned long long));
91 void Writer::writeFloat(
float v)
93 #if defined(__ENDIAN_L__)
94 reverse(&v,
sizeof(
float));
96 write(&v,
sizeof(
float));
99 void Writer::writeDouble(
double v)
101 #if defined(__ENDIAN_L__)
102 reverse(&v,
sizeof(
double));
104 write(&v,
sizeof(
double));
107 void Writer::writeString(
const std::string& v)
109 writeInt((
int)v.size());
110 write(v.data(), v.size());
115 return v.writeObject(*
this);
Abstract base class for different kinds of events.