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