All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
tesseract::PointerVector< T > Singleton Reference

#include <genericvector.h>

Inheritance diagram for tesseract::PointerVector< T >:
GenericVector< T * >

Public Member Functions

 PointerVector ()
 
 PointerVector (int size)
 
 ~PointerVector ()
 
 PointerVector (const PointerVector &other)
 
PointerVector< T > & operator+= (const PointerVector &other)
 
PointerVector< T > & operator= (const PointerVector &other)
 
void remove (int index)
 
void truncate (int size)
 
void compact (TessResultCallback1< bool, const T * > *delete_cb)
 
void clear ()
 
bool Serialize (FILE *fp) const
 
bool Serialize (TFile *fp) const
 
bool DeSerialize (bool swap, FILE *fp)
 
bool DeSerialize (bool swap, TFile *fp)
 
void sort ()
 
- Public Member Functions inherited from GenericVector< T * >
 GenericVector ()
 
 GenericVector (int size, T *init_val)
 
 GenericVector (const GenericVector &other)
 
GenericVector< T * > & operator+= (const GenericVector &other)
 
void operator+= (T *t)
 
GenericVector< T * > & operator= (const GenericVector &other)
 
 ~GenericVector ()
 
void reserve (int size)
 
void double_the_size ()
 
void init_to_size (int size, T *t)
 
void resize_no_init (int size)
 
int size () const
 
int size_reserved () const
 
int length () const
 
bool empty () const
 
T *& get (int index) const
 
T *& back () const
 
T *& operator[] (int index) const
 
T * pop_back ()
 
int get_index (T *object) const
 
bool contains (T *object) const
 
T * contains_index (int index) const
 
int push_back (T *object)
 
int push_back_new (T *object)
 
int push_front (T *object)
 
void set (T *t, int index)
 
void insert (T *t, int index)
 
void remove (int index)
 
void truncate (int size)
 
void set_clear_callback (TessCallback1< T * > *cb)
 
void set_compare_callback (TessResultCallback2< bool, T *const &, T *const & > *cb)
 
void clear ()
 
void delete_data_pointers ()
 
void move (GenericVector< T * > *from)
 
bool write (FILE *f, TessResultCallback2< bool, FILE *, T *const & > *cb) const
 
bool read (FILE *f, TessResultCallback3< bool, FILE *, T **, bool > *cb, bool swap)
 
bool Serialize (FILE *fp) const
 
bool Serialize (tesseract::TFile *fp) const
 
bool DeSerialize (bool swap, FILE *fp)
 
bool DeSerialize (bool swap, tesseract::TFile *fp)
 
bool SerializeClasses (FILE *fp) const
 
bool SerializeClasses (tesseract::TFile *fp) const
 
bool DeSerializeClasses (bool swap, FILE *fp)
 
bool DeSerializeClasses (bool swap, tesseract::TFile *fp)
 
void reverse ()
 
void sort ()
 
void sort (int(*comparator)(const void *, const void *))
 
bool bool_binary_search (const T *&target) const
 
int binary_search (const T *&target) const
 
void compact_sorted ()
 
void compact (TessResultCallback1< bool, int > *delete_cb)
 
T * dot_product (const GenericVector< T * > &other) const
 
int choose_nth_item (int target_index)
 
void swap (int index1, int index2)
 
bool WithinBounds (const T *&rangemin, const T *&rangemax) const
 

Additional Inherited Members

- Static Public Member Functions inherited from GenericVector< T * >
static T ** double_the_size_memcpy (int current_size, T **data)
 
- Protected Member Functions inherited from GenericVector< T * >
int choose_nth_item (int target_index, int start, int end, unsigned int *seed)
 
void init (int size)
 
- Protected Attributes inherited from GenericVector< T * >
inT32 size_used_
 
inT32 size_reserved_
 
T ** data_
 
TessCallback1< T * > * clear_cb_
 
TessResultCallback2< bool, T
*const &, T *const & > * 
compare_cb_
 
- Static Protected Attributes inherited from GenericVector< T * >
static const int kDefaultVectorSize
 

Detailed Description

template<typename T>
singleton tesseract::PointerVector< T >

Definition at line 424 of file genericvector.h.

Constructor & Destructor Documentation

template<typename T>
tesseract::PointerVector< T >::PointerVector ( )
inline

Definition at line 426 of file genericvector.h.

template<typename T>
tesseract::PointerVector< T >::PointerVector ( int  size)
inlineexplicit

Definition at line 427 of file genericvector.h.

template<typename T>
tesseract::PointerVector< T >::~PointerVector ( )
inline

Definition at line 428 of file genericvector.h.

428  {
429  // Clear must be called here, even though it is called again by the base,
430  // as the base will call the wrong clear.
431  clear();
432  }
template<typename T>
tesseract::PointerVector< T >::PointerVector ( const PointerVector< T > &  other)
inline

Definition at line 435 of file genericvector.h.

435  {
436  this->init(other.size());
437  this->operator+=(other);
438  }
PointerVector< T > & operator+=(const PointerVector &other)
void init(int size)

Member Function Documentation

template<typename T>
void tesseract::PointerVector< T >::clear ( )
inline

Definition at line 496 of file genericvector.h.

template<typename T>
void tesseract::PointerVector< T >::compact ( TessResultCallback1< bool, const T * > *  delete_cb)
inline

Definition at line 472 of file genericvector.h.

472  {
473  int new_size = 0;
474  int old_index = 0;
475  // Until the callback returns true, the elements stay the same.
476  while (old_index < GenericVector<T*>::size_used_ &&
477  !delete_cb->Run(GenericVector<T*>::data_[old_index++]))
478  ++new_size;
479  // Now just copy anything else that gets false from delete_cb.
480  for (; old_index < GenericVector<T*>::size_used_; ++old_index) {
481  if (!delete_cb->Run(GenericVector<T*>::data_[old_index])) {
482  GenericVector<T*>::data_[new_size++] =
483  GenericVector<T*>::data_[old_index];
484  } else {
485  delete GenericVector<T*>::data_[old_index];
486  }
487  }
489  delete delete_cb;
490  }
virtual R Run(A1)=0
template<typename T>
bool tesseract::PointerVector< T >::DeSerialize ( bool  swap,
FILE *  fp 
)
inline

Definition at line 533 of file genericvector.h.

533  {
534  inT32 reserved;
535  if (fread(&reserved, sizeof(reserved), 1, fp) != 1) return false;
536  if (swap) Reverse32(&reserved);
537  GenericVector<T*>::reserve(reserved);
538  truncate(0);
539  for (int i = 0; i < reserved; ++i) {
540  inT8 non_null;
541  if (fread(&non_null, sizeof(non_null), 1, fp) != 1) return false;
542  T* item = NULL;
543  if (non_null) {
544  item = new T;
545  if (!item->DeSerialize(swap, fp)) {
546  delete item;
547  return false;
548  }
549  this->push_back(item);
550  } else {
551  // Null elements should keep their place in the vector.
552  this->push_back(NULL);
553  }
554  }
555  return true;
556  }
int push_back(T *object)
void Reverse32(void *ptr)
Definition: helpers.h:193
void swap(int index1, int index2)
void reserve(int size)
#define NULL
Definition: host.h:144
SIGNED char inT8
Definition: host.h:98
int inT32
Definition: host.h:102
template<typename T>
bool tesseract::PointerVector< T >::DeSerialize ( bool  swap,
TFile fp 
)
inline

Definition at line 557 of file genericvector.h.

557  {
558  inT32 reserved;
559  if (fp->FRead(&reserved, sizeof(reserved), 1) != 1) return false;
560  if (swap) Reverse32(&reserved);
561  GenericVector<T*>::reserve(reserved);
562  truncate(0);
563  for (int i = 0; i < reserved; ++i) {
564  inT8 non_null;
565  if (fp->FRead(&non_null, sizeof(non_null), 1) != 1) return false;
566  T* item = NULL;
567  if (non_null) {
568  item = new T;
569  if (!item->DeSerialize(swap, fp)) {
570  delete item;
571  return false;
572  }
573  this->push_back(item);
574  } else {
575  // Null elements should keep their place in the vector.
576  this->push_back(NULL);
577  }
578  }
579  return true;
580  }
int push_back(T *object)
void Reverse32(void *ptr)
Definition: helpers.h:193
void swap(int index1, int index2)
void reserve(int size)
#define NULL
Definition: host.h:144
SIGNED char inT8
Definition: host.h:98
int inT32
Definition: host.h:102
template<typename T>
PointerVector<T>& tesseract::PointerVector< T >::operator+= ( const PointerVector< T > &  other)
inline

Definition at line 439 of file genericvector.h.

439  {
440  this->reserve(this->size_used_ + other.size_used_);
441  for (int i = 0; i < other.size(); ++i) {
442  this->push_back(new T(*other.data_[i]));
443  }
444  return *this;
445  }
int push_back(T *object)
void reserve(int size)
template<typename T>
PointerVector<T>& tesseract::PointerVector< T >::operator= ( const PointerVector< T > &  other)
inline

Definition at line 447 of file genericvector.h.

447  {
448  if (&other != this) {
449  this->truncate(0);
450  this->operator+=(other);
451  }
452  return *this;
453  }
PointerVector< T > & operator+=(const PointerVector &other)
template<typename T>
void tesseract::PointerVector< T >::remove ( int  index)
inline

Definition at line 457 of file genericvector.h.

457  {
458  delete GenericVector<T*>::data_[index];
460  }
void remove(int index)
template<typename T>
bool tesseract::PointerVector< T >::Serialize ( FILE *  fp) const
inline

Definition at line 506 of file genericvector.h.

506  {
508  if (fwrite(&used, sizeof(used), 1, fp) != 1) return false;
509  for (int i = 0; i < used; ++i) {
510  inT8 non_null = GenericVector<T*>::data_[i] != NULL;
511  if (fwrite(&non_null, sizeof(non_null), 1, fp) != 1) return false;
512  if (non_null && !GenericVector<T*>::data_[i]->Serialize(fp)) return false;
513  }
514  return true;
515  }
bool Serialize(FILE *fp) const
#define NULL
Definition: host.h:144
SIGNED char inT8
Definition: host.h:98
int inT32
Definition: host.h:102
template<typename T>
bool tesseract::PointerVector< T >::Serialize ( TFile fp) const
inline

Definition at line 516 of file genericvector.h.

516  {
518  if (fp->FWrite(&used, sizeof(used), 1) != 1) return false;
519  for (int i = 0; i < used; ++i) {
520  inT8 non_null = GenericVector<T*>::data_[i] != NULL;
521  if (fp->FWrite(&non_null, sizeof(non_null), 1) != 1) return false;
522  if (non_null && !GenericVector<T*>::data_[i]->Serialize(fp)) return false;
523  }
524  return true;
525  }
bool Serialize(FILE *fp) const
#define NULL
Definition: host.h:144
SIGNED char inT8
Definition: host.h:98
int inT32
Definition: host.h:102
template<typename T>
void tesseract::PointerVector< T >::sort ( )
inline

Definition at line 584 of file genericvector.h.

584  {
585  sort(&sort_ptr_cmp<T>);
586  }
template<typename T>
void tesseract::PointerVector< T >::truncate ( int  size)
inline

Definition at line 464 of file genericvector.h.

464  {
465  for (int i = size; i < GenericVector<T*>::size_used_; ++i)
466  delete GenericVector<T*>::data_[i];
468  }
void truncate(int size)

The documentation for this singleton was generated from the following file: