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 14 namespace llvm { 15 16 class MemoryBufferRef; 17 18 namespace MachO { 19 20 class InterfaceFile; 21 enum FileType : unsigned; 22 23 class TextAPIReader { 24 public: 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