tesseract  4.00.00dev
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 end_offset)
 
void set_swap (bool value)
 
char * FGets (char *buffer, int buffer_size)
 
int FReadEndian (void *buffer, int size, int count)
 
int FRead (void *buffer, int size, int count)
 
void Rewind ()
 
void OpenWrite (GenericVector< char > *data)
 
bool CloseWrite (const STRING &filename, FileWriter writer)
 
int FWrite (const void *buffer, int size, int count)
 

Detailed Description

Definition at line 51 of file serialis.h.

Constructor & Destructor Documentation

◆ TFile()

tesseract::TFile::TFile ( )

Definition at line 26 of file serialis.cpp.

27  : offset_(0),
28  data_(NULL),
29  data_is_owned_(false),
30  is_writing_(false),
31  swap_(false) {}

◆ ~TFile()

tesseract::TFile::~TFile ( )

Definition at line 33 of file serialis.cpp.

33  {
34  if (data_is_owned_)
35  delete data_;
36 }

Member Function Documentation

◆ CloseWrite()

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

Definition at line 140 of file serialis.cpp.

140  {
141  ASSERT_HOST(is_writing_);
142  if (writer == NULL)
143  return SaveDataToFile(*data_, filename);
144  else
145  return (*writer)(*data_, filename);
146 }
bool SaveDataToFile(const GenericVector< char > &data, const STRING &filename)
#define ASSERT_HOST(x)
Definition: errcode.h:84
const char * filename
Definition: ioapi.h:38

◆ FGets()

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

Definition at line 86 of file serialis.cpp.

86  {
87  ASSERT_HOST(!is_writing_);
88  int size = 0;
89  while (size + 1 < buffer_size && offset_ < data_->size()) {
90  buffer[size++] = (*data_)[offset_++];
91  if ((*data_)[offset_ - 1] == '\n') break;
92  }
93  if (size < buffer_size) buffer[size] = '\0';
94  return size > 0 ? buffer : NULL;
95 }
voidpf void uLong size
Definition: ioapi.h:39
#define ASSERT_HOST(x)
Definition: errcode.h:84

◆ FRead()

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

Definition at line 108 of file serialis.cpp.

108  {
109  ASSERT_HOST(!is_writing_);
110  int required_size = size * count;
111  if (required_size <= 0) return 0;
112  if (data_->size() - offset_ < required_size)
113  required_size = data_->size() - offset_;
114  if (required_size > 0 && buffer != NULL)
115  memcpy(buffer, &(*data_)[offset_], required_size);
116  offset_ += required_size;
117  return required_size / size;
118 }
voidpf void uLong size
Definition: ioapi.h:39
int size() const
Definition: genericvector.h:72
#define ASSERT_HOST(x)
Definition: errcode.h:84
int count(LIST var_list)
Definition: oldlist.cpp:103

◆ FReadEndian()

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

Definition at line 97 of file serialis.cpp.

97  {
98  int num_read = FRead(buffer, size, count);
99  if (swap_) {
100  char* char_buffer = static_cast<char*>(buffer);
101  for (int i = 0; i < num_read; ++i, char_buffer += size) {
102  ReverseN(char_buffer, size);
103  }
104  }
105  return num_read;
106 }
voidpf void uLong size
Definition: ioapi.h:39
int count(LIST var_list)
Definition: oldlist.cpp:103
void ReverseN(void *ptr, int num_bytes)
Definition: helpers.h:184
int FRead(void *buffer, int size, int count)
Definition: serialis.cpp:108

◆ FWrite()

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

Definition at line 148 of file serialis.cpp.

148  {
149  ASSERT_HOST(is_writing_);
150  int total = size * count;
151  if (total <= 0) return 0;
152  const char* buf = static_cast<const char*>(buffer);
153  // This isn't very efficient, but memory is so fast compared to disk
154  // that it is relatively unimportant, and very simple.
155  for (int i = 0; i < total; ++i)
156  data_->push_back(buf[i]);
157  return count;
158 }
voidpf void uLong size
Definition: ioapi.h:39
int push_back(T object)
#define ASSERT_HOST(x)
Definition: errcode.h:84
voidpf void * buf
Definition: ioapi.h:39
int count(LIST var_list)
Definition: oldlist.cpp:103

◆ Open() [1/3]

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

Definition at line 38 of file serialis.cpp.

38  {
39  if (!data_is_owned_) {
40  data_ = new GenericVector<char>;
41  data_is_owned_ = true;
42  }
43  offset_ = 0;
44  is_writing_ = false;
45  swap_ = false;
46  if (reader == NULL)
47  return LoadDataFromFile(filename, data_);
48  else
49  return (*reader)(filename, data_);
50 }
bool LoadDataFromFile(const char *filename, GenericVector< char > *data)
const char * filename
Definition: ioapi.h:38

◆ Open() [2/3]

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

Definition at line 52 of file serialis.cpp.

52  {
53  offset_ = 0;
54  if (!data_is_owned_) {
55  data_ = new GenericVector<char>;
56  data_is_owned_ = true;
57  }
58  is_writing_ = false;
59  swap_ = false;
60  data_->resize_no_init(size);
61  memcpy(&(*data_)[0], data, size);
62  return true;
63 }
voidpf void uLong size
Definition: ioapi.h:39
void resize_no_init(int size)
Definition: genericvector.h:66

◆ Open() [3/3]

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

Definition at line 65 of file serialis.cpp.

65  {
66  offset_ = 0;
67  inT64 current_pos = ftell(fp);
68  if (end_offset < 0) {
69  if (fseek(fp, 0, SEEK_END))
70  return false;
71  end_offset = ftell(fp);
72  if (fseek(fp, current_pos, SEEK_SET))
73  return false;
74  }
75  int size = end_offset - current_pos;
76  is_writing_ = false;
77  swap_ = false;
78  if (!data_is_owned_) {
79  data_ = new GenericVector<char>;
80  data_is_owned_ = true;
81  }
82  data_->resize_no_init(size);
83  return static_cast<int>(fread(&(*data_)[0], 1, size, fp)) == size;
84 }
int64_t inT64
Definition: host.h:40
voidpf void uLong size
Definition: ioapi.h:39
void resize_no_init(int size)
Definition: genericvector.h:66
#define SEEK_SET
Definition: ioapi.c:29
#define SEEK_END
Definition: ioapi.c:25

◆ OpenWrite()

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

Definition at line 125 of file serialis.cpp.

125  {
126  offset_ = 0;
127  if (data != NULL) {
128  if (data_is_owned_) delete data_;
129  data_ = data;
130  data_is_owned_ = false;
131  } else if (!data_is_owned_) {
132  data_ = new GenericVector<char>;
133  data_is_owned_ = true;
134  }
135  is_writing_ = true;
136  swap_ = false;
137  data_->truncate(0);
138 }
void truncate(int size)

◆ Rewind()

void tesseract::TFile::Rewind ( )

Definition at line 120 of file serialis.cpp.

120  {
121  ASSERT_HOST(!is_writing_);
122  offset_ = 0;
123 }
#define ASSERT_HOST(x)
Definition: errcode.h:84

◆ set_swap()

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

Definition at line 65 of file serialis.h.

65 { swap_ = value; }

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