1 #include "daq/slc/base/Writer.h"
3 #include "daq/slc/base/Serializable.h"
11 void Writer::reverse(
void* buf,
size_t len)
14 for (
int c = 0 ; c < (int)len / 2 ; c ++) {
15 tmp = *((
char*)buf + c);
16 *((
char*)buf + c) = *((
char*)buf + len - 1 - c);
17 *((
char*)buf + len - 1 - c) = tmp;
21 void Writer::writeBool(
bool v)
23 write(&v,
sizeof(
bool));
26 void Writer::writeChar(
char v)
28 write(&v,
sizeof(
char));
31 void Writer::writeUChar(
unsigned char v)
33 write(&v,
sizeof(
unsigned char));
36 void Writer::writeShort(
short v)
38 #if defined(__ENDIAN_L__)
39 reverse(&v,
sizeof(
short));
41 write(&v,
sizeof(
short));
44 void Writer::writeUShort(
unsigned short v)
46 #if defined(__ENDIAN_L__)
47 reverse(&v,
sizeof(
unsigned short));
49 write(&v,
sizeof(
unsigned short));
52 void Writer::writeInt(
int v)
54 #if defined(__ENDIAN_L__)
55 reverse(&v,
sizeof(
int));
57 write(&v,
sizeof(
int));
60 void Writer::writeUInt(
unsigned int v)
62 #if defined(__ENDIAN_L__)
63 reverse(&v,
sizeof(
unsigned int));
65 write(&v,
sizeof(
unsigned int));
68 void Writer::writeLong(
long long v)
70 #if defined(__ENDIAN_L__)
71 reverse(&v,
sizeof(
long long));
73 write(&v,
sizeof(
long long));
76 void Writer::writeULong(
unsigned long long v)
78 #if defined(__ENDIAN_L__)
79 reverse(&v,
sizeof(
unsigned long long));
81 write(&v,
sizeof(
unsigned long long));
84 void Writer::writeFloat(
float v)
86 #if defined(__ENDIAN_L__)
87 reverse(&v,
sizeof(
float));
89 write(&v,
sizeof(
float));
92 void Writer::writeDouble(
double v)
94 #if defined(__ENDIAN_L__)
95 reverse(&v,
sizeof(
double));
97 write(&v,
sizeof(
double));
100 void Writer::writeString(
const std::string& v)
102 writeInt((
int)v.size());
103 write(v.data(), v.size());
108 return v.writeObject(*
this);