MeVisLab Toolbox Reference
mlDICOMCachedIOTreeCache.h
Go to the documentation of this file.
1 // Copyright (c) Fraunhofer MEVIS, Germany. All rights reserved.
2 // **InsertLicense** code
3 //----------------------------------------------------------------------------------
5 
9 //----------------------------------------------------------------------------------
10 #pragma once
11 
12 // Local includes
13 #include "MLDICOMCachedIOSystem.h"
14 #include "mlTypeDefs.h"
15 #include "mlFields.h"
16 
17 // Include for ML_DELETE
18 #include "mlErrorMacros.h"
19 
20 ML_START_NAMESPACE
22 template<typename CT> class DICOMCachedIOFileHandleBase;
23 
25 
27 typedef DICOMCachedIOFileHandleBase<char> DICOMCachedIOFileHandle;
28 class DicomMessageCollector;
30 ML_END_NAMESPACE
31 
32 // DICOM
33 #include <DCMTree_Lib.h>
34 
35 // Forwards.
37 
38 //----------------------------------------------------------------------------------
40 //----------------------------------------------------------------------------------
42 
43  public:
44 
49 
50 
51  //----------------------------------------------------------------------------------
53  //----------------------------------------------------------------------------------
54 
63  MLint flush(const MLint maxBytes, const bool flushAll=false);
64 
67 
70 
72  void setMaxNumBytes(MLint maxNumBytes);
74  void setMaxNumMegaBytes(MLint maxNumMegaBytes);
75 
78 
81 
84 
87 
89  void clear();
90 
93 
96 
97  //----------------------------------------------------------------------------------
99  //----------------------------------------------------------------------------------
100 
104 
105  //----------------------------------------------------------------------------------
107  //----------------------------------------------------------------------------------
108 
116  const ML_NAMESPACE::DICOMCachedIOFileHandle &origFileHandle,
117  size_t frameIndex);
118 
119  //----------------------------------------------------------------------------------
121  //----------------------------------------------------------------------------------
122 
126  const ML_NAMESPACE::DICOMCachedIOFileHandle &fileHandle);
127 
132  DCMTree::TreePtr &treePtr);
133 
137 
145  DCMTree::TreePtr &treePtr,
146  ML_NAMESPACE::DicomMessageCollector &dcmMsgCollector);
147 
155  DCMTree::Const_TreePtr &treePtr,
156  ML_NAMESPACE::DicomMessageCollector &dcmMsgCollector);
157 
164  DCMTree::StructuredMFPtr &smfPtr,
165  ML_NAMESPACE::DicomMessageCollector &dcmMsgCollector);
166 
173  DCMTree::TreePtr &treePtr);
174 
175 private:
177  static MLDICOMCachedIOTreeCacheMap *_treeCachePtr;
178 
180  static MLuint _instanceCounter;
181 };
Project global and OS specific declarations.
#define MLDICOMCachedIO_EXPORT
If included by external modules, exported symbols are declared as import symbols.
Class containing the DCMTree look up map and the list of most recently used DICOM files as names.
Class for DICOM tree accesses and caching of them for DICOM importing modules.
void storeSingleFrameTree(DCMTree::TreePtr singleFrameTree, const ml::DICOMCachedIOFileHandle &origFileHandle, size_t frameIndex)
Single frame management of multi-frame files.
void setMaxNumBytes(MLint maxNumBytes)
Set maximum number of bytes used for tree data. Values < 0 are clamped to 0.
void flushSingleFrameCache()
Clears all cached singleFrameTrees, because they are normally excluded from normal flushing.
MLint getMaxNumMegaBytes() const
Return maximum number of bytes used for tree data.
static MLDICOMCachedIOTreeCache singletonProxy()
Singleton and cache management.
MLint getNumFlushedBytes() const
Returns the number of flushed bytes since most recent recent resetNumFlushedBytes().
ml::IntField & getMaxNumMegaBytesFld() const
Return field that holds the maximum number of mega bytes used for tree data.
MLErrorCode loadSMFTree(const ml::DICOMCachedIOFileHandle &fileHandle, DCMTree::StructuredMFPtr &smfPtr, ml::DicomMessageCollector &dcmMsgCollector)
Loads the given DICOM tree specified by fileName into smfPtr.
MLint flush(const MLint maxBytes, const bool flushAll=false)
Singleton and cache management.
~ MLDICOMCachedIOTreeCache()
Destructor. Decrements the reference counting and deletes the cache if the new count is 0.
void removeAssociatedEntries(const ml::DICOMCachedIOFileHandle &fileHandle)
Removed cached multi-frame data and/or tree related to fileHandle.
MLint getTotalNumberOfBytes() const
Returns the approximate number of cached bytes in trees.
void setMaxNumMegaBytes(MLint maxNumMegaBytes)
Set maximum number of mega bytes used for tree data. Values < 0 are clamped to 0.
MLErrorCode addDCMTree(const ml::DICOMCachedIOFileHandle &fileHandle, DCMTree::TreePtr &treePtr)
If no entry with the file handle exists, then it adds treePtr to the cache with the specified fileHan...
MLErrorCode loadDCMTree(const ml::DICOMCachedIOFileHandle &fileHandle, DCMTree::TreePtr &treePtr, ml::DicomMessageCollector &dcmMsgCollector)
Loads the given non-constant DICOM tree specified by fileHandle into treePtr.
MLErrorCode saveDCMTree(DCMTree::Const_TreePtr dcmTree, const ml::DICOMCachedIOFileHandle &fileHandle)
DCMTree IO Support.
MLErrorCode loadConstantDCMTree(const ml::DICOMCachedIOFileHandle &fileHandle, DCMTree::Const_TreePtr &treePtr, ml::DicomMessageCollector &dcmMsgCollector)
Loads the given constant DICOM tree specified by fileHandle into treePtr.
void resetNumFlushedBytes()
Sets counter of flushed bytes to 0.
MLDICOMCachedIOTreeCache()
Constructor. Increments the reference counting and creates a cache if the count is 0.
void clear()
Clears the DICOM trees cache map.
MLint flush()
Same as flush(getMaxNumBytes(), false).
MLint getMaxNumBytes() const
Return maximum number of bytes used for tree data.
MLErrorCode getCachedDCMTree(const ml::DICOMCachedIOFileHandle &fileHandle, DCMTree::TreePtr &treePtr)
Returns ML_RESULT_OK if the DICOM file given by fileName is already cached and then treePtr returns t...
Field to encapsulate an integer value.
Definition: mlFields.h:161
MLint32 MLErrorCode
Type of an ML Error code.
Definition: mlTypeDefs.h:818
MLuint64 MLuint
An unsigned ML integer type with at least 64 bits used for index calculations on very large images ev...
Definition: mlTypeDefs.h:594
MLint64 MLint
A signed ML integer type with at least 64 bits used for index calculations on very large images even ...
Definition: mlTypeDefs.h:578
boost::shared_ptr< StructuredMF > StructuredMFPtr
Definition: DCMTree_Lib.h:168
boost::shared_ptr< const Tree > Const_TreePtr
Definition: DCMTree_Lib.h:73
boost::shared_ptr< Tree > TreePtr
shared pointer to a DCMTree::Tree
Definition: DCMTree_Lib.h:70
DICOMCachedIOFileHandleBase< char > DICOMCachedIOFileHandle
"Forward" to DICOMCachedIOFileHandle.