Field3D
SparseFile::FileReferences Class Reference

#include <SparseFile.h>

Public Member Functions

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...
 
template<>
size_t append (Reference< half >::Ptr ref)
 
template<>
size_t append (Reference< V3h >::Ptr ref)
 
template<>
size_t append (Reference< float >::Ptr ref)
 
template<>
size_t append (Reference< V3f >::Ptr ref)
 
template<>
size_t append (Reference< double >::Ptr ref)
 
template<>
size_t append (Reference< V3d >::Ptr ref)
 
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)
 
template<>
Reference< V3h > * ref (size_t idx)
 
template<>
Reference< float > * ref (size_t idx)
 
template<>
Reference< V3f > * ref (size_t idx)
 
template<>
Reference< double > * ref (size_t idx)
 
template<>
Reference< V3d > * 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.

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

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 }
std::deque< Reference< V3f >::Ptr > m_vfRefs
Definition: SparseFile.h:308
std::deque< Reference< V3d >::Ptr > m_vdRefs
Definition: SparseFile.h:310
std::deque< Reference< float >::Ptr > m_fRefs
Definition: SparseFile.h:307
std::deque< Reference< double >::Ptr > m_dRefs
Definition: SparseFile.h:309
std::deque< Reference< V3h >::Ptr > m_vhRefs
Definition: SparseFile.h:306
std::deque< Reference< half >::Ptr > m_hRefs
Definition: SparseFile.h:305

Member Function Documentation

◆ ref() [1/7]

◆ 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.

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

Referenced by SparseFileManager::memSize().

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 }
std::deque< Reference< V3f >::Ptr > m_vfRefs
Definition: SparseFile.h:308
std::deque< Reference< V3d >::Ptr > m_vdRefs
Definition: SparseFile.h:310
std::deque< Reference< float >::Ptr > m_fRefs
Definition: SparseFile.h:307
std::deque< Reference< double >::Ptr > m_dRefs
Definition: SparseFile.h:309
std::deque< Reference< V3h >::Ptr > m_vhRefs
Definition: SparseFile.h:306
std::deque< Reference< half >::Ptr > m_hRefs
Definition: SparseFile.h:305

◆ ref() [2/7]

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

Definition at line 924 of file SparseFile.h.

References m_hRefs.

925 {
926 #if USE_SHPTR
927  return m_hRefs[idx].get();
928 #else
929  return m_hRefs[idx];
930 #endif
931 }
std::deque< Reference< half >::Ptr > m_hRefs
Definition: SparseFile.h:305

◆ ref() [3/7]

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

Definition at line 937 of file SparseFile.h.

References m_vhRefs.

938 {
939 #if USE_SHPTR
940  return m_vhRefs[idx].get();
941 #else
942  return m_vhRefs[idx];
943 #endif
944 }
std::deque< Reference< V3h >::Ptr > m_vhRefs
Definition: SparseFile.h:306

◆ ref() [4/7]

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

Definition at line 950 of file SparseFile.h.

References m_fRefs.

951 {
952 #if USE_SHPTR
953  return m_fRefs[idx].get();
954 #else
955  return m_fRefs[idx];
956 #endif
957 }
std::deque< Reference< float >::Ptr > m_fRefs
Definition: SparseFile.h:307

◆ ref() [5/7]

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

Definition at line 963 of file SparseFile.h.

References m_vfRefs.

964 {
965 #if USE_SHPTR
966  return m_vfRefs[idx].get();
967 #else
968  return m_vfRefs[idx];
969 #endif
970 }
std::deque< Reference< V3f >::Ptr > m_vfRefs
Definition: SparseFile.h:308

◆ ref() [6/7]

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

Definition at line 976 of file SparseFile.h.

References m_dRefs.

977 {
978 #if USE_SHPTR
979  return m_dRefs[idx].get();
980 #else
981  return m_dRefs[idx];
982 #endif
983 }
std::deque< Reference< double >::Ptr > m_dRefs
Definition: SparseFile.h:309

◆ ref() [7/7]

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

Definition at line 989 of file SparseFile.h.

References m_vdRefs.

990 {
991 #if USE_SHPTR
992  return m_vdRefs[idx].get();
993 #else
994  return m_vdRefs[idx];
995 #endif
996 }
std::deque< Reference< V3d >::Ptr > m_vdRefs
Definition: SparseFile.h:310

◆ 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 }
Reference< Data_T > * ref(size_t idx)
Returns a reference to the index. This is specialized so that the correct data member is accessed...
std::deque< Reference< half >::Ptr > m_hRefs
Definition: SparseFile.h:305

◆ 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 }
Reference< Data_T > * ref(size_t idx)
Returns a reference to the index. This is specialized so that the correct data member is accessed...
std::deque< Reference< V3h >::Ptr > m_vhRefs
Definition: SparseFile.h:306

◆ 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 }
std::deque< Reference< float >::Ptr > m_fRefs
Definition: SparseFile.h:307
Reference< Data_T > * ref(size_t idx)
Returns a reference to the index. This is specialized so that the correct data member is accessed...

◆ 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 }
std::deque< Reference< V3f >::Ptr > m_vfRefs
Definition: SparseFile.h:308
Reference< Data_T > * ref(size_t idx)
Returns a reference to the index. This is specialized so that the correct data member is accessed...

◆ 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 }
Reference< Data_T > * ref(size_t idx)
Returns a reference to the index. This is specialized so that the correct data member is accessed...
std::deque< Reference< double >::Ptr > m_dRefs
Definition: SparseFile.h:309

◆ 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 }
std::deque< Reference< V3d >::Ptr > m_vdRefs
Definition: SparseFile.h:310
Reference< Data_T > * ref(size_t idx)
Returns a reference to the index. This is specialized so that the correct data member is accessed...

◆ 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 }
std::deque< Reference< half >::Ptr > m_hRefs
Definition: SparseFile.h:305

◆ 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 }
std::deque< Reference< V3h >::Ptr > m_vhRefs
Definition: SparseFile.h:306

◆ 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 }
std::deque< Reference< float >::Ptr > m_fRefs
Definition: SparseFile.h:307

◆ 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 }
std::deque< Reference< V3f >::Ptr > m_vfRefs
Definition: SparseFile.h:308

◆ 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 }
std::deque< Reference< double >::Ptr > m_dRefs
Definition: SparseFile.h:309

◆ 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 }
std::deque< Reference< V3d >::Ptr > m_vdRefs
Definition: SparseFile.h:310

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 memSize(), 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 memSize(), ref(), and ~FileReferences().

◆ m_fRefs

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

Definition at line 307 of file SparseFile.h.

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

◆ m_vfRefs

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

Definition at line 308 of file SparseFile.h.

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

◆ m_dRefs

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

Definition at line 309 of file SparseFile.h.

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

◆ m_vdRefs

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

Definition at line 310 of file SparseFile.h.

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

◆ m_mutex

Mutex SparseFile::FileReferences::m_mutex
mutableprivate

Definition at line 316 of file SparseFile.h.

Referenced by memSize().


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