xref: /haiku/src/kits/debugger/value/value_formatters/EnumerationValueFormatter.cpp (revision a55deaea91d64802ed655d4ffcb41a3519338144)
1 /*
2  * Copyright 2015, Rene Gollent, rene@gollent.com.
3  * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
4  * Distributed under the terms of the MIT License.
5  */
6 #include "EnumerationValueFormatter.h"
7 
8 #include "EnumerationValue.h"
9 #include "Type.h"
10 
11 
12 EnumerationValueFormatter::EnumerationValueFormatter(Config* config)
13 	:
14 	IntegerValueFormatter(config)
15 {
16 }
17 
18 
19 EnumerationValueFormatter::~EnumerationValueFormatter()
20 {
21 }
22 
23 
24 status_t
25 EnumerationValueFormatter::FormatValue(Value* _value, BString& _output)
26 {
27 	Config* config = GetConfig();
28 	if (config != NULL && config->IntegerFormat() == INTEGER_FORMAT_DEFAULT) {
29 		EnumerationValue* value = dynamic_cast<EnumerationValue*>(_value);
30 		if (value == NULL)
31 			return B_BAD_VALUE;
32 
33 		if (EnumeratorValue* enumValue
34 				= value->GetType()->ValueFor(value->GetValue())) {
35 			_output.SetTo(enumValue->Name());
36 			return B_OK;
37 		}
38 	}
39 
40 	return IntegerValueFormatter::FormatValue(_value, _output);
41 }
42