Commit ce22f586 authored by Purves, Murray's avatar Purves, Murray
Browse files

WIP Cleanup before starting on write methods

parent 5a8c55dd
Pipeline #16598 failed with stages
in 18 minutes and 21 seconds
......@@ -102,6 +102,8 @@ bool ARLDataStream::read_index_header(ARLIndexHeader& iheader)
return true;
}
bool ARLDataStream::write_index_header(const ARLIndexHeader& iheader) {}
bool ARLDataStream::read_next_index_header(ARLIndexHeader& iheader)
{
int bytesToSkip = roundUpInt(p->stream->bytesRead(), p->recordSize) -
......@@ -131,6 +133,11 @@ bool ARLDataStream::read_record_header(const ARLIndexHeader& iheader,
return true;
}
bool ARLDataStream::write_record_header(const ARLIndexHeader& iheader,
const ARLRecordHeader& rheader)
{
}
bool ARLDataStream::read_record(const ARLIndexHeader& iheader,
const ARLRecordHeader& rheader,
std::vector<std::vector<double> >& record)
......@@ -186,21 +193,11 @@ bool ARLDataStream::read_record(const ARLIndexHeader& iheader,
return true;
}
/**
* @brief The ARLRecord::PImpl class
*/
class ARLRecord::PImpl
{
public:
};
ARLRecord::ARLRecord()
: p(new ARLRecord::PImpl(), [](ARLRecord::PImpl* impl) { delete impl; })
{
}
ARLRecord::ARLRecord(const ARLRecord& orig)
: p(new ARLRecord::PImpl(), [](ARLRecord::PImpl* impl) { delete impl; })
bool ARLDataStream::write_record(
const ARLIndexHeader& iheader, const ARLRecordHeader& rheader,
const std::vector<std::vector<double> >& record)
{
return false;
}
} // namespace radix
......@@ -14,10 +14,9 @@
namespace radix
{
//
// Forward declare ARLRecord and ARLHeader
// Forward declare ARLRecordHeader and ARLIndexHeader
struct ARLIndexHeader;
struct ARLRecordHeader;
class ARLRecord;
class RADIX_PUBLIC ARLDataStream
{
......@@ -56,15 +55,19 @@ class RADIX_PUBLIC ARLDataStream
* @return
*/
bool read_index_header(ARLIndexHeader& iheader);
bool write_index_header(const ARLIndexHeader& iheader);
/**
* @brief next_index_header Sets the stream position to that of the next index
* header and reads that header
* @brief read_next_index_header Sets the stream position to that of the next
* index header and reads that header
* @return
*/
bool read_next_index_header(ARLIndexHeader& iheader);
bool read_record_header(const ARLIndexHeader& iheader,
ARLRecordHeader& rheader);
bool write_record_header(const ARLIndexHeader& iheader,
const ARLRecordHeader& rheader);
/**
* @brief read_record Reads a single record from the stream
......@@ -77,7 +80,9 @@ class RADIX_PUBLIC ARLDataStream
std::vector<std::vector<double> >& record);
// TODO
// bool write_record(const ARLRecord& record);
bool write_record(const ARLIndexHeader& iheader,
const ARLRecordHeader& rheader,
const std::vector<std::vector<double> >& record);
}; // class ARLDataStream
......@@ -126,18 +131,6 @@ struct RADIX_PUBLIC ARLIndexHeader
std::string kvar;
};
class RADIX_PUBLIC ARLRecord
{
// forward declare private implementation
class PImpl;
// unique pointer to private implmentation
std::unique_ptr<PImpl, void (*)(PImpl*)> p;
public:
ARLRecord();
ARLRecord(const ARLRecord& orig);
}; // ARLRecord
} // namespace radix
//#include "arldatastream.i.hh"
......
......@@ -85,6 +85,35 @@ TEST(RadixIO, ReadArlElements)
EXPECT_NEAR(240.6, testRecord[143][72], 240.6 * tolerance);
}
TEST(RadixIO, WriteArlElements)
{
double tolerance = 0.001;
std::string testFile = "/home/ohp/data/met/RP195111.gbl";
ARLDataStream testStream(testFile);
// Read the initial index header
ARLIndexHeader testTopIndexHeader;
bool success = testStream.read_index_header(testTopIndexHeader);
ASSERT_TRUE(success);
ARLRecordHeader testRecordHeader;
success = testStream.read_record_header(testTopIndexHeader, testRecordHeader);
ASSERT_TRUE(success);
// Read the data starting from the next index header
ARLIndexHeader testIndexHeader;
success = testStream.read_next_index_header(testIndexHeader);
ASSERT_TRUE(success);
// Read data
std::vector<std::vector<double>> testRecord;
success =
testStream.read_record(testIndexHeader, testRecordHeader, testRecord);
ASSERT_TRUE(success);
// Write this data back out to a file
}
// TEST(RadixIO, ReadArlWholeFile)
//{
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment