diff Core/DicomParsing/Internals/DicomImageDecoder.cpp @ 3712:2a170a8f1faf

replacing std::auto_ptr by std::unique_ptr
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 02 Mar 2020 15:32:45 +0100
parents 94f4a18a79cc
children accf1b60b108
line wrap: on
line diff
--- a/Core/DicomParsing/Internals/DicomImageDecoder.cpp	Fri Feb 28 13:23:11 2020 +0100
+++ b/Core/DicomParsing/Internals/DicomImageDecoder.cpp	Mon Mar 02 15:32:45 2020 +0100
@@ -249,7 +249,7 @@
   {
   private:
     std::string psmct_;
-    std::auto_ptr<DicomIntegerPixelAccessor> slowAccessor_;
+    std::unique_ptr<DicomIntegerPixelAccessor> slowAccessor_;
 
   public:
     void Setup(DcmDataset& dataset,
@@ -388,7 +388,7 @@
   }
 
 
-  static ImageAccessor* DecodeLookupTable(std::auto_ptr<ImageAccessor>& target,
+  static ImageAccessor* DecodeLookupTable(std::unique_ptr<ImageAccessor>& target,
                                           const DicomImageInformation& info,
                                           DcmDataset& dataset,
                                           const uint8_t* pixelData,
@@ -508,7 +508,7 @@
      * Create the target image.
      **/
 
-    std::auto_ptr<ImageAccessor> target(CreateImage(dataset, false));
+    std::unique_ptr<ImageAccessor> target(CreateImage(dataset, false));
 
     ImageSource source;
     source.Setup(dataset, frame);
@@ -616,7 +616,7 @@
     FromDcmtkBridge::ExtractDicomSummary(m, dataset);
     DicomImageInformation info(m);
 
-    std::auto_ptr<ImageAccessor> target(CreateImage(dataset, true));
+    std::unique_ptr<ImageAccessor> target(CreateImage(dataset, true));
 
     Uint32 startFragment = 0;  // Default 
     OFString decompressedColorModel;  // Out
@@ -692,7 +692,7 @@
       DJLSRepresentationParameter representationParameter(2, OFTrue);
 
       DJLSCodecParameter parameters;
-      std::auto_ptr<DJLSDecoderBase> decoder;
+      std::unique_ptr<DJLSDecoderBase> decoder;
 
       switch (syntax)
       {
@@ -734,7 +734,7 @@
         EUC_default,     // Mode for UID creation, unused for decompression
         EPC_default);    // Automatically determine whether color-by-plane is required from the SOP Class UID and decompressed photometric interpretation
       DJ_RPLossy representationParameter;
-      std::auto_ptr<DJCodecDecoder> decoder;
+      std::unique_ptr<DJCodecDecoder> decoder;
 
       switch (syntax)
       {
@@ -799,7 +799,7 @@
     {
       LOG(INFO) << "Decoding a compressed image by converting its transfer syntax to Little Endian";
 
-      std::auto_ptr<DcmDataset> converted(dynamic_cast<DcmDataset*>(dataset.clone()));
+      std::unique_ptr<DcmDataset> converted(dynamic_cast<DcmDataset*>(dataset.clone()));
       converted->chooseRepresentation(EXS_LittleEndianExplicit, NULL);
 
       if (converted->canWriteXfer(EXS_LittleEndianExplicit))
@@ -820,7 +820,7 @@
   }
 
 
-  bool DicomImageDecoder::TruncateDecodedImage(std::auto_ptr<ImageAccessor>& image,
+  bool DicomImageDecoder::TruncateDecodedImage(std::unique_ptr<ImageAccessor>& image,
                                                PixelFormat format,
                                                bool allowColorConversion)
   {
@@ -840,17 +840,22 @@
     if (image->GetFormat() != format)
     {
       // A conversion is required
-      std::auto_ptr<ImageAccessor> target
+      std::unique_ptr<ImageAccessor> target
         (new Image(format, image->GetWidth(), image->GetHeight(), false));
       ImageProcessing::Convert(*target, *image);
-      image = target;
+
+#if __cplusplus < 201103L
+      image.reset(target.release());
+#else
+      image = std::move(target);
+#endif
     }
 
     return true;
   }
 
 
-  bool DicomImageDecoder::PreviewDecodedImage(std::auto_ptr<ImageAccessor>& image)
+  bool DicomImageDecoder::PreviewDecodedImage(std::unique_ptr<ImageAccessor>& image)
   {
     switch (image->GetFormat())
     {
@@ -862,10 +867,16 @@
 
       case PixelFormat_RGB48:
       {
-        std::auto_ptr<ImageAccessor> target
+        std::unique_ptr<ImageAccessor> target
           (new Image(PixelFormat_RGB24, image->GetWidth(), image->GetHeight(), false));
         ImageProcessing::Convert(*target, *image);
-        image = target;
+
+#if __cplusplus < 201103L
+        image.reset(target.release());
+#else
+        image = std::move(target);
+#endif
+
         return true;
       }
 
@@ -891,10 +902,15 @@
         // If the source image is not grayscale 8bpp, convert it
         if (image->GetFormat() != PixelFormat_Grayscale8)
         {
-          std::auto_ptr<ImageAccessor> target
+          std::unique_ptr<ImageAccessor> target
             (new Image(PixelFormat_Grayscale8, image->GetWidth(), image->GetHeight(), false));
           ImageProcessing::Convert(*target, *image);
-          image = target;
+
+#if __cplusplus < 201103L
+          image.reset(target.release());
+#else
+          image = std::move(target);
+#endif
         }
 
         return true;
@@ -906,7 +922,7 @@
   }
 
 
-  void DicomImageDecoder::ApplyExtractionMode(std::auto_ptr<ImageAccessor>& image,
+  void DicomImageDecoder::ApplyExtractionMode(std::unique_ptr<ImageAccessor>& image,
                                               ImageExtractionMode mode,
                                               bool invert)
   {
@@ -956,7 +972,7 @@
 
 
   void DicomImageDecoder::ExtractPamImage(std::string& result,
-                                          std::auto_ptr<ImageAccessor>& image,
+                                          std::unique_ptr<ImageAccessor>& image,
                                           ImageExtractionMode mode,
                                           bool invert)
   {
@@ -968,7 +984,7 @@
 
 #if ORTHANC_ENABLE_PNG == 1
   void DicomImageDecoder::ExtractPngImage(std::string& result,
-                                          std::auto_ptr<ImageAccessor>& image,
+                                          std::unique_ptr<ImageAccessor>& image,
                                           ImageExtractionMode mode,
                                           bool invert)
   {
@@ -982,7 +998,7 @@
 
 #if ORTHANC_ENABLE_JPEG == 1
   void DicomImageDecoder::ExtractJpegImage(std::string& result,
-                                           std::auto_ptr<ImageAccessor>& image,
+                                           std::unique_ptr<ImageAccessor>& image,
                                            ImageExtractionMode mode,
                                            bool invert,
                                            uint8_t quality)