1/*
2 * Copyright 2009-2012, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Distributed under the terms of the MIT License.
4 */
5
6#include "AttributeValue.h"
7
8#include <stdio.h>
9
10#include "AttributeClasses.h"
11
12
13const char*
14AttributeValue::ToString(char* buffer, size_t size)
15{
16	switch (attributeClass) {
17		case ATTRIBUTE_CLASS_ADDRESS:
18			snprintf(buffer, size, "%#" B_PRIx64, address);
19			return buffer;
20		case ATTRIBUTE_CLASS_BLOCK:
21			snprintf(buffer, size, "(%p, %#" B_PRIx64 ")", block.data,
22				block.length);
23			return buffer;
24		case ATTRIBUTE_CLASS_CONSTANT:
25			snprintf(buffer, size, "%#" B_PRIx64, constant);
26			return buffer;
27		case ATTRIBUTE_CLASS_FLAG:
28			snprintf(buffer, size, "%s", flag ? "true" : "false");
29			return buffer;
30		case ATTRIBUTE_CLASS_ADDRPTR:
31		case ATTRIBUTE_CLASS_LINEPTR:
32		case ATTRIBUTE_CLASS_LOCLIST:
33		case ATTRIBUTE_CLASS_LOCLISTPTR:
34		case ATTRIBUTE_CLASS_MACPTR:
35		case ATTRIBUTE_CLASS_RANGELIST:
36		case ATTRIBUTE_CLASS_RANGELISTPTR:
37		case ATTRIBUTE_CLASS_STROFFSETSPTR:
38			snprintf(buffer, size, "%#" B_PRIx64, pointer);
39			return buffer;
40		case ATTRIBUTE_CLASS_REFERENCE:
41			snprintf(buffer, size, "%p", reference);
42			return buffer;
43		case ATTRIBUTE_CLASS_STRING:
44			snprintf(buffer, size, "\"%s\"", string);
45			return buffer;
46
47		default:
48		case ATTRIBUTE_CLASS_UNKNOWN:
49			return "<unknown>";
50	}
51
52	return buffer;
53}
54