diff OrthancServer/ParsedDicomFile.cpp @ 1787:1b1d5470233f worklists

refactoring of DicomFindAnswers
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 18 Nov 2015 15:50:32 +0100
parents 164d78911382
children 6a2d507ef064
line wrap: on
line diff
--- a/OrthancServer/ParsedDicomFile.cpp	Wed Nov 18 12:00:14 2015 +0100
+++ b/OrthancServer/ParsedDicomFile.cpp	Wed Nov 18 15:50:32 2015 +0100
@@ -823,9 +823,15 @@
   }
 
 
-  ParsedDicomFile::ParsedDicomFile(void* fileFormat) : pimpl_(new PImpl)
+  ParsedDicomFile::ParsedDicomFile(const DicomMap& map) : pimpl_(new PImpl)
   {
-    pimpl_->file_.reset(static_cast<DcmFileFormat*>(fileFormat));
+    std::auto_ptr<DcmDataset> dataset(ToDcmtkBridge::Convert(map));
+
+    // NOTE: This implies an unnecessary memory copy of the dataset, but no way to get around
+    // http://support.dcmtk.org/redmine/issues/544
+    std::auto_ptr<DcmFileFormat> fileFormat(new DcmFileFormat(dataset.get()));
+
+    pimpl_->file_.reset(fileFormat.release());
   }
 
 
@@ -1228,15 +1234,4 @@
   {
     FromDcmtkBridge::Convert(tags, *pimpl_->file_->getDataset());
   }
-
-
-  ParsedDicomFile* ParsedDicomFile::CreateFromDcmtkDataset(void* dataset)
-  {
-    assert(dataset != NULL);
-
-    DcmDataset *d = static_cast<DcmDataset*>(dataset);
-    std::auto_ptr<DcmFileFormat> fileFormat(new DcmFileFormat(d));
-    
-    return new ParsedDicomFile(fileFormat.release());
-  }
 }