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)
 
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 264 of file SparseFile.h.

Member Typedef Documentation

◆ Mutex

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

Definition at line 313 of file SparseFile.h.

Constructor & Destructor Documentation

◆ ~FileReferences()

SparseFile::FileReferences::~FileReferences ( )
inline

Definition at line 895 of file SparseFile.h.

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

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

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.

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/7]

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

Definition at line 923 of file SparseFile.h.

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

References m_hRefs.

◆ ref() [3/7]

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

Definition at line 936 of file SparseFile.h.

937 {
938 #if USE_SHPTR
939  return m_vhRefs[idx].get();
940 #else
941  return m_vhRefs[idx];
942 #endif
943 }

References m_vhRefs.

◆ ref() [4/7]

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

Definition at line 949 of file SparseFile.h.

950 {
951 #if USE_SHPTR
952  return m_fRefs[idx].get();
953 #else
954  return m_fRefs[idx];
955 #endif
956 }

References m_fRefs.

◆ ref() [5/7]

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

Definition at line 962 of file SparseFile.h.

963 {
964 #if USE_SHPTR
965  return m_vfRefs[idx].get();
966 #else
967  return m_vfRefs[idx];
968 #endif
969 }

References m_vfRefs.

◆ ref() [6/7]

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

Definition at line 975 of file SparseFile.h.

976 {
977 #if USE_SHPTR
978  return m_dRefs[idx].get();
979 #else
980  return m_dRefs[idx];
981 #endif
982 }

References m_dRefs.

◆ ref() [7/7]

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

Definition at line 988 of file SparseFile.h.

989 {
990 #if USE_SHPTR
991  return m_vdRefs[idx].get();
992 #else
993  return m_vdRefs[idx];
994 #endif
995 }

References m_vdRefs.

◆ append() [2/7]

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

Definition at line 1000 of file SparseFile.h.

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

References m_hRefs, m_mutex, and ref().

◆ append() [3/7]

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

Definition at line 1011 of file SparseFile.h.

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

References m_mutex, m_vhRefs, and ref().

◆ append() [4/7]

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

Definition at line 1022 of file SparseFile.h.

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

References m_fRefs, m_mutex, and ref().

◆ append() [5/7]

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

Definition at line 1033 of file SparseFile.h.

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

References m_mutex, m_vfRefs, and ref().

◆ append() [6/7]

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

Definition at line 1044 of file SparseFile.h.

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

References m_dRefs, m_mutex, and ref().

◆ append() [7/7]

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

Definition at line 1055 of file SparseFile.h.

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

References m_mutex, m_vdRefs, and ref().

◆ numRefs() [2/7]

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

Definition at line 1066 of file SparseFile.h.

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

References m_hRefs, and m_mutex.

◆ numRefs() [3/7]

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

Definition at line 1076 of file SparseFile.h.

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

References m_mutex, and m_vhRefs.

◆ numRefs() [4/7]

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

Definition at line 1086 of file SparseFile.h.

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

References m_fRefs, and m_mutex.

◆ numRefs() [5/7]

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

Definition at line 1096 of file SparseFile.h.

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

References m_mutex, and m_vfRefs.

◆ numRefs() [6/7]

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

Definition at line 1106 of file SparseFile.h.

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

References m_dRefs, and m_mutex.

◆ numRefs() [7/7]

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

Definition at line 1116 of file SparseFile.h.

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

References m_mutex, and m_vdRefs.

Member Data Documentation

◆ m_hRefs

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

Definition at line 304 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 305 of file SparseFile.h.

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

◆ m_fRefs

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

Definition at line 306 of file SparseFile.h.

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

◆ m_vfRefs

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

Definition at line 307 of file SparseFile.h.

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

◆ m_dRefs

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

Definition at line 308 of file SparseFile.h.

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

◆ m_vdRefs

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

Definition at line 309 of file SparseFile.h.

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

◆ m_mutex

Mutex SparseFile::FileReferences::m_mutex
mutableprivate

Definition at line 315 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:115
SparseFile::FileReferences::m_vhRefs
std::deque< Reference< V3h >::Ptr > m_vhRefs
Definition: SparseFile.h:305
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:304
SparseFile::FileReferences::m_dRefs
std::deque< Reference< double >::Ptr > m_dRefs
Definition: SparseFile.h:308
SparseFile::FileReferences::m_vfRefs
std::deque< Reference< V3f >::Ptr > m_vfRefs
Definition: SparseFile.h:307
SparseFile::FileReferences::m_mutex
Mutex m_mutex
Definition: SparseFile.h:315
SparseFile::FileReferences::m_vdRefs
std::deque< Reference< V3d >::Ptr > m_vdRefs
Definition: SparseFile.h:309
SparseFile::FileReferences::m_fRefs
std::deque< Reference< float >::Ptr > m_fRefs
Definition: SparseFile.h:306