Skip to content
Snippets Groups Projects
Commit cd033d5c authored by Nicolas Marsic's avatar Nicolas Marsic
Browse files

Hex and Tri ReferenceSpace: load a serialized version if available - if not...

Hex and Tri ReferenceSpace: load a serialized version if available - if not build a new reference space and serialize it for next time
parent 6ba91c4c
No related branches found
No related tags found
No related merge requests found
#include <sstream>
#include "HexReferenceSpace.h"
#include "MHexahedron.h"
using namespace std;
HexReferenceSpace::HexReferenceSpace(void){
// Look if a serialized HexReferenceSpace is present in root //
// If it does, load it //
// If not, create it and serialize it for an other time //
try{
init(string("hex.refSpace"));
}
catch(std::exception& exception){
initHex();
serialize("hex.refSpace");
}
}
void HexReferenceSpace::initHex(void){
// Vertex Definition //
nVertex = 8;
......
......@@ -17,6 +17,9 @@ class HexReferenceSpace: public ReferenceSpace{
virtual ~HexReferenceSpace(void);
virtual std::string toLatex(void) const;
private:
void initHex(void);
};
/**
......
......@@ -16,28 +16,7 @@ ReferenceSpace::ReferenceSpace(void){
}
ReferenceSpace::ReferenceSpace(const std::string& path){
// Read file //
// Open Stream
ifstream input;
input.exceptions(std::ifstream::failbit | std::ifstream::badbit);
input.open(path.c_str(), std::ifstream::binary);
// Get size of stream (go to stream end)
input.seekg(0, std::ifstream::end);
const size_t size = input.tellg();
// Reset stream possition
input.seekg(0, std::ifstream::beg);
// Alloc byte stream & Read file
char* stream = new char[size];
input.read(stream, size);
// Init from stream
init(stream);
// Free stream
delete[] stream;
init(path);
}
ReferenceSpace::~ReferenceSpace(void){
......@@ -113,6 +92,7 @@ void ReferenceSpace::init(const char* stream){
offset += sizeof(size_t);
pTree = new PermutationTree(stream + offset);
cout << pTree->toString() << endl;
offset += tSize;
// RefSpace Node Id
......@@ -125,8 +105,31 @@ void ReferenceSpace::init(const char* stream){
// Oredered {Edge, Face} Node Idx
offset += unserialize(stream + offset, orderedEdgeNodeIdx);
offset += unserialize(stream + offset, orderedFaceNodeIdx);
}
cout << offset << endl;
void ReferenceSpace::init(const std::string& path){
// Read file //
// Open Stream
ifstream input;
input.exceptions(std::ifstream::failbit | std::ifstream::badbit);
input.open(path.c_str(), std::ifstream::binary);
// Get size of stream (go to stream end)
input.seekg(0, std::ifstream::end);
const size_t size = input.tellg();
// Reset stream possition
input.seekg(0, std::ifstream::beg);
// Alloc byte stream & Read file
char* stream = new char[size];
input.read(stream, size);
// Init from stream
init(stream);
// Free stream
delete[] stream;
}
void ReferenceSpace::
......
......@@ -104,6 +104,7 @@ class ReferenceSpace{
void init(void);
void init(const char* stream);
void init(const std::string& path);
private:
void getOrderedEdge(void);
......
#include <sstream>
#include "TriReferenceSpace.h"
#include "MTriangle.h"
using namespace std;
TriReferenceSpace::TriReferenceSpace(void){
// Look if a serialized TriReferenceSpace is present in root //
// If it does, load it //
// If not, create it and serialize it for an other time //
try{
init(string("tri.refSpace"));
}
catch(std::exception& exception){
initTri();
serialize("tri.refSpace");
}
}
void TriReferenceSpace::initTri(void){
// Vertex Definition //
nVertex = 3;
......
......@@ -17,6 +17,9 @@ class TriReferenceSpace: public ReferenceSpace{
virtual ~TriReferenceSpace(void);
virtual std::string toLatex(void) const;
private:
void initTri(void);
};
/**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment