xref: /haiku/src/kits/debugger/value/values/FloatValue.cpp (revision 8a6724a0ee3803f1e9f487d8111bb3f6cb8d16db)
1 /*
2  * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
3  * Distributed under the terms of the MIT License.
4  */
5 
6 
7 #include "FloatValue.h"
8 
9 #include <stdio.h>
10 
11 
12 FloatValue::FloatValue(const BVariant& value)
13 	:
14 	fValue(value)
15 {
16 }
17 
18 
19 FloatValue::~FloatValue()
20 {
21 }
22 
23 
24 bool
25 FloatValue::ToString(BString& _string) const
26 {
27 	char buffer[128];
28 
29 	switch (fValue.Type()) {
30 		case B_FLOAT_TYPE:
31 		{
32 			snprintf(buffer, sizeof(buffer), "%f", fValue.ToFloat());
33 			break;
34 		}
35 		case B_DOUBLE_TYPE:
36 		{
37 			snprintf(buffer, sizeof(buffer), "%g", fValue.ToDouble());
38 			break;
39 		}
40 		default:
41 			return false;
42 	}
43 
44 	BString string(buffer);
45 	if (string.Length() == 0)
46 		return false;
47 
48 	_string = string;
49 	return true;
50 }
51 
52 
53 bool
54 FloatValue::ToVariant(BVariant& _value) const
55 {
56 	_value = fValue;
57 	return true;
58 }
59 
60 
61 bool
62 FloatValue::operator==(const Value& other) const
63 {
64 	const FloatValue* otherFloat = dynamic_cast<const FloatValue*>(&other);
65 	return otherFloat != NULL ? fValue == otherFloat->fValue : false;
66 }
67