From 4260ce68c5ccfe00ee2d0e8d34c72e0cb76b5a87 Mon Sep 17 00:00:00 2001
From: Paul McCarthy <pauldmccarthy@gmail.com>
Date: Fri, 20 Dec 2024 08:48:22 +1030
Subject: [PATCH] RF: Revert volume.initialize visibility back to protected. No
 need to be public, but can't be private, as ShadowVolume calls it.

---
 newimage.h | 29 ++++++++++++++++++++++-------
 1 file changed, 22 insertions(+), 7 deletions(-)

diff --git a/newimage.h b/newimage.h
index 472226a..f2a2707 100644
--- a/newimage.h
+++ b/newimage.h
@@ -278,7 +278,22 @@ int readGeneralVolume(volume<T>& target, const std::string& filename,
         _use_default_validity(false) {}
     };
 
-    private:
+  // initialize can be called from the ShadowVolume
+  // class, hence has protected visibility
+  protected:
+    virtual int initialize(
+      int64_t xsize, int64_t ysize, int64_t zsize,
+      int64_t tsize, int64_t d5, int64_t d6, int64_t d7,
+      T *d, bool d_owner, int64_t nthreads); //Master 7D
+
+  private:
+
+    int initialize(
+      int64_t xsize, int64_t ysize, int64_t zsize,
+      T *d, bool d_owner, int64_t nthreads); //3D
+    int initialize(
+      int64_t xsize, int64_t ysize, int64_t zsize,
+      int64_t tsize, T *d, bool d_owner, int64_t nthreads); //4D
 
     // Internal functions
     inline T* basicptr(int64_t x, int64_t y, int64_t z) {
@@ -287,10 +302,6 @@ int readGeneralVolume(volume<T>& target, const std::string& filename,
     inline T* basicptr(int64_t x, int64_t y, int64_t z) const
       { return (Data + (z*RowsY + y)*ColumnsX + x); }
 
-    int initialize(int64_t xsize, int64_t ysize, int64_t zsize, T *d, bool d_owner, int64_t nthreads); //3D
-    int initialize(int64_t xsize, int64_t ysize, int64_t zsize, int64_t tsize, T *d, bool d_owner, int64_t nthreads); //4D
-    virtual int initialize(int64_t xsize, int64_t ysize, int64_t zsize, int64_t tsize, int64_t d5, int64_t d6, int64_t d7, T *d, bool d_owner, int64_t nthreads); //Master 7D
-
     void setdefaultproperties();
     void enforcelimits(std::vector<int>& lims) const;
 
@@ -808,6 +819,12 @@ private:
 
   const volume<T>& owner() const;
 
+protected:
+  virtual int initialize(
+    int64_t xsize, int64_t ysize, int64_t zsize,
+    int64_t tsize, int64_t d5, int64_t d6, int64_t d7,
+    T *d, bool d_owner, int64_t nt);
+
 public:
 
   using volume<T>::operator=;
@@ -842,8 +859,6 @@ public:
   [[deprecated("Calling setsplineorder on a ShadowVolume will result in runtime errors!")]]
   virtual void setsplineorder(int order);
 
-  virtual int initialize(int64_t xsize, int64_t ysize, int64_t zsize, int64_t tsize, int64_t d5, int64_t d6, int64_t d7, T *d, bool d_owner, int64_t nt);
-
   const volume<T>& equals(const volume<T>& source);
 
   ShadowVolume();
-- 
GitLab