All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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)
 
char * FGets (char *buffer, int buffer_size)
 
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

tesseract::TFile::TFile ( )

Definition at line 26 of file serialis.cpp.

27  : offset_(0), data_(NULL), data_is_owned_(false), is_writing_(false) {
28 }
#define NULL
Definition: host.h:144
tesseract::TFile::~TFile ( )

Definition at line 30 of file serialis.cpp.

30  {
31  if (data_is_owned_)
32  delete data_;
33 }

Member Function Documentation

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

Definition at line 123 of file serialis.cpp.

123  {
124  ASSERT_HOST(is_writing_);
125  if (writer == NULL)
126  return SaveDataToFile(*data_, filename);
127  else
128  return (*writer)(*data_, filename);
129 }
#define ASSERT_HOST(x)
Definition: errcode.h:84
bool SaveDataToFile(const GenericVector< char > &data, const STRING &filename)
#define NULL
Definition: host.h:144
char * tesseract::TFile::FGets ( char *  buffer,
int  buffer_size 
)

Definition at line 80 of file serialis.cpp.

80  {
81  ASSERT_HOST(!is_writing_);
82  int size = 0;
83  while (size + 1 < buffer_size && offset_ < data_->size()) {
84  buffer[size++] = (*data_)[offset_++];
85  if ((*data_)[offset_ - 1] == '\n') break;
86  }
87  if (size < buffer_size) buffer[size] = '\0';
88  return size > 0 ? buffer : NULL;
89 }
#define ASSERT_HOST(x)
Definition: errcode.h:84
#define NULL
Definition: host.h:144
int tesseract::TFile::FRead ( void *  buffer,
int  size,
int  count 
)

Definition at line 91 of file serialis.cpp.

91  {
92  ASSERT_HOST(!is_writing_);
93  int required_size = size * count;
94  if (required_size <= 0) return 0;
95  char* char_buffer = reinterpret_cast<char*>(buffer);
96  if (data_->size() - offset_ < required_size)
97  required_size = data_->size() - offset_;
98  if (required_size > 0)
99  memcpy(char_buffer, &(*data_)[offset_], required_size);
100  offset_ += required_size;
101  return required_size / size;
102 }
int size() const
Definition: genericvector.h:72
#define ASSERT_HOST(x)
Definition: errcode.h:84
int count(LIST var_list)
Definition: oldlist.cpp:108
int tesseract::TFile::FWrite ( const void *  buffer,
int  size,
int  count 
)

Definition at line 131 of file serialis.cpp.

131  {
132  ASSERT_HOST(is_writing_);
133  int total = size * count;
134  if (total <= 0) return 0;
135  const char* buf = reinterpret_cast<const char*>(buffer);
136  // This isn't very efficient, but memory is so fast compared to disk
137  // that it is relatively unimportant, and very simple.
138  for (int i = 0; i < total; ++i)
139  data_->push_back(buf[i]);
140  return count;
141 }
int push_back(T object)
#define ASSERT_HOST(x)
Definition: errcode.h:84
int count(LIST var_list)
Definition: oldlist.cpp:108
bool tesseract::TFile::Open ( const STRING filename,
FileReader  reader 
)

Definition at line 35 of file serialis.cpp.

35  {
36  if (!data_is_owned_) {
37  data_ = new GenericVector<char>;
38  data_is_owned_ = true;
39  }
40  offset_ = 0;
41  is_writing_ = false;
42  if (reader == NULL)
43  return LoadDataFromFile(filename, data_);
44  else
45  return (*reader)(filename, data_);
46 }
bool LoadDataFromFile(const STRING &filename, GenericVector< char > *data)
#define NULL
Definition: host.h:144
bool tesseract::TFile::Open ( const char *  data,
int  size 
)

Definition at line 48 of file serialis.cpp.

48  {
49  offset_ = 0;
50  if (!data_is_owned_) {
51  data_ = new GenericVector<char>;
52  data_is_owned_ = true;
53  }
54  is_writing_ = false;
55  data_->init_to_size(size, 0);
56  memcpy(&(*data_)[0], data, size);
57  return true;
58 }
void init_to_size(int size, T t)
bool tesseract::TFile::Open ( FILE *  fp,
inT64  end_offset 
)

Definition at line 60 of file serialis.cpp.

60  {
61  offset_ = 0;
62  inT64 current_pos = ftell(fp);
63  if (end_offset < 0) {
64  if (fseek(fp, 0, SEEK_END))
65  return false;
66  end_offset = ftell(fp);
67  if (fseek(fp, current_pos, SEEK_SET))
68  return false;
69  }
70  int size = end_offset - current_pos;
71  is_writing_ = false;
72  if (!data_is_owned_) {
73  data_ = new GenericVector<char>;
74  data_is_owned_ = true;
75  }
76  data_->init_to_size(size, 0);
77  return static_cast<int>(fread(&(*data_)[0], 1, size, fp)) == size;
78 }
void init_to_size(int size, T t)
long long int inT64
Definition: host.h:108
void tesseract::TFile::OpenWrite ( GenericVector< char > *  data)

Definition at line 109 of file serialis.cpp.

109  {
110  offset_ = 0;
111  if (data != NULL) {
112  if (data_is_owned_) delete data_;
113  data_ = data;
114  data_is_owned_ = false;
115  } else if (!data_is_owned_) {
116  data_ = new GenericVector<char>;
117  data_is_owned_ = true;
118  }
119  is_writing_ = true;
120  data_->truncate(0);
121 }
void truncate(int size)
#define NULL
Definition: host.h:144
void tesseract::TFile::Rewind ( )

Definition at line 104 of file serialis.cpp.

104  {
105  ASSERT_HOST(!is_writing_);
106  offset_ = 0;
107 }
#define ASSERT_HOST(x)
Definition: errcode.h:84

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