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.
 
long long int memSize () const
 Returns the memory use for the refs.
 
template<class Data_T >
size_t numRefs () const
 Returns the number of file references of the corresponding collection.
 
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.
 
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}
std::deque< Reference< double >::Ptr > m_dRefs
Definition: SparseFile.h:309
std::deque< Reference< float >::Ptr > m_fRefs
Definition: SparseFile.h:307
std::deque< Reference< V3d >::Ptr > m_vdRefs
Definition: SparseFile.h:310
std::deque< Reference< V3f >::Ptr > m_vfRefs
Definition: SparseFile.h:308
std::deque< Reference< half >::Ptr > m_hRefs
Definition: SparseFile.h:305
std::deque< Reference< V3h >::Ptr > m_vhRefs
Definition: SparseFile.h:306

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}
Reference< Data_T > * ref(size_t idx)
Returns a reference to the index. This is specialized so that the correct data member is accessed.

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: