tesseract  5.0.0
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  }

◆ 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:189

◆ 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: