1fe6060f1SDimitry Andric //===--- TextAPIReader.h - Text API Reader ----------------------*- C++ -*-===//
2fe6060f1SDimitry Andric //
3fe6060f1SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4fe6060f1SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5fe6060f1SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6fe6060f1SDimitry Andric //
7fe6060f1SDimitry Andric //===----------------------------------------------------------------------===//
8fe6060f1SDimitry Andric 
9349cc55cSDimitry Andric #ifndef LLVM_TEXTAPI_TEXTAPIREADER_H
10349cc55cSDimitry Andric #define LLVM_TEXTAPI_TEXTAPIREADER_H
11fe6060f1SDimitry Andric 
12fe6060f1SDimitry Andric #include "llvm/Support/Error.h"
13fe6060f1SDimitry Andric 
14fe6060f1SDimitry Andric namespace llvm {
15fe6060f1SDimitry Andric 
16fe6060f1SDimitry Andric class MemoryBufferRef;
17fe6060f1SDimitry Andric 
18fe6060f1SDimitry Andric namespace MachO {
19fe6060f1SDimitry Andric 
20fe6060f1SDimitry Andric class InterfaceFile;
21*5f757f3fSDimitry Andric enum FileType : unsigned;
22fe6060f1SDimitry Andric 
23fe6060f1SDimitry Andric class TextAPIReader {
24fe6060f1SDimitry Andric public:
25*5f757f3fSDimitry Andric   ///  Determine whether input can be interpreted as TAPI text file.
26*5f757f3fSDimitry Andric   ///  This allows one to exit early when file is not recognized as TAPI file
27*5f757f3fSDimitry Andric   ///  as opposed to `get` which attempts to full parse and load of library
28*5f757f3fSDimitry Andric   ///  attributes.
29*5f757f3fSDimitry Andric   ///
30*5f757f3fSDimitry Andric   /// \param InputBuffer Buffer holding contents of TAPI text file.
31*5f757f3fSDimitry Andric   /// \return The file format version of TAPI text file.
32*5f757f3fSDimitry Andric   static Expected<FileType> canRead(MemoryBufferRef InputBuffer);
33*5f757f3fSDimitry Andric 
34*5f757f3fSDimitry Andric   /// Parse and get an InterfaceFile that represents the full
35*5f757f3fSDimitry Andric   /// library.
36*5f757f3fSDimitry Andric   ///
37*5f757f3fSDimitry Andric   /// \param InputBuffer Buffer holding contents of TAPI text file.
38fe6060f1SDimitry Andric   static Expected<std::unique_ptr<InterfaceFile>>
39fe6060f1SDimitry Andric   get(MemoryBufferRef InputBuffer);
40fe6060f1SDimitry Andric 
41fe6060f1SDimitry Andric   TextAPIReader() = delete;
42fe6060f1SDimitry Andric };
43fe6060f1SDimitry Andric 
44fe6060f1SDimitry Andric } // end namespace MachO.
45fe6060f1SDimitry Andric } // end namespace llvm.
46fe6060f1SDimitry Andric 
47349cc55cSDimitry Andric #endif // LLVM_TEXTAPI_TEXTAPIREADER_H
48