Debugger: Tweaks for float values.

FloatValue:
- Store value as variant rather than double so as to be able to
  later differentiate between float vs double.

PrimitiveValueNode:
- Construct float nodes with variant value.
This commit is contained in:
Rene Gollent
2015-07-24 19:20:52 -04:00
parent d88d941c90
commit 5c5c25163d
3 changed files with 21 additions and 7 deletions
@@ -77,7 +77,7 @@ PrimitiveValueNode::ResolvedLocationAndValue(ValueLoader* valueLoader,
else if (BVariant::TypeIsInteger(valueType)) else if (BVariant::TypeIsInteger(valueType))
value = new(std::nothrow) IntegerValue(valueData); value = new(std::nothrow) IntegerValue(valueData);
else if (BVariant::TypeIsFloat(valueType)) else if (BVariant::TypeIsFloat(valueType))
value = new(std::nothrow) FloatValue(valueData.ToDouble()); value = new(std::nothrow) FloatValue(valueData);
else else
return B_UNSUPPORTED; return B_UNSUPPORTED;
+16 -2
View File
@@ -9,7 +9,7 @@
#include <stdio.h> #include <stdio.h>
FloatValue::FloatValue(double value) FloatValue::FloatValue(const BVariant& value)
: :
fValue(value) fValue(value)
{ {
@@ -25,7 +25,21 @@ bool
FloatValue::ToString(BString& _string) const FloatValue::ToString(BString& _string) const
{ {
char buffer[128]; char buffer[128];
snprintf(buffer, sizeof(buffer), "%g", fValue);
switch (fValue.Type()) {
case B_FLOAT_TYPE:
{
snprintf(buffer, sizeof(buffer), "%f", fValue.ToFloat());
break;
}
case B_DOUBLE_TYPE:
{
snprintf(buffer, sizeof(buffer), "%g", fValue.ToDouble());
break;
}
default:
return false;
}
BString string(buffer); BString string(buffer);
if (string.Length() == 0) if (string.Length() == 0)
+4 -4
View File
@@ -1,4 +1,4 @@
/* /*
* Copyright 2009, Ingo Weinhold, [email protected]. * Copyright 2009, Ingo Weinhold, [email protected].
* Distributed under the terms of the MIT License. * Distributed under the terms of the MIT License.
*/ */
@@ -11,10 +11,10 @@
class FloatValue : public Value { class FloatValue : public Value {
public: public:
FloatValue(double value); FloatValue(const BVariant& value);
virtual ~FloatValue(); virtual ~FloatValue();
double GetValue() const BVariant GetValue() const
{ return fValue; } { return fValue; }
virtual bool ToString(BString& _string) const; virtual bool ToString(BString& _string) const;
@@ -23,7 +23,7 @@ public:
virtual bool operator==(const Value& other) const; virtual bool operator==(const Value& other) const;
private: private:
double fValue; BVariant fValue;
}; };