r90: Convert MPI structure to C++ class
[ctsim.git] / include / imagefile.h
index 4660a92139c91c0fdb9995ee3ff193d685fb7d88..19f5db07354362fba69b22bf48c313f93981af0c 100644 (file)
@@ -3,6 +3,8 @@
 
 #include <string>
 #include "kstddef.h"
+#include <sys/types.h>
+#include <unistd.h>
 #include <array2d.h>
 
 using namespace std;
@@ -231,6 +233,7 @@ template<class T>
 Array2dFile<T>::~Array2dFile (void)
 {
     fileClose ();
+    delete array;
 }
 
 
@@ -238,11 +241,10 @@ template<class T>
 void
 Array2dFile<T>::fileClose (void)
 {
-  headerWrite ();
-  if (file_id >= 0 && array != NULL) {
-    arrayDataWrite ();
-    close (file_id);
-    file_id = -1;
+  if (file_id >= 0) {
+      headerWrite ();
+      close (file_id);
+      file_id = -1;
   }
 }
 
@@ -432,7 +434,7 @@ Array2dFile<T>::arrayDataWrite (void)
   for (unsigned int ix = 0; ix < mNX; ix++)
       for (unsigned int iy = 0; iy < mNY; iy++) {
          T value = array->array_data[ix][iy];
-         ConvertNetworkOrder (&value, sizeof(T));
+         ConvertReverseNetworkOrder (&value, sizeof(T));
          write (file_id, &value, mPixelSize);
       }
 
@@ -453,7 +455,7 @@ Array2dFile<T>::arrayDataRead (void)
   for (int ix = 0; ix < mNX; ix++) 
       for (unsigned int iy = 0; iy < mNY; iy++) {
          read (file_id, &pixelBuffer, mPixelSize);
-         ConvertNetworkOrder (&pixelBuffer, sizeof(T));
+         ConvertReverseNetworkOrder (&pixelBuffer, sizeof(T));
          array->array_data[ix][iy] = pixelBuffer;
       }
 
@@ -633,20 +635,21 @@ public:
   kuint32 ny(void) const
       { return adf.ny(); }
 
-#ifdef MPI_CT
-  MPI_Datatype getMPIDataType (void) const
-      { return MPI_FLOAT; }
+#ifdef HAVE_MPI
+  MPI::Datatype getMPIDataType (void) const
+      { return MPI::FLOAT; }
 #endif
 };
 
+
 class F64Image 
 {
 public:
   Array2dFile<kfloat64> adf;
 
-#ifdef MPI_CT
-  MPI_Datatype getMPIDataType (void) const
-      { return MPI_DOUBLE; }
+#ifdef HAVE_MPI
+  MPI::Datatype getMPIDataType (void) const
+      { return MPI::DOUBLE; }
 #endif
 
   F64Image (const char* const fname, unsigned int nx, unsigned int ny) : adf (fname, nx, ny)