1//===--- TextAPIReader.h - Text API Reader ----------------------*- 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_TEXTAPIREADER_H
10#define LLVM_TEXTAPI_TEXTAPIREADER_H
11
12#include "llvm/Support/Error.h"
13
14namespace llvm {
15
16class MemoryBufferRef;
17
18namespace MachO {
19
20class InterfaceFile;
21enum FileType : unsigned;
22
23class TextAPIReader {
24public:
25  ///  Determine whether input can be interpreted as TAPI text file.
26  ///  This allows one to exit early when file is not recognized as TAPI file
27  ///  as opposed to `get` which attempts to full parse and load of library
28  ///  attributes.
29  ///
30  /// \param InputBuffer Buffer holding contents of TAPI text file.
31  /// \return The file format version of TAPI text file.
32  static Expected<FileType> canRead(MemoryBufferRef InputBuffer);
33
34  /// Parse and get an InterfaceFile that represents the full
35  /// library.
36  ///
37  /// \param InputBuffer Buffer holding contents of TAPI text file.
38  static Expected<std::unique_ptr<InterfaceFile>>
39  get(MemoryBufferRef InputBuffer);
40
41  TextAPIReader() = delete;
42};
43
44} // end namespace MachO.
45} // end namespace llvm.
46
47#endif // LLVM_TEXTAPI_TEXTAPIREADER_H
48