tesseract  4.1.1
tesseract::TFile Class Reference

#include <serialis.h>

Public Member Functions

 TFile ()
 
 ~TFile ()
 
bool Open (const STRING &filename, FileReader reader)
 
bool Open (const char *data, int size)
 
bool Open (FILE *fp, int64_t end_offset)
 
void set_swap (bool value)
 
bool DeSerialize (char *data, size_t count=1)
 
bool DeSerialize (double *data, size_t count=1)
 
bool DeSerialize (float *data, size_t count=1)
 
bool DeSerialize (int8_t *data, size_t count=1)
 
bool DeSerialize (int16_t *data, size_t count=1)
 
bool DeSerialize (int32_t *data, size_t count=1)
 
bool DeSerialize (int64_t *data, size_t count=1)
 
bool DeSerialize (uint8_t *data, size_t count=1)
 
bool DeSerialize (uint16_t *data, size_t count=1)
 
bool DeSerialize (uint32_t *data, size_t count=1)
 
bool DeSerialize (uint64_t *data, size_t count=1)
 
bool Serialize (const char *data, size_t count=1)
 
bool Serialize (const double *data, size_t count=1)
 
bool Serialize (const float *data, size_t count=1)
 
bool Serialize (const int8_t *data, size_t count=1)
 
bool Serialize (const int16_t *data, size_t count=1)
 
bool Serialize (const int32_t *data, size_t count=1)
 
bool Serialize (const int64_t *data, size_t count=1)
 
bool Serialize (const uint8_t *data, size_t count=1)
 
bool Serialize (const uint16_t *data, size_t count=1)
 
bool Serialize (const uint32_t *data, size_t count=1)
 
bool Serialize (const uint64_t *data, size_t count=1)
 
bool Skip (size_t count)
 
char * FGets (char *buffer, int buffer_size)
 
int FReadEndian (void *buffer, size_t size, int count)
 
int FRead (void *buffer, size_t size, int count)
 
void Rewind ()
 
void OpenWrite (GenericVector< char > *data)
 
bool CloseWrite (const STRING &filename, FileWriter writer)
 
int FWrite (const void *buffer, size_t size, int count)
 

Detailed Description

Definition at line 76 of file serialis.h.

Constructor & Destructor Documentation

◆ TFile()

tesseract::TFile::TFile ( )

Definition at line 109 of file serialis.cpp.

112  {
113  return FReadEndian(buffer, sizeof(*buffer), count) == count;
114 }

◆ ~TFile()

tesseract::TFile::~TFile ( )

Definition at line 116 of file serialis.cpp.

116  {
117  return FRead(buffer, sizeof(*buffer), count) == count;
118 }
119 

Member Function Documentation

◆ CloseWrite()

bool tesseract::TFile::CloseWrite ( const STRING filename,
FileWriter  writer 
)

Definition at line 328 of file serialis.cpp.

◆ DeSerialize() [1/11]

bool tesseract::TFile::DeSerialize ( char *  data,
size_t  count = 1 
)

Definition at line 121 of file serialis.cpp.

◆ DeSerialize() [2/11]

bool tesseract::TFile::DeSerialize ( double *  data,
size_t  count = 1 
)

Definition at line 125 of file serialis.cpp.

◆ DeSerialize() [3/11]

bool tesseract::TFile::DeSerialize ( float *  data,
size_t  count = 1 
)

Definition at line 129 of file serialis.cpp.

◆ DeSerialize() [4/11]

bool tesseract::TFile::DeSerialize ( int16_t *  data,
size_t  count = 1 
)

Definition at line 137 of file serialis.cpp.

◆ DeSerialize() [5/11]

bool tesseract::TFile::DeSerialize ( int32_t *  data,
size_t  count = 1 
)

Definition at line 141 of file serialis.cpp.

◆ DeSerialize() [6/11]

bool tesseract::TFile::DeSerialize ( int64_t *  data,
size_t  count = 1 
)

Definition at line 145 of file serialis.cpp.

◆ DeSerialize() [7/11]

bool tesseract::TFile::DeSerialize ( int8_t *  data,
size_t  count = 1 
)

Definition at line 133 of file serialis.cpp.

◆ DeSerialize() [8/11]

bool tesseract::TFile::DeSerialize ( uint16_t *  data,
size_t  count = 1 
)

Definition at line 153 of file serialis.cpp.

◆ DeSerialize() [9/11]

bool tesseract::TFile::DeSerialize ( uint32_t *  data,
size_t  count = 1 
)

Definition at line 157 of file serialis.cpp.

◆ DeSerialize() [10/11]

bool tesseract::TFile::DeSerialize ( uint64_t *  data,
size_t  count = 1 
)

Definition at line 161 of file serialis.cpp.

◆ DeSerialize() [11/11]

bool tesseract::TFile::DeSerialize ( uint8_t *  data,
size_t  count = 1 
)

Definition at line 149 of file serialis.cpp.

◆ FGets()

char * tesseract::TFile::FGets ( char *  buffer,
int  buffer_size 
)

Definition at line 266 of file serialis.cpp.

271  {
272  ASSERT_HOST(!is_writing_);
273  ASSERT_HOST(size > 0);
274  ASSERT_HOST(count >= 0);
275  size_t required_size;

◆ FRead()

int tesseract::TFile::FRead ( void *  buffer,
size_t  size,
int  count 
)

Definition at line 288 of file serialis.cpp.

291  {
292  ASSERT_HOST(!is_writing_);
293  offset_ = 0;
294 }
295 
297  offset_ = 0;
298  if (data != nullptr) {
299  if (data_is_owned_) delete data_;
300  data_ = data;
301  data_is_owned_ = false;
302  } else if (!data_is_owned_) {
303  data_ = new GenericVector<char>;
304  data_is_owned_ = true;
305  }
306  is_writing_ = true;

◆ FReadEndian()

int tesseract::TFile::FReadEndian ( void *  buffer,
size_t  size,
int  count 
)

Definition at line 277 of file serialis.cpp.

279  {
280  required_size = size * count;
281  if (data_->size() - offset_ < required_size) {
282  required_size = data_->size() - offset_;
283  }
284  }
285  if (required_size > 0 && buffer != nullptr)
286  memcpy(buffer, &(*data_)[offset_], required_size);

◆ FWrite()

int tesseract::TFile::FWrite ( const void *  buffer,
size_t  size,
int  count 
)

Definition at line 336 of file serialis.cpp.

◆ Open() [1/3]

bool tesseract::TFile::Open ( const char *  data,
int  size 
)

Definition at line 228 of file serialis.cpp.

231  {
232  if (fseek(fp, 0, SEEK_END))
233  return false;
234  end_offset = ftell(fp);
235  if (fseek(fp, current_pos, SEEK_SET))
236  return false;
237  }
238  int size = end_offset - current_pos;
239  is_writing_ = false;

◆ Open() [2/3]

bool tesseract::TFile::Open ( const STRING filename,
FileReader  reader 
)

Definition at line 214 of file serialis.cpp.

224  {
225  offset_ = 0;
226  auto current_pos = std::ftell(fp);

◆ Open() [3/3]

bool tesseract::TFile::Open ( FILE *  fp,
int64_t  end_offset 
)

Definition at line 241 of file serialis.cpp.

241  {
242  data_ = new GenericVector<char>;
243  data_is_owned_ = true;
244  }
245  data_->resize_no_init(size);
246  return static_cast<int>(fread(&(*data_)[0], 1, size, fp)) == size;
247 }
248 
249 char* TFile::FGets(char* buffer, int buffer_size) {
250  ASSERT_HOST(!is_writing_);
251  int size = 0;
252  while (size + 1 < buffer_size && offset_ < data_->size()) {
253  buffer[size++] = (*data_)[offset_++];
254  if ((*data_)[offset_ - 1] == '\n') break;
255  }
256  if (size < buffer_size) buffer[size] = '\0';
257  return size > 0 ? buffer : nullptr;
258 }
259 
260 int TFile::FReadEndian(void* buffer, size_t size, int count) {
261  int num_read = FRead(buffer, size, count);
262  if (swap_) {
263  char* char_buffer = static_cast<char*>(buffer);
264  for (int i = 0; i < num_read; ++i, char_buffer += size) {

◆ OpenWrite()

void tesseract::TFile::OpenWrite ( GenericVector< char > *  data)

Definition at line 313 of file serialis.cpp.

319  {
320  ASSERT_HOST(is_writing_);
321  ASSERT_HOST(size > 0);
322  ASSERT_HOST(count >= 0);
323  ASSERT_HOST(SIZE_MAX / size > count);
324  size_t total = size * count;
325  const char* buf = static_cast<const char*>(buffer);
326  // This isn't very efficient, but memory is so fast compared to disk

◆ Rewind()

void tesseract::TFile::Rewind ( )

Definition at line 308 of file serialis.cpp.

311  {

◆ Serialize() [1/11]

bool tesseract::TFile::Serialize ( const char *  data,
size_t  count = 1 
)

Definition at line 165 of file serialis.cpp.

◆ Serialize() [2/11]

bool tesseract::TFile::Serialize ( const double *  data,
size_t  count = 1 
)

Definition at line 169 of file serialis.cpp.

◆ Serialize() [3/11]

bool tesseract::TFile::Serialize ( const float *  data,
size_t  count = 1 
)

Definition at line 173 of file serialis.cpp.

◆ Serialize() [4/11]

bool tesseract::TFile::Serialize ( const int16_t *  data,
size_t  count = 1 
)

Definition at line 181 of file serialis.cpp.

◆ Serialize() [5/11]

bool tesseract::TFile::Serialize ( const int32_t *  data,
size_t  count = 1 
)

Definition at line 185 of file serialis.cpp.

◆ Serialize() [6/11]

bool tesseract::TFile::Serialize ( const int64_t *  data,
size_t  count = 1 
)

Definition at line 189 of file serialis.cpp.

◆ Serialize() [7/11]

bool tesseract::TFile::Serialize ( const int8_t *  data,
size_t  count = 1 
)

Definition at line 177 of file serialis.cpp.

◆ Serialize() [8/11]

bool tesseract::TFile::Serialize ( const uint16_t *  data,
size_t  count = 1 
)

Definition at line 197 of file serialis.cpp.

197  {
198  if (!data_is_owned_) {
199  data_ = new GenericVector<char>;

◆ Serialize() [9/11]

bool tesseract::TFile::Serialize ( const uint32_t *  data,
size_t  count = 1 
)

Definition at line 201 of file serialis.cpp.

◆ Serialize() [10/11]

bool tesseract::TFile::Serialize ( const uint64_t *  data,
size_t  count = 1 
)

Definition at line 205 of file serialis.cpp.

◆ Serialize() [11/11]

bool tesseract::TFile::Serialize ( const uint8_t *  data,
size_t  count = 1 
)

Definition at line 193 of file serialis.cpp.

◆ set_swap()

void tesseract::TFile::set_swap ( bool  value)
inline

Definition at line 90 of file serialis.h.

90  {
91  swap_ = value;
92  }

◆ Skip()

bool tesseract::TFile::Skip ( size_t  count)

Definition at line 209 of file serialis.cpp.

211  {
212  offset_ = 0;

The documentation for this class was generated from the following files:
GenericVector< char >
ASSERT_HOST
#define ASSERT_HOST(x)
Definition: errcode.h:88
count
int count(LIST var_list)
Definition: oldlist.cpp:95
tesseract::TFile::FRead
int FRead(void *buffer, size_t size, int count)
Definition: serialis.cpp:288
tesseract::TFile::OpenWrite
void OpenWrite(GenericVector< char > *data)
Definition: serialis.cpp:313
GenericVector::size
int size() const
Definition: genericvector.h:72
GenericVector::resize_no_init
void resize_no_init(int size)
Definition: genericvector.h:66
tesseract::TFile::FReadEndian
int FReadEndian(void *buffer, size_t size, int count)
Definition: serialis.cpp:277
tesseract::TFile::FGets
char * FGets(char *buffer, int buffer_size)
Definition: serialis.cpp:266