tesseract v5.3.3.20231005
tesseract::TfileTest::MathData Class Reference

Public Member Functions

 MathData ()
 
void Setup ()
 
void ExpectEq (const MathData &other)
 
bool Serialize (TFile *fp)
 
bool DeSerialize (TFile *fp)
 
bool SerializeBigEndian (TFile *fp)
 
bool DeSerializeBigEndian (TFile *fp)
 

Detailed Description

Definition at line 30 of file tfile_test.cc.

Constructor & Destructor Documentation

◆ MathData()

tesseract::TfileTest::MathData::MathData ( )
inline

Definition at line 32 of file tfile_test.cc.

32: num_squares_(0), num_triangles_(0) {}

Member Function Documentation

◆ DeSerialize()

bool tesseract::TfileTest::MathData::DeSerialize ( TFile fp)
inline

Definition at line 70 of file tfile_test.cc.

70 {
71 if (fp->FReadEndian(&num_squares_, sizeof(num_squares_), 1) != 1) {
72 return false;
73 }
74 if (!fp->DeSerialize(squares_)) {
75 return false;
76 }
77 if (fp->FReadEndian(&num_triangles_, sizeof(num_triangles_), 1) != 1) {
78 return false;
79 }
80 if (!fp->DeSerialize(triangles_)) {
81 return false;
82 }
83 return true;
84 }

◆ DeSerializeBigEndian()

bool tesseract::TfileTest::MathData::DeSerializeBigEndian ( TFile fp)
inline

Definition at line 113 of file tfile_test.cc.

113 {
114 if (fp->FReadEndian(&num_squares_, sizeof(num_squares_), 1) != 1) {
115 return false;
116 }
117 if (!fp->DeSerialize(squares_)) {
118 return false;
119 }
120 // The first element is the size that was written, so we will delete it
121 // and read the last element separately.
122 int last_element;
123 if (fp->FReadEndian(&last_element, sizeof(last_element), 1) != 1) {
124 return false;
125 }
126 squares_.erase(squares_.begin());
127 squares_.push_back(last_element);
128 if (fp->FReadEndian(&num_triangles_, sizeof(num_triangles_), 1) != 1) {
129 return false;
130 }
131 if (!fp->DeSerialize(triangles_)) {
132 return false;
133 }
134 if (fp->FReadEndian(&last_element, sizeof(last_element), 1) != 1) {
135 return false;
136 }
137 triangles_.erase(triangles_.begin());
138 triangles_.push_back(last_element);
139 return true;
140 }

◆ ExpectEq()

void tesseract::TfileTest::MathData::ExpectEq ( const MathData other)
inline

Definition at line 44 of file tfile_test.cc.

44 {
45 // Check the data.
46 EXPECT_EQ(num_squares_, other.num_squares_);
47 for (unsigned s = 0; s < squares_.size(); ++s) {
48 EXPECT_EQ(squares_[s], other.squares_[s]);
49 }
50 EXPECT_EQ(num_triangles_, other.num_triangles_);
51 for (unsigned s = 0; s < triangles_.size(); ++s) {
52 EXPECT_EQ(triangles_[s], other.triangles_[s]);
53 }
54 }
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:2043

◆ Serialize()

bool tesseract::TfileTest::MathData::Serialize ( TFile fp)
inline

Definition at line 55 of file tfile_test.cc.

55 {
56 if (fp->FWrite(&num_squares_, sizeof(num_squares_), 1) != 1) {
57 return false;
58 }
59 if (!fp->Serialize(squares_)) {
60 return false;
61 }
62 if (fp->FWrite(&num_triangles_, sizeof(num_triangles_), 1) != 1) {
63 return false;
64 }
65 if (!fp->Serialize(triangles_)) {
66 return false;
67 }
68 return true;
69 }

◆ SerializeBigEndian()

bool tesseract::TfileTest::MathData::SerializeBigEndian ( TFile fp)
inline

Definition at line 85 of file tfile_test.cc.

85 {
86 ReverseN(&num_squares_, sizeof(num_squares_));
87 if (fp->FWrite(&num_squares_, sizeof(num_squares_), 1) != 1) {
88 return false;
89 }
90 // Write an additional reversed size before the vector, which will get
91 // used as its size on reading.
92 if (fp->FWrite(&num_squares_, sizeof(num_squares_), 1) != 1) {
93 return false;
94 }
95 for (int &square : squares_) {
96 ReverseN(&square, sizeof(square));
97 }
98 if (!fp->Serialize(squares_)) {
99 return false;
100 }
101 ReverseN(&num_triangles_, sizeof(num_triangles_));
102 if (fp->FWrite(&num_triangles_, sizeof(num_triangles_), 1) != 1) {
103 return false;
104 }
105 if (fp->FWrite(&num_triangles_, sizeof(num_triangles_), 1) != 1) {
106 return false;
107 }
108 for (auto &triangle : triangles_) {
109 ReverseN(&triangle, sizeof(triangles_[0]));
110 }
111 return fp->Serialize(triangles_);
112 }
void ReverseN(void *ptr, int num_bytes)
Definition: helpers.h:184

◆ Setup()

void tesseract::TfileTest::MathData::Setup ( )
inline

Definition at line 33 of file tfile_test.cc.

33 {
34 // Setup some data.
35 for (int s = 0; s < 42; ++s) {
36 squares_.push_back(s * s);
37 }
38 num_squares_ = squares_.size();
39 for (int t = 0; t < 52; ++t) {
40 triangles_.push_back(t * (t + 1) / 2);
41 }
42 num_triangles_ = triangles_.size();
43 }

The documentation for this class was generated from the following file: