1//===--- TextAPIWriter.h - Text API Writer ----------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_TEXTAPI_TEXTAPIWRITER_H
10#define LLVM_TEXTAPI_TEXTAPIWRITER_H
11
12#include "llvm/ADT/StringSwitch.h"
13#include "llvm/TextAPI/InterfaceFile.h"
14
15namespace llvm {
16
17class Error;
18class raw_ostream;
19
20namespace MachO {
21
22class TextAPIWriter {
23public:
24 TextAPIWriter() = delete;
25
26 /// Write TAPI text file contents into stream.
27 ///
28 /// \param OS Stream to write to.
29 /// \param File Library attributes to write as text file.
30 /// \param FileKind File format to write text file as. If not specified, it
31 /// will read from File.
32 /// \param Compact Whether to limit whitespace in text file.
33 static Error writeToStream(raw_ostream &OS, const InterfaceFile &File,
34 const FileType FileKind = FileType::Invalid,
35 bool Compact = false);
36
37 /// Get TAPI FileType from the input string.
38 ///
39 /// \param FT String of input to map to FileType.
40 static FileType parseFileType(const StringRef FT) {
41 return StringSwitch<FileType>(FT)
42 .Case(S: "tbd-v1", Value: FileType::TBD_V1)
43 .Case(S: "tbd-v2", Value: FileType::TBD_V2)
44 .Case(S: "tbd-v3", Value: FileType::TBD_V3)
45 .Case(S: "tbd-v4", Value: FileType::TBD_V4)
46 .Case(S: "tbd-v5", Value: FileType::TBD_V5)
47 .Default(Value: FileType::Invalid);
48 }
49};
50
51} // end namespace MachO.
52} // end namespace llvm.
53
54#endif // LLVM_TEXTAPI_TEXTAPIWRITER_H
55