1/*
2 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Copyright 2013, Rene Gollent, rene@gollent.com.
4 * Distributed under the terms of the MIT License.
5 */
6#ifndef ATTRIBUTE_TABLES_H
7#define ATTRIBUTE_TABLES_H
8
9#include "DebugInfoEntry.h"
10
11
12typedef status_t (DebugInfoEntry::* DebugInfoEntrySetter)(uint16,
13	const AttributeValue&);
14
15
16// attribute classes
17enum {
18	ATTRIBUTE_CLASS_UNKNOWN			= 0,
19	ATTRIBUTE_CLASS_ADDRESS			= 1,
20	ATTRIBUTE_CLASS_ADDRPTR			= 2,
21	ATTRIBUTE_CLASS_BLOCK			= 3,
22	ATTRIBUTE_CLASS_CONSTANT		= 4,
23	ATTRIBUTE_CLASS_FLAG			= 5,
24	ATTRIBUTE_CLASS_LINEPTR			= 6,
25	ATTRIBUTE_CLASS_LOCLIST   		= 7,
26	ATTRIBUTE_CLASS_LOCLISTPTR		= 8,
27	ATTRIBUTE_CLASS_MACPTR			= 9,
28	ATTRIBUTE_CLASS_RANGELIST		= 10,
29	ATTRIBUTE_CLASS_RANGELISTPTR	= 11,
30	ATTRIBUTE_CLASS_REFERENCE		= 12,
31	ATTRIBUTE_CLASS_STRING			= 13,
32	ATTRIBUTE_CLASS_STROFFSETSPTR	= 14,
33};
34
35
36uint16	get_attribute_name_classes(uint32 name);
37uint16	get_attribute_form_classes(uint32 form);
38uint8	get_attribute_class(uint32 name, uint32 form);
39
40const char*	get_attribute_name_name(uint32 name);
41const char*	get_attribute_form_name(uint32 form);
42
43DebugInfoEntrySetter	get_attribute_name_setter(uint32 name);
44
45
46#endif	// ATTRIBUTE_TABLES_H
47