Field3D
SparseFile::FileReferences Class Reference

#include <SparseFile.h>

Public Member Functions

template<>
size_t append (Reference< double >::Ptr ref)
 
template<>
size_t append (Reference< float >::Ptr ref)
 
template<>
size_t append (Reference< half >::Ptr ref)
 
template<>
size_t append (Reference< V3d >::Ptr ref)
 
template<>
size_t append (Reference< V3f >::Ptr ref)
 
template<>
size_t append (Reference< V3h >::Ptr ref)
 
template<class Data_T >
size_t append (typename Reference< Data_T >::Ptr ref)
 Appends a reference to the collection. This is specialized so that the correct data member is accessed. More...
 
long long int memSize () const
 Returns the memory use for the refs. More...
 
template<class Data_T >
size_t numRefs () const
 Returns the number of file references of the corresponding collection. More...
 
template<>
size_t numRefs () const
 
template<>
size_t numRefs () const
 
template<>
size_t numRefs () const
 
template<>
size_t numRefs () const
 
template<>
size_t numRefs () const
 
template<>
size_t numRefs () const
 
template<class Data_T >
Reference< Data_T > * ref (size_t idx)
 Returns a reference to the index. This is specialized so that the correct data member is accessed. More...
 
template<>
Reference< half > * ref (size_t idx)
 
 ~FileReferences ()
 

Private Types

typedef boost::mutex Mutex
 

Private Attributes

std::deque< Reference< double >::Ptr > m_dRefs
 
std::deque< Reference< float >::Ptr > m_fRefs
 
std::deque< Reference< half >::Ptr > m_hRefs
 
Mutex m_mutex
 
std::deque< Reference< V3d >::Ptr > m_vdRefs
 
std::deque< Reference< V3f >::Ptr > m_vfRefs
 
std::deque< Reference< V3h >::Ptr > m_vhRefs
 

Detailed Description

Definition at line 265 of file SparseFile.h.

Member Typedef Documentation

◆ Mutex

typedef boost::mutex SparseFile::FileReferences::Mutex
private

Definition at line 314 of file SparseFile.h.

Constructor & Destructor Documentation

◆ ~FileReferences()

SparseFile::FileReferences::~FileReferences ( )
inline

Definition at line 896 of file SparseFile.h.

897 {
898 #if !USE_SHPTR
899  for (size_t i = 0, end = m_hRefs.size(); i < end; ++i) {
900  delete m_hRefs[i];
901  }
902  for (size_t i = 0, end = m_fRefs.size(); i < end; ++i) {
903  delete m_fRefs[i];
904  }
905  for (size_t i = 0, end = m_dRefs.size(); i < end; ++i) {
906  delete m_dRefs[i];
907  }
908  for (size_t i = 0, end = m_vhRefs.size(); i < end; ++i) {
909  delete m_vhRefs[i];
910  }
911  for (size_t i = 0, end = m_vfRefs.size(); i < end; ++i) {
912  delete m_vfRefs[i];
913  }
914  for (size_t i = 0, end = m_vdRefs.size(); i < end; ++i) {
915  delete m_vdRefs[i];
916  }
917 #endif
918 }

References m_dRefs, m_fRefs, m_hRefs, m_vdRefs, m_vfRefs, and m_vhRefs.

Member Function Documentation

◆ ref() [1/2]

◆ append() [1/7]

template<class Data_T >
size_t SparseFile::FileReferences::append ( typename Reference< Data_T >::Ptr  ref)

Appends a reference to the collection. This is specialized so that the correct data member is accessed.

Referenced by SparseFileManager::getNextId().

◆ numRefs() [1/7]

template<class Data_T >
size_t SparseFile::FileReferences::numRefs ( ) const

Returns the number of file references of the corresponding collection.

Referenced by SparseFileManager::numLoadedBlocks(), SparseFileManager::resetCacheStatistics(), SparseFileManager::totalLoadedBlocks(), and SparseFileManager::totalLoads().

◆ memSize()

long long int SparseFile::FileReferences::memSize ( ) const

Returns the memory use for the refs.

Definition at line 452 of file SparseFile.cpp.

453 {
454  Mutex::scoped_lock lock(m_mutex);
455 
456  long long int size = 0;
457 
458  // Size of the std::deque's
459  size += m_hRefs.size() * sizeof(Reference<half>::Ptr);
460  size += m_vhRefs.size() * sizeof(Reference<V3h>::Ptr);
461  size += m_fRefs.size() * sizeof(Reference<float>::Ptr);
462  size += m_vfRefs.size() * sizeof(Reference<V3f>::Ptr);
463  size += m_dRefs.size() * sizeof(Reference<double>::Ptr);
464  size += m_vdRefs.size() * sizeof(Reference<V3d>::Ptr);
465 
466  // Size of the references themselves
467  for (size_t i = 0, end = m_hRefs.size(); i < end; ++i) {
468  size += m_hRefs[i]->memSize();
469  }
470  for (size_t i = 0, end = m_vhRefs.size(); i < end; ++i) {
471  size += m_vhRefs[i]->memSize();
472  }
473  for (size_t i = 0, end = m_fRefs.size(); i < end; ++i) {
474  size += m_fRefs[i]->memSize();
475  }
476  for (size_t i = 0, end = m_vfRefs.size(); i < end; ++i) {
477  size += m_vfRefs[i]->memSize();
478  }
479  for (size_t i = 0, end = m_dRefs.size(); i < end; ++i) {
480  size += m_dRefs[i]->memSize();
481  }
482  for (size_t i = 0, end = m_vdRefs.size(); i < end; ++i) {
483  size += m_vdRefs[i]->memSize();
484  }
485 
486  return size;
487 }

References m_dRefs, m_fRefs, m_hRefs, m_mutex, m_vdRefs, m_vfRefs, and m_vhRefs.

Referenced by SparseFileManager::memSize().

◆ ref() [2/2]

template<>
Reference< V3d > * SparseFile::FileReferences::ref ( size_t  idx)
inline

Definition at line 924 of file SparseFile.h.

925 {
926 #if USE_SHPTR
927  return m_hRefs[idx].get();
928 #else
929  return m_hRefs[idx];
930 #endif
931 }

References m_hRefs.

◆ append() [2/7]

template<>
size_t SparseFile::FileReferences::append ( Reference< half >::Ptr  ref)
inline

Definition at line 1001 of file SparseFile.h.

1002 {
1003  Mutex::scoped_lock lock(m_mutex);
1004 
1005  m_hRefs.push_back(ref);
1006  return m_hRefs.size() - 1;
1007 }

References m_hRefs, m_mutex, and ref().

◆ append() [3/7]

template<>
size_t SparseFile::FileReferences::append ( Reference< V3h >::Ptr  ref)
inline

Definition at line 1012 of file SparseFile.h.

1013 {
1014  Mutex::scoped_lock lock(m_mutex);
1015 
1016  m_vhRefs.push_back(ref);
1017  return m_vhRefs.size() - 1;
1018 }

References m_mutex, m_vhRefs, and ref().

◆ append() [4/7]

template<>
size_t SparseFile::FileReferences::append ( Reference< float >::Ptr  ref)
inline

Definition at line 1023 of file SparseFile.h.

1024 {
1025  Mutex::scoped_lock lock(m_mutex);
1026 
1027  m_fRefs.push_back(ref);
1028  return m_fRefs.size() - 1;
1029 }

References m_fRefs, m_mutex, and ref().

◆ append() [5/7]

template<>
size_t SparseFile::FileReferences::append ( Reference< V3f >::Ptr  ref)
inline

Definition at line 1034 of file SparseFile.h.

1035 {
1036  Mutex::scoped_lock lock(m_mutex);
1037 
1038  m_vfRefs.push_back(ref);
1039  return m_vfRefs.size() - 1;
1040 }

References m_mutex, m_vfRefs, and ref().

◆ append() [6/7]

template<>
size_t SparseFile::FileReferences::append ( Reference< double >::Ptr  ref)
inline

Definition at line 1045 of file SparseFile.h.

1046 {
1047  Mutex::scoped_lock lock(m_mutex);
1048 
1049  m_dRefs.push_back(ref);
1050  return m_dRefs.size() - 1;
1051 }

References m_dRefs, m_mutex, and ref().

◆ append() [7/7]

template<>
size_t SparseFile::FileReferences::append ( Reference< V3d >::Ptr  ref)
inline

Definition at line 1056 of file SparseFile.h.

1057 {
1058  Mutex::scoped_lock lock(m_mutex);
1059 
1060  m_vdRefs.push_back(ref);
1061  return m_vdRefs.size() - 1;
1062 }

References m_mutex, m_vdRefs, and ref().

◆ numRefs() [2/7]

template<>
size_t SparseFile::FileReferences::numRefs ( ) const
inline

Definition at line 1067 of file SparseFile.h.

1068 {
1069  Mutex::scoped_lock lock(m_mutex);
1070 
1071  return m_hRefs.size();
1072 }

References m_hRefs, and m_mutex.

◆ numRefs() [3/7]

template<>
size_t SparseFile::FileReferences::numRefs ( ) const
inline

Definition at line 1077 of file SparseFile.h.

1078 {
1079  Mutex::scoped_lock lock(m_mutex);
1080 
1081  return m_vhRefs.size();
1082 }

References m_mutex, and m_vhRefs.

◆ numRefs() [4/7]

template<>
size_t SparseFile::FileReferences::numRefs ( ) const
inline

Definition at line 1087 of file SparseFile.h.

1088 {
1089  Mutex::scoped_lock lock(m_mutex);
1090 
1091  return m_fRefs.size();
1092 }

References m_fRefs, and m_mutex.

◆ numRefs() [5/7]

template<>
size_t SparseFile::FileReferences::numRefs ( ) const
inline

Definition at line 1097 of file SparseFile.h.

1098 {
1099  Mutex::scoped_lock lock(m_mutex);
1100 
1101  return m_vfRefs.size();
1102 }

References m_mutex, and m_vfRefs.

◆ numRefs() [6/7]

template<>
size_t SparseFile::FileReferences::numRefs ( ) const
inline

Definition at line 1107 of file SparseFile.h.

1108 {
1109  Mutex::scoped_lock lock(m_mutex);
1110 
1111  return m_dRefs.size();
1112 }

References m_dRefs, and m_mutex.

◆ numRefs() [7/7]

template<>
size_t SparseFile::FileReferences::numRefs ( ) const
inline

Definition at line 1117 of file SparseFile.h.

1118 {
1119  Mutex::scoped_lock lock(m_mutex);
1120 
1121  return m_vdRefs.size();
1122 }

References m_mutex, and m_vdRefs.

Member Data Documentation

◆ m_hRefs

std::deque<Reference<half>::Ptr> SparseFile::FileReferences::m_hRefs
private

Definition at line 305 of file SparseFile.h.

Referenced by append(), memSize(), numRefs(), ref(), and ~FileReferences().

◆ m_vhRefs

std::deque<Reference<V3h>::Ptr> SparseFile::FileReferences::m_vhRefs
private

Definition at line 306 of file SparseFile.h.

Referenced by append(), memSize(), numRefs(), and ~FileReferences().

◆ m_fRefs

std::deque<Reference<float>::Ptr> SparseFile::FileReferences::m_fRefs
private

Definition at line 307 of file SparseFile.h.

Referenced by append(), memSize(), numRefs(), and ~FileReferences().

◆ m_vfRefs

std::deque<Reference<V3f>::Ptr> SparseFile::FileReferences::m_vfRefs
private

Definition at line 308 of file SparseFile.h.

Referenced by append(), memSize(), numRefs(), and ~FileReferences().

◆ m_dRefs

std::deque<Reference<double>::Ptr> SparseFile::FileReferences::m_dRefs
private

Definition at line 309 of file SparseFile.h.

Referenced by append(), memSize(), numRefs(), and ~FileReferences().

◆ m_vdRefs

std::deque<Reference<V3d>::Ptr> SparseFile::FileReferences::m_vdRefs
private

Definition at line 310 of file SparseFile.h.

Referenced by append(), memSize(), numRefs(), and ~FileReferences().

◆ m_mutex

Mutex SparseFile::FileReferences::m_mutex
mutableprivate

Definition at line 316 of file SparseFile.h.

Referenced by append(), memSize(), and numRefs().


The documentation for this class was generated from the following files:
SparseFile::Reference::Ptr
Reference * Ptr
Definition: SparseFile.h:116
SparseFile::FileReferences::m_vhRefs
std::deque< Reference< V3h >::Ptr > m_vhRefs
Definition: SparseFile.h:306
SparseFile::FileReferences::ref
Reference< Data_T > * ref(size_t idx)
Returns a reference to the index. This is specialized so that the correct data member is accessed.
SparseFile::FileReferences::m_hRefs
std::deque< Reference< half >::Ptr > m_hRefs
Definition: SparseFile.h:305
SparseFile::FileReferences::m_dRefs
std::deque< Reference< double >::Ptr > m_dRefs
Definition: SparseFile.h:309
SparseFile::FileReferences::m_vfRefs
std::deque< Reference< V3f >::Ptr > m_vfRefs
Definition: SparseFile.h:308
SparseFile::FileReferences::m_mutex
Mutex m_mutex
Definition: SparseFile.h:316
SparseFile::FileReferences::m_vdRefs
std::deque< Reference< V3d >::Ptr > m_vdRefs
Definition: SparseFile.h:310
SparseFile::FileReferences::m_fRefs
std::deque< Reference< float >::Ptr > m_fRefs
Definition: SparseFile.h:307