root/src/kits/debugger/value/values/EnumerationValue.cpp
/*
 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
 * Distributed under the terms of the MIT License.
 */


#include "EnumerationValue.h"

#include "Type.h"


EnumerationValue::EnumerationValue(EnumerationType* type, const BVariant& value)
        :
        IntegerValue(value),
        fType(type)
{
        fType->AcquireReference();
}


EnumerationValue::~EnumerationValue()
{
        fType->ReleaseReference();
}


bool
EnumerationValue::ToString(BString& _string) const
{
        if (!fValue.IsInteger())
                return false;

        EnumeratorValue* enumValue = fType->ValueFor(fValue);
        if (enumValue == NULL)
                return IntegerValue::ToString(_string);

        BString string(enumValue->Name());
        if (string.Length() == 0)
                return false;

        _string = string;
        return true;
}