2015-08-13 21:46:50 +00:00
|
|
|
#ifndef FLOATNODE_H
|
|
|
|
#define FLOATNODE_H
|
|
|
|
|
|
|
|
#include "definition_global.h"
|
|
|
|
|
|
|
|
#include "DefinitionNode.h"
|
|
|
|
|
|
|
|
namespace paysages {
|
|
|
|
namespace definition {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Node with a single floating point numeric value, for the definition tree.
|
|
|
|
*/
|
2015-11-09 21:30:46 +00:00
|
|
|
class DEFINITIONSHARED_EXPORT FloatNode : public DefinitionNode {
|
|
|
|
public:
|
2015-12-10 23:36:50 +00:00
|
|
|
FloatNode(DefinitionNode *parent, const string &name, double value = 0.0);
|
2015-08-13 21:46:50 +00:00
|
|
|
|
2015-11-09 21:30:46 +00:00
|
|
|
inline double getValue() const {
|
|
|
|
return value;
|
|
|
|
}
|
2015-08-13 21:46:50 +00:00
|
|
|
|
2015-12-10 23:36:50 +00:00
|
|
|
virtual string toString(int indent) const override;
|
2015-11-09 21:30:46 +00:00
|
|
|
virtual void save(PackStream *stream) const override;
|
|
|
|
virtual void load(PackStream *stream) override;
|
|
|
|
virtual void copy(DefinitionNode *destination) const override;
|
2015-08-16 21:01:56 +00:00
|
|
|
|
2015-08-16 22:29:54 +00:00
|
|
|
/**
|
|
|
|
* Change the float value stored.
|
|
|
|
*
|
|
|
|
* The DiffManager is used as intermediary, so that the change may not happen immediately.
|
|
|
|
*/
|
|
|
|
void setValue(double new_value);
|
2015-08-16 21:01:56 +00:00
|
|
|
const FloatDiff *produceDiff(double new_value) const;
|
2015-12-10 23:36:50 +00:00
|
|
|
void generateInitDiffs(vector<const DefinitionDiff *> *diffs) const;
|
2015-11-09 21:30:46 +00:00
|
|
|
virtual bool applyDiff(const DefinitionDiff *diff, bool backward = false) override;
|
2015-10-15 15:52:03 +00:00
|
|
|
|
|
|
|
void addValue(double added);
|
2015-11-09 21:30:46 +00:00
|
|
|
|
|
|
|
private:
|
2015-08-13 21:46:50 +00:00
|
|
|
double value;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // FLOATNODE_H
|