tesseract 3.04.01

tesseract::TFile Class Reference

#include <serialis.h>

List of all members.

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.

    : offset_(0), data_(NULL), data_is_owned_(false), is_writing_(false) {
}
tesseract::TFile::~TFile ( )

Definition at line 30 of file serialis.cpp.

              {
  if (data_is_owned_)
    delete data_;
}

Member Function Documentation

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

Definition at line 123 of file serialis.cpp.

                                                                {
  ASSERT_HOST(is_writing_);
  if (writer == NULL)
    return SaveDataToFile(*data_, filename);
  else
    return (*writer)(*data_, filename);
}
char * tesseract::TFile::FGets ( char *  buffer,
int  buffer_size 
)

Definition at line 80 of file serialis.cpp.

                                                {
  ASSERT_HOST(!is_writing_);
  int size = 0;
  while (size + 1 < buffer_size && offset_ < data_->size()) {
    buffer[size++] = (*data_)[offset_++];
    if ((*data_)[offset_ - 1] == '\n') break;
  }
  if (size < buffer_size) buffer[size] = '\0';
  return size > 0 ? buffer : NULL;
}
int tesseract::TFile::FRead ( void *  buffer,
int  size,
int  count 
)

Definition at line 91 of file serialis.cpp.

                                                  {
  ASSERT_HOST(!is_writing_);
  int required_size = size * count;
  if (required_size <= 0) return 0;
  char* char_buffer = reinterpret_cast<char*>(buffer);
  if (data_->size() - offset_ < required_size)
    required_size = data_->size() - offset_;
  if (required_size > 0)
    memcpy(char_buffer, &(*data_)[offset_], required_size);
  offset_ += required_size;
  return required_size / size;
}
int tesseract::TFile::FWrite ( const void *  buffer,
int  size,
int  count 
)

Definition at line 131 of file serialis.cpp.

                                                         {
  ASSERT_HOST(is_writing_);
  int total = size * count;
  if (total <= 0) return 0;
  const char* buf = reinterpret_cast<const char*>(buffer);
  // This isn't very efficient, but memory is so fast compared to disk
  // that it is relatively unimportant, and very simple.
  for (int i = 0; i < total; ++i)
    data_->push_back(buf[i]);
  return count;
}
bool tesseract::TFile::Open ( const char *  data,
int  size 
)

Definition at line 48 of file serialis.cpp.

                                           {
  offset_ = 0;
  if (!data_is_owned_) {
    data_ = new GenericVector<char>;
    data_is_owned_ = true;
  }
  is_writing_ = false;
  data_->init_to_size(size, 0);
  memcpy(&(*data_)[0], data, size);
  return true;
}
bool tesseract::TFile::Open ( const STRING filename,
FileReader  reader 
)

Definition at line 35 of file serialis.cpp.

                                                          {
  if (!data_is_owned_) {
    data_ = new GenericVector<char>;
    data_is_owned_ = true;
  }
  offset_ = 0;
  is_writing_ = false;
  if (reader == NULL)
    return LoadDataFromFile(filename, data_);
  else
    return (*reader)(filename, data_);
}
bool tesseract::TFile::Open ( FILE *  fp,
inT64  end_offset 
)

Definition at line 60 of file serialis.cpp.

                                           {
  offset_ = 0;
  inT64 current_pos = ftell(fp);
  if (end_offset < 0) {
    if (fseek(fp, 0, SEEK_END))
      return false;
    end_offset = ftell(fp);
    if (fseek(fp, current_pos, SEEK_SET))
      return false;
  }
  int size = end_offset - current_pos;
  is_writing_ = false;
  if (!data_is_owned_) {
    data_ = new GenericVector<char>;
    data_is_owned_ = true;
  }
  data_->init_to_size(size, 0);
  return static_cast<int>(fread(&(*data_)[0], 1, size, fp)) == size;
}
void tesseract::TFile::OpenWrite ( GenericVector< char > *  data)

Definition at line 109 of file serialis.cpp.

                                               {
  offset_ = 0;
  if (data != NULL) {
    if (data_is_owned_) delete data_;
    data_ = data;
    data_is_owned_ = false;
  } else if (!data_is_owned_) {
    data_ = new GenericVector<char>;
    data_is_owned_ = true;
  }
  is_writing_ = true;
  data_->truncate(0);
}
void tesseract::TFile::Rewind ( )

Definition at line 104 of file serialis.cpp.

                   {
  ASSERT_HOST(!is_writing_);
  offset_ = 0;
}

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines