10116d04dSCyndy Ishida //===- TextStubCommon.h ---------------------------------------------------===//
20116d04dSCyndy Ishida //
30116d04dSCyndy Ishida // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40116d04dSCyndy Ishida // See https://llvm.org/LICENSE.txt for license information.
50116d04dSCyndy Ishida // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60116d04dSCyndy Ishida //
70116d04dSCyndy Ishida //===----------------------------------------------------------------------===//
80116d04dSCyndy Ishida //
90116d04dSCyndy Ishida // Defines common Text Stub YAML mappings.
100116d04dSCyndy Ishida //
110116d04dSCyndy Ishida //===----------------------------------------------------------------------===//
120116d04dSCyndy Ishida
130116d04dSCyndy Ishida #ifndef LLVM_TEXTAPI_TEXT_STUB_COMMON_H
140116d04dSCyndy Ishida #define LLVM_TEXTAPI_TEXT_STUB_COMMON_H
150116d04dSCyndy Ishida
160116d04dSCyndy Ishida #include "llvm/ADT/StringRef.h"
170116d04dSCyndy Ishida #include "llvm/Support/YAMLTraits.h"
180116d04dSCyndy Ishida #include "llvm/TextAPI/Architecture.h"
190116d04dSCyndy Ishida #include "llvm/TextAPI/InterfaceFile.h"
20*b48e3782Sserge-sans-paille #include "llvm/TextAPI/Platform.h"
21*b48e3782Sserge-sans-paille #include "llvm/TextAPI/Target.h"
220116d04dSCyndy Ishida
230116d04dSCyndy Ishida using UUID = std::pair<llvm::MachO::Target, std::string>;
240116d04dSCyndy Ishida
LLVM_YAML_STRONG_TYPEDEF(llvm::StringRef,FlowStringRef)250116d04dSCyndy Ishida LLVM_YAML_STRONG_TYPEDEF(llvm::StringRef, FlowStringRef)
260116d04dSCyndy Ishida LLVM_YAML_STRONG_TYPEDEF(uint8_t, SwiftVersion)
270116d04dSCyndy Ishida LLVM_YAML_IS_FLOW_SEQUENCE_VECTOR(UUID)
280116d04dSCyndy Ishida LLVM_YAML_IS_FLOW_SEQUENCE_VECTOR(FlowStringRef)
290116d04dSCyndy Ishida
300116d04dSCyndy Ishida namespace llvm {
31*b48e3782Sserge-sans-paille
32*b48e3782Sserge-sans-paille namespace MachO {
33*b48e3782Sserge-sans-paille class ArchitectureSet;
34*b48e3782Sserge-sans-paille class PackedVersion;
35*b48e3782Sserge-sans-paille }
360116d04dSCyndy Ishida namespace yaml {
370116d04dSCyndy Ishida
380116d04dSCyndy Ishida template <> struct ScalarTraits<FlowStringRef> {
390116d04dSCyndy Ishida static void output(const FlowStringRef &, void *, raw_ostream &);
400116d04dSCyndy Ishida static StringRef input(StringRef, void *, FlowStringRef &);
410116d04dSCyndy Ishida static QuotingType mustQuote(StringRef);
420116d04dSCyndy Ishida };
430116d04dSCyndy Ishida
440116d04dSCyndy Ishida template <> struct ScalarEnumerationTraits<MachO::ObjCConstraintType> {
450116d04dSCyndy Ishida static void enumeration(IO &, MachO::ObjCConstraintType &);
460116d04dSCyndy Ishida };
470116d04dSCyndy Ishida
480116d04dSCyndy Ishida template <> struct ScalarTraits<MachO::PlatformSet> {
490116d04dSCyndy Ishida static void output(const MachO::PlatformSet &, void *, raw_ostream &);
500116d04dSCyndy Ishida static StringRef input(StringRef, void *, MachO::PlatformSet &);
510116d04dSCyndy Ishida static QuotingType mustQuote(StringRef);
520116d04dSCyndy Ishida };
530116d04dSCyndy Ishida
540116d04dSCyndy Ishida template <> struct ScalarBitSetTraits<MachO::ArchitectureSet> {
550116d04dSCyndy Ishida static void bitset(IO &, MachO::ArchitectureSet &);
560116d04dSCyndy Ishida };
570116d04dSCyndy Ishida
580116d04dSCyndy Ishida template <> struct ScalarTraits<MachO::Architecture> {
590116d04dSCyndy Ishida static void output(const MachO::Architecture &, void *, raw_ostream &);
600116d04dSCyndy Ishida static StringRef input(StringRef, void *, MachO::Architecture &);
610116d04dSCyndy Ishida static QuotingType mustQuote(StringRef);
620116d04dSCyndy Ishida };
630116d04dSCyndy Ishida
640116d04dSCyndy Ishida template <> struct ScalarTraits<MachO::PackedVersion> {
650116d04dSCyndy Ishida static void output(const MachO::PackedVersion &, void *, raw_ostream &);
660116d04dSCyndy Ishida static StringRef input(StringRef, void *, MachO::PackedVersion &);
670116d04dSCyndy Ishida static QuotingType mustQuote(StringRef);
680116d04dSCyndy Ishida };
690116d04dSCyndy Ishida
700116d04dSCyndy Ishida template <> struct ScalarTraits<SwiftVersion> {
710116d04dSCyndy Ishida static void output(const SwiftVersion &, void *, raw_ostream &);
720116d04dSCyndy Ishida static StringRef input(StringRef, void *, SwiftVersion &);
730116d04dSCyndy Ishida static QuotingType mustQuote(StringRef);
740116d04dSCyndy Ishida };
750116d04dSCyndy Ishida
760116d04dSCyndy Ishida template <> struct ScalarTraits<UUID> {
770116d04dSCyndy Ishida static void output(const UUID &, void *, raw_ostream &);
780116d04dSCyndy Ishida static StringRef input(StringRef, void *, UUID &);
790116d04dSCyndy Ishida static QuotingType mustQuote(StringRef);
800116d04dSCyndy Ishida };
810116d04dSCyndy Ishida
820116d04dSCyndy Ishida } // end namespace yaml.
830116d04dSCyndy Ishida } // end namespace llvm.
840116d04dSCyndy Ishida
850116d04dSCyndy Ishida #endif // LLVM_TEXTAPI_TEXT_STUB_COMMON_H
86