[cig-commits] r13523 - cs/cigma/trunk/src

luis at geodynamics.org luis at geodynamics.org
Tue Dec 9 18:13:17 PST 2008


Author: luis
Date: 2008-12-09 18:13:16 -0800 (Tue, 09 Dec 2008)
New Revision: 13523

Modified:
   cs/cigma/trunk/src/io_file_reader.cpp
   cs/cigma/trunk/src/io_file_writer.cpp
   cs/cigma/trunk/src/io_file_writer.h
   cs/cigma/trunk/src/io_null_writer.cpp
   cs/cigma/trunk/src/io_null_writer.h
   cs/cigma/trunk/src/io_text_reader.cpp
   cs/cigma/trunk/src/io_text_writer.cpp
   cs/cigma/trunk/src/io_text_writer.h
Log:
Updates to file I/O classes

Modified: cs/cigma/trunk/src/io_file_reader.cpp
===================================================================
--- cs/cigma/trunk/src/io_file_reader.cpp	2008-12-10 02:13:13 UTC (rev 13522)
+++ cs/cigma/trunk/src/io_file_reader.cpp	2008-12-10 02:13:16 UTC (rev 13523)
@@ -15,15 +15,15 @@
 // readers
 #include "io_null_reader.h"
 #include "io_text_reader.h"
-//#include "io_hdf5_reader.h"
+#include "io_hdf5_reader.h"
 //#include "io_vtk_reader.h"
 using namespace cigma;
 
 
 shared_ptr<FileReader> FileReader::New(std::string filename, std::string mode)
 {
+    shared_ptr<FileReader> tmp(new NullReader());
     int status = -1;
-    shared_ptr<FileReader> tmp(new NullReader());
 
     fs::path p(filename);
 
@@ -33,14 +33,17 @@
 
         if (is_hdf5_extension(ext.c_str()))
         {
-            /*
+            //*
             tmp.reset(new HDF5_Reader());
-            status = tmp->open(filename.c_str())
+            status = tmp->open(filename.c_str());
             if (status < 0)
             {
                 throw cigma::Exception("FileReader::New", string("Could not open HDF5 file ") + filename);
             } // */
-            throw cigma::Exception("FileReader::New", "Need HDF5_Reader");
+            
+            //
+            //throw cigma::Exception("FileReader::New", "Need HDF5_Reader");
+            //
         }
         else if (is_vtk_extension(ext.c_str()))
         {
@@ -65,7 +68,7 @@
     }
     else
     {
-        throw cigma::Exception("FileReader::New", string("Could not find file ") + filename);
+        throw cigma::Exception("FileReader::New", string("Could not find file '") + filename + string("'"));
     }
 
     return tmp;

Modified: cs/cigma/trunk/src/io_file_writer.cpp
===================================================================
--- cs/cigma/trunk/src/io_file_writer.cpp	2008-12-10 02:13:13 UTC (rev 13522)
+++ cs/cigma/trunk/src/io_file_writer.cpp	2008-12-10 02:13:16 UTC (rev 13523)
@@ -1,10 +1,8 @@
-#include <cassert>
-#include <cstdlib>
-
-#include "Filesystem.h"
 #include "io_file_writer.h"
 #include "io_null_writer.h"
-//#include "io_text_writer.h"
+#include "io_text_writer.h"
+#include "io_hdf5_writer.h"
+#include "Exception.h"
 
 /*
 #ifdef HAVE_HDF5
@@ -16,27 +14,64 @@
 #endif
 */
 
-using namespace cigma;
+#include <cassert>
+#include <cstdlib>
 
+using namespace std;
+using boost::shared_ptr;
 namespace fs = boost::filesystem;
+using namespace cigma;
 
-// ----------------------------------------------------------------------------
 
-FileWriter::FileWriter()
+shared_ptr<FileWriter> FileWriter::New(std::string filename, std::string mode)
 {
+    shared_ptr<FileWriter> tmp(new NullWriter());
+    int status = -1;
+
+    fs::path p(filename);
+
+    if (fs::exists(p))
+    {
+        // file exists...overwrite it?
+        if (mode != "w")
+        {
+            throw cigma::Exception("FileWriter::New", "Overwriting existing file");
+        }
+    }
+
+    string ext = fs::extension(p);
+
+    if (is_hdf5_extension(ext.c_str()))
+    {
+        tmp.reset(new HDF5_Writer());
+        status = tmp->open(filename.c_str());
+        if (status < 0)
+        {
+            throw cigma::Exception("FileWriter::New", string("Could not open file ") + filename);
+        }
+    }
+    else if (is_vtk_extension(ext.c_str()))
+    {
+        throw cigma::Exception("FileWriter::New", "Need VTK writer");
+    }
+    else if (is_text_extension(ext.c_str()))
+    {
+        tmp.reset(new TextWriter());
+        status = tmp->open(filename.c_str());
+        if (status < 0)
+        {
+            throw cigma::Exception("FileWriter::New", string("Could not open file ") + filename);
+        }
+    }
+
+    return tmp;
 }
 
-FileWriter::~FileWriter()
+FileWriter::FileWriter()
 {
 }
 
-// ----------------------------------------------------------------------------
-
-FileWriter* FileWriter::New(std::string filename, std::string mode)
+FileWriter::~FileWriter()
 {
-    fs::path p(filename);
-    return new NullWriter();
-    //return 0;
 }
 
-// ----------------------------------------------------------------------------

Modified: cs/cigma/trunk/src/io_file_writer.h
===================================================================
--- cs/cigma/trunk/src/io_file_writer.h	2008-12-10 02:13:13 UTC (rev 13522)
+++ cs/cigma/trunk/src/io_file_writer.h	2008-12-10 02:13:16 UTC (rev 13523)
@@ -3,6 +3,7 @@
 
 #include <string>
 #include <boost/noncopyable.hpp>
+#include <boost/shared_ptr.hpp>
 #include "Filesystem.h"
 
 namespace cigma
@@ -23,11 +24,11 @@
     virtual int open(const char *filename) = 0; // add "const char *mode" argument
     virtual int close() = 0;
 
-    virtual int writeDataset(const char *loc, double *data, int nno, int ndim) = 0;
-    virtual int writeCoordinates(const char *loc, double *coordinates, int nno, int nsd) = 0;
-    virtual int writeConnectivity(const char *loc, int *connectivity, int nel, int ndofs) = 0;
+    virtual int writeDataset(const char *loc, const double *data, int nno, int ndim) = 0;
+    virtual int writeCoordinates(const char *loc, const double *coordinates, int nno, int nsd) = 0;
+    virtual int writeConnectivity(const char *loc, const int *connectivity, int nel, int ndofs) = 0;
 
-    static FileWriter *New(std::string filename, std::string mode);
+    static boost::shared_ptr<FileWriter> New(std::string filename, std::string mode);
 
 public:
     typedef enum {

Modified: cs/cigma/trunk/src/io_null_writer.cpp
===================================================================
--- cs/cigma/trunk/src/io_null_writer.cpp	2008-12-10 02:13:13 UTC (rev 13522)
+++ cs/cigma/trunk/src/io_null_writer.cpp	2008-12-10 02:13:16 UTC (rev 13523)
@@ -8,8 +8,8 @@
 int NullWriter::open(const char *filename) { return -1; }
 int NullWriter::close() { return -1; }
 
-int NullWriter::writeDataset(const char *loc, double *data, int nno, int ndim)            { return -1; }
-int NullWriter::writeCoordinates(const char *loc, double *coordinates, int nno, int nsd)  { return -1; }
-int NullWriter::writeConnectivity(const char *loc, int *connectivity, int nel, int ndofs) { return -1; }
+int NullWriter::writeDataset(const char *loc, const double *data, int nno, int ndim)            { return -1; }
+int NullWriter::writeCoordinates(const char *loc, const double *coordinates, int nno, int nsd)  { return -1; }
+int NullWriter::writeConnectivity(const char *loc, const int *connectivity, int nel, int ndofs) { return -1; }
 
 // ----------------------------------------------------------------------------

Modified: cs/cigma/trunk/src/io_null_writer.h
===================================================================
--- cs/cigma/trunk/src/io_null_writer.h	2008-12-10 02:13:13 UTC (rev 13522)
+++ cs/cigma/trunk/src/io_null_writer.h	2008-12-10 02:13:16 UTC (rev 13523)
@@ -19,9 +19,9 @@
     int open(const char *filename);
     int close();
 
-    int writeDataset(const char *loc, double *data, int nno, int ndim);
-    int writeCoordinates(const char *loc, double *coordinates, int nno, int nsd);
-    int writeConnectivity(const char *loc, int *connectivity, int nel, int ndofs);
+    int writeDataset(const char *loc, const double *data, int nno, int ndim);
+    int writeCoordinates(const char *loc, const double *coordinates, int nno, int nsd);
+    int writeConnectivity(const char *loc, const int *connectivity, int nel, int ndofs);
 };
 
 #endif

Modified: cs/cigma/trunk/src/io_text_reader.cpp
===================================================================
--- cs/cigma/trunk/src/io_text_reader.cpp	2008-12-10 02:13:13 UTC (rev 13522)
+++ cs/cigma/trunk/src/io_text_reader.cpp	2008-12-10 02:13:16 UTC (rev 13523)
@@ -1,3 +1,6 @@
+#include "io_text_reader.h"
+#include "Common.h"
+
 #include <cassert>
 #include <cstdlib>
 #include <cstring>
@@ -2,4 +5,3 @@
 
-#include "io_text_reader.h"
-
+using namespace std;
 using namespace cigma;
@@ -22,6 +24,9 @@
 
 int TextReader::open(const char *filename)
 {
+    TRI_LOG_STR("TextReader::open()");
+    TRI_LOG(filename);
+
     if (filename == NULL)
     {
         return -1;
@@ -132,6 +137,8 @@
 
 int TextReader::getDataset(const char *loc, double **data, int *num, int *dim)
 {
+    TRI_LOG_STR("TextReader::getDataset()");
+    TRI_LOG(loc);
     if (fp != NULL)
     {
         read_dmat(fp, data, num, dim);
@@ -143,6 +150,8 @@
 
 int TextReader::getConnectivity(const char *loc, int **connectivity, int *nel, int *ndofs)
 {
+    TRI_LOG_STR("TextReader::getConnectivity()");
+    TRI_LOG(loc);
     if (fp != NULL)
     {
         read_imat(fp, connectivity, nel, ndofs);
@@ -153,6 +162,8 @@
 
 int TextReader::getCoordinates(const char *loc, double **coordinates, int *nno, int *nsd)
 {
+    TRI_LOG_STR("TextReader::getCoordinates()");
+    TRI_LOG(loc);
     if (fp != NULL)
     {
         read_dmat(fp, coordinates, nno, nsd);

Modified: cs/cigma/trunk/src/io_text_writer.cpp
===================================================================
--- cs/cigma/trunk/src/io_text_writer.cpp	2008-12-10 02:13:13 UTC (rev 13522)
+++ cs/cigma/trunk/src/io_text_writer.cpp	2008-12-10 02:13:16 UTC (rev 13523)
@@ -1,9 +1,11 @@
 #include <cassert>
 #include <cstdlib>
 #include "io_text_writer.h"
+#include "tri_logger.hpp"
 
 using namespace cigma;
 
+
 // ----------------------------------------------------------------------------
 
 TextWriter::TextWriter()
@@ -20,6 +22,9 @@
 
 int TextWriter::open(const char *filename)
 {
+    TRI_LOG_STR("TextWriter::open()");
+    TRI_LOG(filename);
+
     if (filename != NULL)
     {
         fp = fopen(filename, "w");
@@ -52,7 +57,7 @@
 
 
 
-static bool write_dmat(FILE *fp, double *mat, int rows, int cols)
+static bool write_dmat(FILE *fp, const double *mat, int rows, int cols)
 {
     assert(fp != NULL);
     assert(rows > 0);
@@ -71,7 +76,7 @@
     return true;
 }
 
-static bool write_imat(FILE *fp, int *mat, int rows, int cols)
+static bool write_imat(FILE *fp, const int *mat, int rows, int cols)
 {
     assert(fp != NULL);
     assert(rows > 0);
@@ -94,18 +99,24 @@
 // ----------------------------------------------------------------------------
 
 
-int TextWriter::writeConnectivity(const char *loc, int *connectivity, int nel, int ndofs)
+int TextWriter::writeConnectivity(const char *loc, const int *connectivity, int nel, int ndofs)
 {
+    TRI_LOG_STR("TextWriter::writeConnectivity()");
+    TRI_LOG(loc);
     write_imat(fp, connectivity, nel, ndofs);
 }
 
-int TextWriter::writeCoordinates(const char *loc, double *coordinates, int nno, int nsd)
+int TextWriter::writeCoordinates(const char *loc, const double *coordinates, int nno, int nsd)
 {
+    TRI_LOG_STR("TextWriter::writeCoordinates()");
+    TRI_LOG(loc);
     write_dmat(fp, coordinates, nno, nsd);
 }
 
-int TextWriter::writeDataset(const char *loc, double *data, int num, int ndim)
+int TextWriter::writeDataset(const char *loc, const double *data, int num, int ndim)
 {
+    TRI_LOG_STR("TextWriter::writeDataset()");
+    TRI_LOG(loc);
     write_dmat(fp, data, num, ndim);
 }
 

Modified: cs/cigma/trunk/src/io_text_writer.h
===================================================================
--- cs/cigma/trunk/src/io_text_writer.h	2008-12-10 02:13:13 UTC (rev 13522)
+++ cs/cigma/trunk/src/io_text_writer.h	2008-12-10 02:13:16 UTC (rev 13523)
@@ -21,9 +21,9 @@
     int open(const char *filename);
     int close();
 
-    int writeConnectivity(const char *loc, int *connectivity, int nel, int ndofs);
-    int writeCoordinates(const char *loc, double *coordinates, int nno, int nsd);
-    int writeDataset(const char *loc, double *data, int nno, int ndim);
+    int writeConnectivity(const char *loc, const int *connectivity, int nel, int ndofs);
+    int writeCoordinates(const char *loc, const double *coordinates, int nno, int nsd);
+    int writeDataset(const char *loc, const double *data, int nno, int ndim);
 
 public:
     FILE *fp;



More information about the CIG-COMMITS mailing list