[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