1/*
2 * Copyright 2008, Haiku.
3 * Distributed under the terms of the MIT license.
4 *
5 * Authors:
6 *		Michael Pfeiffer <laplace@users.sourceforge.net>
7 */
8
9#include "Value.h"
10
11#include <stdio.h>
12
13Value::Value(BString* value, Type type)
14	: fType(type)
15	, fValue(value)
16	, fTranslation(NULL)
17{
18}
19
20Value::~Value()
21{
22	delete fValue;
23	delete fTranslation;
24}
25
26void Value::SetType(Type type)
27{
28	fType = type;
29}
30
31Value::Type Value::GetType()
32{
33	return fType;
34}
35
36void Value::SetValue(BString* value)
37{
38	fValue = value;
39}
40
41BString* Value::GetValue()
42{
43	return fValue;
44}
45
46void Value::SetTranslation(BString* translation)
47{
48	fTranslation = translation;
49}
50
51BString* Value::GetTranslation()
52{
53	return fTranslation;
54}
55
56const char* Value::GetValueString()
57{
58	if (fValue != NULL) {
59		return fValue->String();
60	}
61	return NULL;
62}
63
64const char* Value::GetTranslationString()
65{
66	if (fTranslation != NULL) {
67		return fTranslation->String();
68	}
69	return NULL;
70}
71
72const char* Value::ElementForType()
73{
74	switch (fType) {
75		case kSymbolValue: return "Symbol";
76			break;
77		case kStringValue: return "String";
78			break;
79		case kInvocationValue: return "Invocation";
80			break;
81		case kQuotedValue: return "Quoted";
82			break;
83		case kUnknownValue: return "Unknown";
84			break;
85	}
86	return "NULL";
87}
88
89void Value::Print()
90{
91	printf("\t\t<%s>\n", ElementForType());
92	if (fValue != NULL) {
93		printf("\t\t\t<value>%s</value>\n", fValue->String());
94	}
95
96	if (fTranslation != NULL) {
97		printf("\t\t\t<translation>%s</translation>\n", fTranslation->String());
98	}
99	printf("\t\t</%s>\n", ElementForType());
100}
101