This is simply a case of not discarding information. Without this, it would
not be possible to parse a trace and re-create the identical trace.
Signed-off-by: José Fonseca <jose.r.fonseca@gmail.com>
bool SInt ::toBool(void) const { return value != 0; }
bool UInt ::toBool(void) const { return value != 0; }
bool Float ::toBool(void) const { return value != 0; }
bool SInt ::toBool(void) const { return value != 0; }
bool UInt ::toBool(void) const { return value != 0; }
bool Float ::toBool(void) const { return value != 0; }
+bool Double ::toBool(void) const { return value != 0; }
bool String ::toBool(void) const { return true; }
bool Enum ::toBool(void) const { return sig->value != 0; }
bool Struct ::toBool(void) const { return true; }
bool String ::toBool(void) const { return true; }
bool Enum ::toBool(void) const { return sig->value != 0; }
bool Struct ::toBool(void) const { return true; }
signed long long SInt ::toSInt(void) const { return value; }
signed long long UInt ::toSInt(void) const { assert(static_cast<signed long long>(value) >= 0); return static_cast<signed long long>(value); }
signed long long Float ::toSInt(void) const { return static_cast<signed long long>(value); }
signed long long SInt ::toSInt(void) const { return value; }
signed long long UInt ::toSInt(void) const { assert(static_cast<signed long long>(value) >= 0); return static_cast<signed long long>(value); }
signed long long Float ::toSInt(void) const { return static_cast<signed long long>(value); }
+signed long long Double ::toSInt(void) const { return static_cast<signed long long>(value); }
signed long long Enum ::toSInt(void) const { return sig->value; }
signed long long Enum ::toSInt(void) const { return sig->value; }
unsigned long long SInt ::toUInt(void) const { assert(value >= 0); return static_cast<signed long long>(value); }
unsigned long long UInt ::toUInt(void) const { return value; }
unsigned long long Float ::toUInt(void) const { return static_cast<unsigned long long>(value); }
unsigned long long SInt ::toUInt(void) const { assert(value >= 0); return static_cast<signed long long>(value); }
unsigned long long UInt ::toUInt(void) const { return value; }
unsigned long long Float ::toUInt(void) const { return static_cast<unsigned long long>(value); }
+unsigned long long Double ::toUInt(void) const { return static_cast<unsigned long long>(value); }
unsigned long long Enum ::toUInt(void) const { assert(sig->value >= 0); return sig->value; }
unsigned long long Enum ::toUInt(void) const { assert(sig->value >= 0); return sig->value; }
float SInt ::toFloat(void) const { return static_cast<float>(value); }
float UInt ::toFloat(void) const { return static_cast<float>(value); }
float Float ::toFloat(void) const { return value; }
float SInt ::toFloat(void) const { return static_cast<float>(value); }
float UInt ::toFloat(void) const { return static_cast<float>(value); }
float Float ::toFloat(void) const { return value; }
+float Double ::toFloat(void) const { return value; }
float Enum ::toFloat(void) const { return static_cast<float>(sig->value); }
float Enum ::toFloat(void) const { return static_cast<float>(sig->value); }
double SInt ::toDouble(void) const { return static_cast<double>(value); }
double UInt ::toDouble(void) const { return static_cast<double>(value); }
double Float ::toDouble(void) const { return value; }
double SInt ::toDouble(void) const { return static_cast<double>(value); }
double UInt ::toDouble(void) const { return static_cast<double>(value); }
double Float ::toDouble(void) const { return value; }
+double Double ::toDouble(void) const { return value; }
double Enum ::toDouble(void) const { return static_cast<double>(sig->value); }
double Enum ::toDouble(void) const { return static_cast<double>(sig->value); }
void SInt ::visit(Visitor &visitor) { visitor.visit(this); }
void UInt ::visit(Visitor &visitor) { visitor.visit(this); }
void Float ::visit(Visitor &visitor) { visitor.visit(this); }
void SInt ::visit(Visitor &visitor) { visitor.visit(this); }
void UInt ::visit(Visitor &visitor) { visitor.visit(this); }
void Float ::visit(Visitor &visitor) { visitor.visit(this); }
+void Double ::visit(Visitor &visitor) { visitor.visit(this); }
void String ::visit(Visitor &visitor) { visitor.visit(this); }
void Enum ::visit(Visitor &visitor) { visitor.visit(this); }
void Bitmask::visit(Visitor &visitor) { visitor.visit(this); }
void String ::visit(Visitor &visitor) { visitor.visit(this); }
void Enum ::visit(Visitor &visitor) { visitor.visit(this); }
void Bitmask::visit(Visitor &visitor) { visitor.visit(this); }
void Visitor::visit(SInt *) { assert(0); }
void Visitor::visit(UInt *) { assert(0); }
void Visitor::visit(Float *) { assert(0); }
void Visitor::visit(SInt *) { assert(0); }
void Visitor::visit(UInt *) { assert(0); }
void Visitor::visit(Float *) { assert(0); }
+void Visitor::visit(Double *) { assert(0); }
void Visitor::visit(String *) { assert(0); }
void Visitor::visit(Enum *node) { assert(0); }
void Visitor::visit(Bitmask *node) { visit(static_cast<UInt *>(node)); }
void Visitor::visit(String *) { assert(0); }
void Visitor::visit(Enum *node) { assert(0); }
void Visitor::visit(Bitmask *node) { visit(static_cast<UInt *>(node)); }
os << literal << node->value << normal;
}
os << literal << node->value << normal;
}
+ void visit(Double *node) {
+ os << literal << node->value << normal;
+ }
+
void visit(String *node) {
os << literal << "\"";
for (const char *it = node->value; *it; ++it) {
void visit(String *node) {
os << literal << "\"";
for (const char *it = node->value; *it; ++it) {
class Float : public Value
{
public:
class Float : public Value
{
public:
- Float(double _value) : value(_value) {}
+ Float(float _value) : value(_value) {}
+
+ bool toBool(void) const;
+ signed long long toSInt(void) const;
+ unsigned long long toUInt(void) const;
+ virtual float toFloat(void) const;
+ virtual double toDouble(void) const;
+ void visit(Visitor &visitor);
+
+ float value;
+};
+
+
+class Double : public Value
+{
+public:
+ Double(double _value) : value(_value) {}
bool toBool(void) const;
signed long long toSInt(void) const;
bool toBool(void) const;
signed long long toSInt(void) const;
virtual void visit(SInt *);
virtual void visit(UInt *);
virtual void visit(Float *);
virtual void visit(SInt *);
virtual void visit(UInt *);
virtual void visit(Float *);
+ virtual void visit(Double *);
virtual void visit(String *);
virtual void visit(Enum *);
virtual void visit(Bitmask *);
virtual void visit(String *);
virtual void visit(Enum *);
virtual void visit(Bitmask *);
Value *Parser::parse_double() {
double value;
file->read(&value, sizeof value);
Value *Parser::parse_double() {
double value;
file->read(&value, sizeof value);
- return new Float(value);
+ return new Double(value);
writer.writeFloat(node->value);
}
writer.writeFloat(node->value);
}
+ void visit(Double *node) {
+ writer.writeDouble(node->value);
+ }
+
void visit(String *node) {
writer.writeString(node->value);
}
void visit(String *node) {
writer.writeString(node->value);
}
m_variant = QVariant(node->value);
}
m_variant = QVariant(node->value);
}
+void VariantVisitor::visit(trace::Double *node)
+{
+ m_variant = QVariant(node->value);
+}
+
void VariantVisitor::visit(trace::String *node)
{
m_variant = QVariant(QString::fromStdString(node->value));
void VariantVisitor::visit(trace::String *node)
{
m_variant = QVariant(QString::fromStdString(node->value));
virtual void visit(trace::SInt *node);
virtual void visit(trace::UInt *node);
virtual void visit(trace::Float *node);
virtual void visit(trace::SInt *node);
virtual void visit(trace::UInt *node);
virtual void visit(trace::Float *node);
+ virtual void visit(trace::Double *node);
virtual void visit(trace::String *node);
virtual void visit(trace::Enum *e);
virtual void visit(trace::Bitmask *bitmask);
virtual void visit(trace::String *node);
virtual void visit(trace::Enum *e);
virtual void visit(trace::Bitmask *bitmask);
m_editedValue = new trace::Float(m_variant.toFloat());
}
m_editedValue = new trace::Float(m_variant.toFloat());
}
+ virtual void visit(trace::Double *node)
+ {
+ m_editedValue = new trace::Double(m_variant.toDouble());
+ }
+
virtual void visit(trace::String *node)
{
QString str = m_variant.toString();
virtual void visit(trace::String *node)
{
QString str = m_variant.toString();