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

Member Typedef Documentation

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

Definition at line 313 of file SparseFile.h.

Constructor & Destructor Documentation

SparseFile::FileReferences::~FileReferences ( )
inline

Definition at line 895 of file SparseFile.h.

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

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

Member Function Documentation

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().

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().

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:307
std::deque< Reference< V3d >::Ptr > m_vdRefs
Definition: SparseFile.h:309
std::deque< Reference< float >::Ptr > m_fRefs
Definition: SparseFile.h:306
std::deque< Reference< double >::Ptr > m_dRefs
Definition: SparseFile.h:308
std::deque< Reference< V3h >::Ptr > m_vhRefs
Definition: SparseFile.h:305
std::deque< Reference< half >::Ptr > m_hRefs
Definition: SparseFile.h:304
template<>
Reference<half>* SparseFile::FileReferences::ref ( size_t  idx)
inline

Definition at line 923 of file SparseFile.h.

References m_hRefs.

924 {
925 #if USE_SHPTR
926  return m_hRefs[idx].get();
927 #else
928  return m_hRefs[idx];
929 #endif
930 }
std::deque< Reference< half >::Ptr > m_hRefs
Definition: SparseFile.h:304
template<>
Reference<V3h>* SparseFile::FileReferences::ref ( size_t  idx)
inline

Definition at line 936 of file SparseFile.h.

References m_vhRefs.

937 {
938 #if USE_SHPTR
939  return m_vhRefs[idx].get();
940 #else
941  return m_vhRefs[idx];
942 #endif
943 }
std::deque< Reference< V3h >::Ptr > m_vhRefs
Definition: SparseFile.h:305
template<>
Reference<float>* SparseFile::FileReferences::ref ( size_t  idx)
inline

Definition at line 949 of file SparseFile.h.

References m_fRefs.

950 {
951 #if USE_SHPTR
952  return m_fRefs[idx].get();
953 #else
954  return m_fRefs[idx];
955 #endif
956 }
std::deque< Reference< float >::Ptr > m_fRefs
Definition: SparseFile.h:306
template<>
Reference<V3f>* SparseFile::FileReferences::ref ( size_t  idx)
inline

Definition at line 962 of file SparseFile.h.

References m_vfRefs.

963 {
964 #if USE_SHPTR
965  return m_vfRefs[idx].get();
966 #else
967  return m_vfRefs[idx];
968 #endif
969 }
std::deque< Reference< V3f >::Ptr > m_vfRefs
Definition: SparseFile.h:307
template<>
Reference<double>* SparseFile::FileReferences::ref ( size_t  idx)
inline

Definition at line 975 of file SparseFile.h.

References m_dRefs.

976 {
977 #if USE_SHPTR
978  return m_dRefs[idx].get();
979 #else
980  return m_dRefs[idx];
981 #endif
982 }
std::deque< Reference< double >::Ptr > m_dRefs
Definition: SparseFile.h:308
template<>
Reference<V3d>* SparseFile::FileReferences::ref ( size_t  idx)
inline

Definition at line 988 of file SparseFile.h.

References m_vdRefs.

989 {
990 #if USE_SHPTR
991  return m_vdRefs[idx].get();
992 #else
993  return m_vdRefs[idx];
994 #endif
995 }
std::deque< Reference< V3d >::Ptr > m_vdRefs
Definition: SparseFile.h:309
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 }
std::deque< Reference< half >::Ptr > m_hRefs
Definition: SparseFile.h:304
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 }
std::deque< Reference< V3h >::Ptr > m_vhRefs
Definition: SparseFile.h:305
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 }
std::deque< Reference< float >::Ptr > m_fRefs
Definition: SparseFile.h:306
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 }
std::deque< Reference< V3f >::Ptr > m_vfRefs
Definition: SparseFile.h:307
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 }
std::deque< Reference< double >::Ptr > m_dRefs
Definition: SparseFile.h:308
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 }
std::deque< Reference< V3d >::Ptr > m_vdRefs
Definition: SparseFile.h:309
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 }
std::deque< Reference< half >::Ptr > m_hRefs
Definition: SparseFile.h:304
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 }
std::deque< Reference< V3h >::Ptr > m_vhRefs
Definition: SparseFile.h:305
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 }
std::deque< Reference< float >::Ptr > m_fRefs
Definition: SparseFile.h:306
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 }
std::deque< Reference< V3f >::Ptr > m_vfRefs
Definition: SparseFile.h:307
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 }
std::deque< Reference< double >::Ptr > m_dRefs
Definition: SparseFile.h:308
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 }
std::deque< Reference< V3d >::Ptr > m_vdRefs
Definition: SparseFile.h:309

Member Data Documentation

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

Definition at line 304 of file SparseFile.h.

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

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

Definition at line 305 of file SparseFile.h.

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

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

Definition at line 306 of file SparseFile.h.

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

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

Definition at line 307 of file SparseFile.h.

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

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

Definition at line 308 of file SparseFile.h.

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

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

Definition at line 309 of file SparseFile.h.

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

Mutex SparseFile::FileReferences::m_mutex
mutableprivate

Definition at line 315 of file SparseFile.h.

Referenced by memSize().


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