Skip to content
Snippets Groups Projects
Commit 790292f1 authored by Joseph Boudreau's avatar Joseph Boudreau Committed by Johannes Junggeburth
Browse files

Modification of the way in which Transfunctions are persistified.

Step 1: Genfunctions

Before:  Floating point data which is part of the description of
the stored functions is written into the string, the same string
used to define the function.

After:  Floating point data is stored in an auxilliary array that
must be used together with the string when the function is restored.
The array is implemented as an std::deque. It functions like a
FIFO.

Step 2: Transfunctions

(Not yet available at this stage)
parent 620cee98
No related branches found
No related tags found
1 merge request!327New schema for the GeoModel SQLite database and updated I/O
Showing
with 42 additions and 34 deletions
......@@ -11,7 +11,7 @@ class ACosReader: public GenFunctionReader {
public:
ACosReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> *fpData=nullptr) const;
};
......
......@@ -10,7 +10,7 @@ class ASinReader: public GenFunctionReader {
public:
ASinReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> *fpData=nullptr) const;
};
......
......@@ -10,7 +10,7 @@ class ATanReader: public GenFunctionReader {
public:
ATanReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> * fpData=nullptr) const;
};
......
......@@ -10,7 +10,7 @@ class AbsReader: public GenFunctionReader {
public:
AbsReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> *) const;
};
......
......@@ -10,7 +10,7 @@ class ArrayFunctionReader: public GenFunctionReader {
public:
ArrayFunctionReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> * fpData) const;
};
......
......@@ -11,7 +11,7 @@ class CosReader: public GenFunctionReader {
public:
CosReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> *fpData=nullptr) const;
};
......
......@@ -10,7 +10,7 @@ class FixedConstantReader: public GenFunctionReader {
public:
FixedConstantReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> *fpData) const;
};
......
......@@ -5,7 +5,7 @@
#include <typeinfo>
#include <sstream>
#include <memory>
#include <deque>
//
// Forward definition of "Genfunction"
//
......@@ -35,8 +35,11 @@ class GenFunctionInterpreter {
// Interprets a string.
GFPTR interpret(std::string::const_iterator begin,
std::string::const_iterator end ) const;
std::string::const_iterator end,
std::deque<double> *fpData=nullptr) const;
private:
// Store the actual interpreters, map them into the type name
......
......@@ -4,7 +4,7 @@
#include <string>
#include <typeinfo>
#include <sstream>
#include <deque>
//
// Forward declaration of GeoGenfun::AbsFunction
//
......@@ -40,14 +40,19 @@ class GenFunctionPersistifier {
// Retrieves the stream used to build the expression:
std::ostringstream & getStream() const;
private:
// Retreive floating point data
std::deque<double> & getFloatingPointData() const;
private:
// Store the actual recorders, map them into the type name
std::map<std::string, const GenFunctionRecorder *> recorderMap;
// Here is the result:
mutable std::string codedString;
mutable std::string codedString;
mutable std::deque<double> floatingPointData;
// An ostringstream is used to build the coded string:
mutable std::ostringstream *stream;
......
......@@ -26,7 +26,7 @@ class GenFunctionReader {
virtual ~GenFunctionReader();
// Execute
virtual GFPTR execute(std::string::const_iterator , std::string::const_iterator) const=0;
virtual GFPTR execute(std::string::const_iterator , std::string::const_iterator, std::deque<double> *fpData=nullptr) const=0;
// Access to the interpreter:
const GenFunctionInterpreter *getInterpreter() const;
......
......@@ -10,7 +10,7 @@ class ConstTimesFunctionReader: public GenFunctionReader {
public:
ConstTimesFunctionReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> *fpData=nullptr ) const;
};
......@@ -29,7 +29,7 @@ class ConstPlusFunctionReader: public GenFunctionReader {
public:
ConstPlusFunctionReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> *fpData=nullptr ) const;
};
......@@ -48,7 +48,7 @@ class ConstMinusFunctionReader: public GenFunctionReader {
public:
ConstMinusFunctionReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> *fpData=nullptr ) const;
};
......@@ -67,7 +67,7 @@ class ConstOverFunctionReader: public GenFunctionReader {
public:
ConstOverFunctionReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> *fpData=nullptr ) const;
};
......@@ -87,7 +87,7 @@ class FunctionCompositionReader: public GenFunctionReader {
public:
FunctionCompositionReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> *fpData ) const;
};
......@@ -107,7 +107,7 @@ class FunctionNegationReader: public GenFunctionReader {
public:
FunctionNegationReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> *fpData ) const;
};
......@@ -126,7 +126,7 @@ class FunctionNoopReader: public GenFunctionReader {
public:
FunctionNoopReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> *fpData ) const;
};
......@@ -145,7 +145,7 @@ class FunctionProductReader: public GenFunctionReader {
public:
FunctionProductReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> *fpData ) const;
};
......@@ -164,7 +164,7 @@ class FunctionQuotientReader: public GenFunctionReader {
public:
FunctionQuotientReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> *fpData ) const;
};
......@@ -184,7 +184,7 @@ class FunctionSumReader: public GenFunctionReader {
public:
FunctionSumReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> *fpData ) const;
};
......@@ -203,7 +203,7 @@ class FunctionDifferenceReader: public GenFunctionReader {
public:
FunctionDifferenceReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end ) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> *fpData ) const;
};
......@@ -223,7 +223,7 @@ class VariableReader: public GenFunctionReader {
public:
VariableReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> *fpData=nullptr) const;
};
......
......@@ -11,7 +11,7 @@ class ModReader: public GenFunctionReader {
public:
ModReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> * fpData) const;
};
......
......@@ -11,7 +11,7 @@ class RectangularReader: public GenFunctionReader {
public:
RectangularReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> *fpData) const;
};
......
......@@ -12,7 +12,7 @@ class SinReader: public GenFunctionReader {
public:
SinReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> *fpData=nullptr) const;
};
......
......@@ -11,7 +11,7 @@ class SqrtReader: public GenFunctionReader {
public:
SqrtReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> *fpData=nullptr) const;
};
......
......@@ -11,7 +11,7 @@ class SquareReader: public GenFunctionReader {
public:
SquareReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> * fpData=nullptr) const;
};
......
......@@ -11,7 +11,7 @@ class TanReader: public GenFunctionReader {
public:
TanReader(GenFunctionInterpreter * interpreter);
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end) const;
virtual GFPTR execute(std::string::const_iterator begin, std::string::const_iterator end, std::deque<double> *fpData=nullptr) const;
};
......
......@@ -7,7 +7,7 @@
ACosReader::ACosReader(GenFunctionInterpreter *interpreter):GenFunctionReader("ACos", interpreter) {}
GFPTR ACosReader::execute(std::string::const_iterator, std::string::const_iterator ) const {
GFPTR ACosReader::execute(std::string::const_iterator, std::string::const_iterator, std::deque<double> * ) const {
return GFPTR(new GeoGenfun::ACos());
}
......
......@@ -7,7 +7,7 @@
ASinReader::ASinReader(GenFunctionInterpreter *interpreter):GenFunctionReader("ASin", interpreter) {}
GFPTR ASinReader::execute(std::string::const_iterator, std::string::const_iterator ) const {
GFPTR ASinReader::execute(std::string::const_iterator, std::string::const_iterator, std::deque<double> * ) const {
return GFPTR(new GeoGenfun::ASin());
}
......
......@@ -7,7 +7,7 @@
ATanReader::ATanReader(GenFunctionInterpreter *interpreter):GenFunctionReader("ATan", interpreter) {}
GFPTR ATanReader::execute(std::string::const_iterator, std::string::const_iterator ) const {
GFPTR ATanReader::execute(std::string::const_iterator, std::string::const_iterator, std::deque<double> * ) const {
return GFPTR(new GeoGenfun::ATan());
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment