⛏️ index : haiku.git

/*
 * 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());
}