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 | |
15 | namespace llvm { |
16 | |
17 | class Error; |
18 | class raw_ostream; |
19 | |
20 | namespace MachO { |
21 | |
22 | class TextAPIWriter { |
23 | public: |
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 | |