[cig-commits] r11503 - short/3D/PyLith/trunk/libsrc/meshio
brad at geodynamics.org
brad at geodynamics.org
Sat Mar 22 10:53:36 PDT 2008
Author: brad
Date: 2008-03-22 10:53:36 -0700 (Sat, 22 Mar 2008)
New Revision: 11503
Modified:
short/3D/PyLith/trunk/libsrc/meshio/PsetFileBinary.cc
Log:
Fixed bug related to 32bit/64bit I/O for binary Pset files. Need to use int32_t and int64_t for integers.
Modified: short/3D/PyLith/trunk/libsrc/meshio/PsetFileBinary.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/PsetFileBinary.cc 2008-03-22 15:45:42 UTC (rev 11502)
+++ short/3D/PyLith/trunk/libsrc/meshio/PsetFileBinary.cc 2008-03-22 17:53:36 UTC (rev 11503)
@@ -25,9 +25,8 @@
#include <assert.h> // USES assert()
#include <sstream> // USES std::ostringstream
#include <stdexcept> // USES std::exception
+#include <sys/types.h> // USES int32_t, int64_t
-#include <iostream>
-
// ----------------------------------------------------------------------
const char* pylith::meshio::PsetFileBinary::_HEADER = "pset unformatted";
@@ -75,10 +74,10 @@
if (_ioInt32) {
// Read number of psets
- int numGroups = 0;
- fin.read((char*) &numGroups, sizeof(int));
+ int32_t numGroups = 0;
+ fin.read((char*) &numGroups, sizeof(numGroups));
if (_flipEndian)
- BinaryIO::swapByteOrder((char*) &numGroups, 1, sizeof(int));
+ BinaryIO::swapByteOrder((char*) &numGroups, 1, sizeof(numGroups));
assert(numGroups >= 0);
groups->resize(numGroups);
std::string extra = BinaryIO::readString(fin, 2*_recordHeaderSize);
@@ -90,7 +89,7 @@
_readPset32(fin, &(*groups)[iGroup]);
} else {
// Read number of psets
- long numGroups = 0;
+ int64_t numGroups = 0;
fin.read((char*) &numGroups, sizeof(numGroups));
if (_flipEndian)
BinaryIO::swapByteOrder((char*) &numGroups, 1, sizeof(numGroups));
@@ -129,7 +128,7 @@
if (_ioInt32) {
// Write number of groups
- int numGroups = groups.size();
+ int32_t numGroups = groups.size();
if (_flipEndian)
BinaryIO::swapByteOrder((char*) &numGroups, 1, sizeof(numGroups));
fout.write((char*) &numGroups, sizeof(numGroups));
@@ -141,7 +140,7 @@
_writePset32(fout, groups[iGroup]);
} else {
// Write number of groups
- long numGroups = groups.size();
+ int64_t numGroups = groups.size();
if (_flipEndian)
BinaryIO::swapByteOrder((char*) &numGroups, 1, sizeof(numGroups));
fout.write((char*) &numGroups, sizeof(numGroups));
@@ -190,13 +189,13 @@
group->name = BinaryIO::readString(fin, 32);
- int id = 0;
- fin.read((char*) &id, sizeof(int));
+ int32_t id = 0;
+ fin.read((char*) &id, sizeof(id));
if (_flipEndian)
BinaryIO::swapByteOrder((char*) &id, 1, sizeof(id));
- int size = 0;
- fin.read((char*) &size, sizeof(int));
+ int32_t size = 0;
+ fin.read((char*) &size, sizeof(size));
if (_flipEndian)
BinaryIO::swapByteOrder((char*) &size, 1, sizeof(size));
assert(size >= 0);
@@ -206,10 +205,10 @@
<< " points." << journal::endl;
group->points.resize(size);
- fin.read((char*) &group->points[0], size*sizeof(int));
+ fin.read((char*) &group->points[0], size*sizeof(int32_t));
extra = BinaryIO::readString(fin, 2*_recordHeaderSize);
if (_flipEndian)
- BinaryIO::swapByteOrder((char*) &group->points[0], size, sizeof(int));
+ BinaryIO::swapByteOrder((char*) &group->points[0], size, sizeof(int32_t));
group->points -= 1; // use zero base
@@ -230,21 +229,21 @@
fout.write((char*) group.name.c_str(), 32);
- int id = group.id;
+ int32_t id = group.id;
if (_flipEndian)
BinaryIO::swapByteOrder((char*) &id, 1, sizeof(id));
- fout.write((char*) &id, sizeof(int));
+ fout.write((char*) &id, sizeof(id));
- int sizeIO = size;
+ int32_t sizeIO = size;
if (_flipEndian)
BinaryIO::swapByteOrder((char*) &sizeIO, 1, sizeof(sizeIO));
- fout.write((char*) &sizeIO, sizeof(int));
+ fout.write((char*) &sizeIO, sizeof(sizeIO));
- int_array pointsIO(group.points);
+ std::valarray<int32_t> pointsIO(group.points);
pointsIO += 1; // switch from zero base to one base
if (_flipEndian)
- BinaryIO::swapByteOrder((char*) &pointsIO[0], size, sizeof(int));
- fout.write((char*) &pointsIO[0], size*sizeof(int));
+ BinaryIO::swapByteOrder((char*) &pointsIO[0], size, sizeof(int32_t));
+ fout.write((char*) &pointsIO[0], size*sizeof(int32_t));
info << journal::at(__HERE__)
<< "Done." << journal::endl;
@@ -261,12 +260,12 @@
group->name = BinaryIO::readString(fin, 32);
- long id = 0;
+ int64_t id = 0;
fin.read((char*) &id, sizeof(id));
if (_flipEndian)
BinaryIO::swapByteOrder((char*) &id, 1, sizeof(id));
- long size = 0;
+ int64_t size = 0;
fin.read((char*) &size, sizeof(size));
if (_flipEndian)
BinaryIO::swapByteOrder((char*) &size, 1, sizeof(size));
@@ -277,11 +276,11 @@
<< " points." << journal::endl;
group->points.resize(size);
- std::valarray<long> pointsIO(size);
- fin.read((char*) &pointsIO[0], size*sizeof(long));
+ std::valarray<int64_t> pointsIO(size);
+ fin.read((char*) &pointsIO[0], size*sizeof(int64_t));
extra = BinaryIO::readString(fin, 2*_recordHeaderSize);
if (_flipEndian)
- BinaryIO::swapByteOrder((char*) &pointsIO[0], size, sizeof(long));
+ BinaryIO::swapByteOrder((char*) &pointsIO[0], size, sizeof(int64_t));
for (int i=0; i < size; ++i)
group->points[i] = pointsIO[i];
@@ -305,21 +304,21 @@
fout.write((char*) group.name.c_str(), 32);
- long id = group.id;
+ int64_t id = group.id;
if (_flipEndian)
BinaryIO::swapByteOrder((char*) &id, 1, sizeof(id));
fout.write((char*) &id, sizeof(int));
- long sizeIO = size;
+ int64_t sizeIO = size;
if (_flipEndian)
BinaryIO::swapByteOrder((char*) &sizeIO, 1, sizeof(sizeIO));
fout.write((char*) &sizeIO, sizeof(int));
- std::valarray<long> pointsIO(size);
+ std::valarray<int64_t> pointsIO(size);
pointsIO += 1; // switch from zero base to one base
if (_flipEndian)
- BinaryIO::swapByteOrder((char*) &pointsIO[0], size, sizeof(long));
- fout.write((char*) &pointsIO[0], size*sizeof(long));
+ BinaryIO::swapByteOrder((char*) &pointsIO[0], size, sizeof(int64_t));
+ fout.write((char*) &pointsIO[0], size*sizeof(int64_t));
info << journal::at(__HERE__)
<< "Done." << journal::endl;
More information about the cig-commits
mailing list