Skip to content

Commit 16832f9

Browse files
committed
Add helper functions for serialization of simple data types
Signed-off-by: Stefan Weil <sw@weilnetz.de>
1 parent f47daac commit 16832f9

File tree

2 files changed

+90
-1
lines changed

2 files changed

+90
-1
lines changed

src/ccutil/serialis.cpp

+64-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,70 @@
2424

2525
namespace tesseract {
2626

27+
bool DeSerialize(FILE* fp, char* data, size_t n) {
28+
return fread(data, sizeof(*data), n, fp) == n;
29+
}
30+
31+
bool DeSerialize(FILE* fp, float* data, size_t n) {
32+
return fread(data, sizeof(*data), n, fp) == n;
33+
}
34+
35+
bool DeSerialize(FILE* fp, int8_t* data, size_t n) {
36+
return fread(data, sizeof(*data), n, fp) == n;
37+
}
38+
39+
bool DeSerialize(FILE* fp, int16_t* data, size_t n) {
40+
return fread(data, sizeof(*data), n, fp) == n;
41+
}
42+
43+
bool DeSerialize(FILE* fp, int32_t* data, size_t n) {
44+
return fread(data, sizeof(*data), n, fp) == n;
45+
}
46+
47+
bool DeSerialize(FILE* fp, uint8_t* data, size_t n) {
48+
return fread(data, sizeof(*data), n, fp) == n;
49+
}
50+
51+
bool DeSerialize(FILE* fp, uint16_t* data, size_t n) {
52+
return fread(data, sizeof(*data), n, fp) == n;
53+
}
54+
55+
bool DeSerialize(FILE* fp, uint32_t* data, size_t n) {
56+
return fread(data, sizeof(*data), n, fp) == n;
57+
}
58+
59+
bool Serialize(FILE* fp, const char* data, size_t n) {
60+
return fwrite(data, sizeof(*data), n, fp) == n;
61+
}
62+
63+
bool Serialize(FILE* fp, const float* data, size_t n) {
64+
return fwrite(data, sizeof(*data), n, fp) == n;
65+
}
66+
67+
bool Serialize(FILE* fp, const int8_t* data, size_t n) {
68+
return fwrite(data, sizeof(*data), n, fp) == n;
69+
}
70+
71+
bool Serialize(FILE* fp, const int16_t* data, size_t n) {
72+
return fwrite(data, sizeof(*data), n, fp) == n;
73+
}
74+
75+
bool Serialize(FILE* fp, const int32_t* data, size_t n) {
76+
return fwrite(data, sizeof(*data), n, fp) == n;
77+
}
78+
79+
bool Serialize(FILE* fp, const uint8_t* data, size_t n) {
80+
return fwrite(data, sizeof(*data), n, fp) == n;
81+
}
82+
83+
bool Serialize(FILE* fp, const uint16_t* data, size_t n) {
84+
return fwrite(data, sizeof(*data), n, fp) == n;
85+
}
86+
87+
bool Serialize(FILE* fp, const uint32_t* data, size_t n) {
88+
return fwrite(data, sizeof(*data), n, fp) == n;
89+
}
90+
2791
TFile::TFile()
2892
: offset_(0),
2993
data_(nullptr),
@@ -172,5 +236,4 @@ int TFile::FWrite(const void* buffer, size_t size, int count) {
172236
return count;
173237
}
174238

175-
176239
} // namespace tesseract.

src/ccutil/serialis.h

+26
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@ Replace <parm> with "<parm>". <parm> may be an arbitrary number of tokens
3838

3939
namespace tesseract {
4040

41+
// Return number of elements of an array.
42+
template <typename T, size_t N>
43+
constexpr size_t countof(T const (&)[N]) noexcept {
44+
return N;
45+
}
46+
4147
// Function to read a GenericVector<char> from a whole file.
4248
// Returns false on failure.
4349
typedef bool (*FileReader)(const STRING& filename, GenericVector<char>* data);
@@ -46,6 +52,26 @@ typedef bool (*FileReader)(const STRING& filename, GenericVector<char>* data);
4652
typedef bool (*FileWriter)(const GenericVector<char>& data,
4753
const STRING& filename);
4854

55+
// Deserialize data from file.
56+
bool DeSerialize(FILE* fp, char* data, size_t n = 1);
57+
bool DeSerialize(FILE* fp, float* data, size_t n = 1);
58+
bool DeSerialize(FILE* fp, int8_t* data, size_t n = 1);
59+
bool DeSerialize(FILE* fp, int16_t* data, size_t n = 1);
60+
bool DeSerialize(FILE* fp, int32_t* data, size_t n = 1);
61+
bool DeSerialize(FILE* fp, uint8_t* data, size_t n = 1);
62+
bool DeSerialize(FILE* fp, uint16_t* data, size_t n = 1);
63+
bool DeSerialize(FILE* fp, uint32_t* data, size_t n = 1);
64+
65+
// Serialize data to file.
66+
bool Serialize(FILE* fp, const char* data, size_t n = 1);
67+
bool Serialize(FILE* fp, const float* data, size_t n = 1);
68+
bool Serialize(FILE* fp, const int8_t* data, size_t n = 1);
69+
bool Serialize(FILE* fp, const int16_t* data, size_t n = 1);
70+
bool Serialize(FILE* fp, const int32_t* data, size_t n = 1);
71+
bool Serialize(FILE* fp, const uint8_t* data, size_t n = 1);
72+
bool Serialize(FILE* fp, const uint16_t* data, size_t n = 1);
73+
bool Serialize(FILE* fp, const uint32_t* data, size_t n = 1);
74+
4975
// Simple file class.
5076
// Allows for portable file input from memory and from foreign file systems.
5177
class TFile {

0 commit comments

Comments
 (0)