root/src/tests/add-ons/print/ppd/model/Value.cpp
/*
 * Copyright 2008, Haiku.
 * Distributed under the terms of the MIT license.
 *
 * Authors:
 *              Michael Pfeiffer <laplace@users.sourceforge.net>
 */

#include "Value.h"

#include <stdio.h>

Value::Value(BString* value, Type type)
        : fType(type)
        , fValue(value)
        , fTranslation(NULL)
{
}

Value::~Value()
{
        delete fValue;
        delete fTranslation;
}

void Value::SetType(Type type)
{
        fType = type;
}

Value::Type Value::GetType()
{
        return fType;
}

void Value::SetValue(BString* value)
{
        fValue = value;
}

BString* Value::GetValue()
{
        return fValue;
}

void Value::SetTranslation(BString* translation)
{
        fTranslation = translation;
}

BString* Value::GetTranslation()
{
        return fTranslation;
}

const char* Value::GetValueString()
{
        if (fValue != NULL) {
                return fValue->String();
        }
        return NULL;
}

const char* Value::GetTranslationString()
{
        if (fTranslation != NULL) {
                return fTranslation->String();
        }
        return NULL;
}

const char* Value::ElementForType()
{
        switch (fType) {
                case kSymbolValue: return "Symbol";
                        break;
                case kStringValue: return "String";
                        break;
                case kInvocationValue: return "Invocation";
                        break;
                case kQuotedValue: return "Quoted";
                        break;
                case kUnknownValue: return "Unknown";
                        break;
        }
        return "NULL";
}

void Value::Print()
{       
        printf("\t\t<%s>\n", ElementForType());
        if (fValue != NULL) {
                printf("\t\t\t<value>%s</value>\n", fValue->String());
        }
        
        if (fTranslation != NULL) {
                printf("\t\t\t<translation>%s</translation>\n", fTranslation->String());
        }
        printf("\t\t</%s>\n", ElementForType());
}