blob: 2265c5f55967ab0414b3736e166d7033c795897f [file] [log] [blame]
Nick Kledzik7735a7d2012-01-04 23:58:17 +00001//===- Core/YamlKeyValues.h - Reads YAML ----------------------------------===//
2//
3// The LLVM Linker
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef LLD_CORE_YAML_KEY_VALUES_H_
11#define LLD_CORE_YAML_KEY_VALUES_H_
12
13#include "lld/Core/Atom.h"
Nick Kledzikf4fb2c52012-01-11 01:06:19 +000014#include "lld/Core/DefinedAtom.h"
Nick Kledzik6bc04c62012-02-22 21:56:59 +000015#include "lld/Core/UndefinedAtom.h"
Nick Kledzik20e652d2012-04-20 01:24:37 +000016#include "lld/Core/File.h"
Nick Kledzik7735a7d2012-01-04 23:58:17 +000017
18
19namespace lld {
20namespace yaml {
21
22class KeyValues {
23public:
Nick Kledzikf4fb2c52012-01-11 01:06:19 +000024 static const char* const nameKeyword;
Nick Kledzik49d6cc82012-02-15 00:38:09 +000025 static const char* const refNameKeyword;
Nick Kledzikf4fb2c52012-01-11 01:06:19 +000026 static const char* const sectionNameKeyword;
27 static const char* const contentKeyword;
28 static const char* const sizeKeyword;
Nick Kledzik6bc04c62012-02-22 21:56:59 +000029 static const char* const loadNameKeyword;
30 static const char* const valueKeyword;
Nick Kledzik49d6cc82012-02-15 00:38:09 +000031 static const char* const fixupsKeyword;
Nick Kledzik20e652d2012-04-20 01:24:37 +000032 static const char* const fileAtomsKeyword;
33 static const char* const fileMembersKeyword;
34
35 static const char* const fileKindKeyword;
36 static const File::Kind fileKindDefault;
37 static File::Kind fileKind(const char*);
38 static const char* fileKind(File::Kind);
Michael J. Spencer765792d2012-04-03 18:40:27 +000039
Nick Kledzikf4fb2c52012-01-11 01:06:19 +000040 static const char* const definitionKeyword;
41 static const Atom::Definition definitionDefault;
42 static Atom::Definition definition(const char*);
43 static const char* definition(Atom::Definition);
Nick Kledzik7735a7d2012-01-04 23:58:17 +000044
Nick Kledzikf4fb2c52012-01-11 01:06:19 +000045 static const char* const scopeKeyword;
46 static const DefinedAtom::Scope scopeDefault;
47 static DefinedAtom::Scope scope(const char*);
48 static const char* scope(DefinedAtom::Scope);
Michael J. Spencer765792d2012-04-03 18:40:27 +000049
Nick Kledzikf4fb2c52012-01-11 01:06:19 +000050 static const char* const contentTypeKeyword;
51 static const DefinedAtom::ContentType contentTypeDefault;
52 static DefinedAtom::ContentType contentType(const char*);
53 static const char* contentType(DefinedAtom::ContentType);
Nick Kledzik7735a7d2012-01-04 23:58:17 +000054
Nick Kledzikf4fb2c52012-01-11 01:06:19 +000055 static const char* const deadStripKindKeyword;
56 static const DefinedAtom::DeadStripKind deadStripKindDefault;
57 static DefinedAtom::DeadStripKind deadStripKind(const char*);
58 static const char* deadStripKind(DefinedAtom::DeadStripKind);
Nick Kledzik7735a7d2012-01-04 23:58:17 +000059
Nick Kledzikf4fb2c52012-01-11 01:06:19 +000060 static const char* const sectionChoiceKeyword;
61 static const DefinedAtom::SectionChoice sectionChoiceDefault;
62 static DefinedAtom::SectionChoice sectionChoice(const char*);
63 static const char* sectionChoice(DefinedAtom::SectionChoice);
Nick Kledzik7735a7d2012-01-04 23:58:17 +000064
Nick Kledzikf4fb2c52012-01-11 01:06:19 +000065 static const char* const interposableKeyword;
66 static const DefinedAtom::Interposable interposableDefault;
67 static DefinedAtom::Interposable interposable(const char*);
68 static const char* interposable(DefinedAtom::Interposable);
Nick Kledzik7735a7d2012-01-04 23:58:17 +000069
Nick Kledzikf4fb2c52012-01-11 01:06:19 +000070 static const char* const mergeKeyword;
71 static const DefinedAtom::Merge mergeDefault;
72 static DefinedAtom::Merge merge(const char*);
73 static const char* merge(DefinedAtom::Merge);
Nick Kledzik7735a7d2012-01-04 23:58:17 +000074
Nick Kledzikf4fb2c52012-01-11 01:06:19 +000075 static const char* const permissionsKeyword;
76 static const DefinedAtom::ContentPermissions permissionsDefault;
77 static DefinedAtom::ContentPermissions permissions(const char*);
78 static const char* permissions(DefinedAtom::ContentPermissions);
Nick Kledzik7735a7d2012-01-04 23:58:17 +000079
Nick Kledzikf4fb2c52012-01-11 01:06:19 +000080 static const char* const isThumbKeyword;
81 static const bool isThumbDefault;
82 static bool isThumb(const char*);
83 static const char* isThumb(bool);
Nick Kledzik7735a7d2012-01-04 23:58:17 +000084
Nick Kledzikf4fb2c52012-01-11 01:06:19 +000085 static const char* const isAliasKeyword;
86 static const bool isAliasDefault;
87 static bool isAlias(const char*);
88 static const char* isAlias(bool);
Nick Kledzik7735a7d2012-01-04 23:58:17 +000089
Nick Kledzik6bc04c62012-02-22 21:56:59 +000090 static const char* const canBeNullKeyword;
91 static const UndefinedAtom::CanBeNull canBeNullDefault;
92 static UndefinedAtom::CanBeNull canBeNull(const char*);
93 static const char* canBeNull(UndefinedAtom::CanBeNull);
Nick Kledzik23384e82012-02-07 02:59:54 +000094
Nick Kledzik49d6cc82012-02-15 00:38:09 +000095
96 static const char* const fixupsKindKeyword;
97 static const char* const fixupsOffsetKeyword;
98 static const char* const fixupsTargetKeyword;
99 static const char* const fixupsAddendKeyword;
100
Nick Kledzik7735a7d2012-01-04 23:58:17 +0000101};
102
103} // namespace yaml
104} // namespace lld
105
106#endif // LLD_CORE_YAML_KEY_VALUES_H_
107