| //===-- Lower/IO.h -- lower IO statements -----------------------*- C++ -*-===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // Coding style: https://mlir.llvm.org/getting_started/DeveloperGuide/ |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef FORTRAN_LOWER_IO_H |
| #define FORTRAN_LOWER_IO_H |
| |
| namespace mlir { |
| class Value; |
| } // namespace mlir |
| |
| namespace Fortran { |
| namespace parser { |
| struct BackspaceStmt; |
| struct CloseStmt; |
| struct EndfileStmt; |
| struct FlushStmt; |
| struct InquireStmt; |
| struct OpenStmt; |
| struct ReadStmt; |
| struct RewindStmt; |
| struct PrintStmt; |
| struct WaitStmt; |
| struct WriteStmt; |
| } // namespace parser |
| |
| namespace lower { |
| |
| class AbstractConverter; |
| |
| /// Generate IO call(s) for BACKSPACE; return the IOSTAT code |
| mlir::Value genBackspaceStatement(AbstractConverter &, |
| const parser::BackspaceStmt &); |
| |
| /// Generate IO call(s) for CLOSE; return the IOSTAT code |
| mlir::Value genCloseStatement(AbstractConverter &, const parser::CloseStmt &); |
| |
| /// Generate IO call(s) for ENDFILE; return the IOSTAT code |
| mlir::Value genEndfileStatement(AbstractConverter &, |
| const parser::EndfileStmt &); |
| |
| /// Generate IO call(s) for FLUSH; return the IOSTAT code |
| mlir::Value genFlushStatement(AbstractConverter &, const parser::FlushStmt &); |
| |
| /// Generate IO call(s) for INQUIRE; return the IOSTAT code |
| mlir::Value genInquireStatement(AbstractConverter &, |
| const parser::InquireStmt &); |
| |
| /// Generate IO call(s) for READ; return the IOSTAT code |
| mlir::Value genReadStatement(AbstractConverter &converter, |
| const parser::ReadStmt &stmt); |
| |
| /// Generate IO call(s) for OPEN; return the IOSTAT code |
| mlir::Value genOpenStatement(AbstractConverter &, const parser::OpenStmt &); |
| |
| /// Generate IO call(s) for PRINT |
| void genPrintStatement(AbstractConverter &converter, |
| const parser::PrintStmt &stmt); |
| |
| /// Generate IO call(s) for REWIND; return the IOSTAT code |
| mlir::Value genRewindStatement(AbstractConverter &, const parser::RewindStmt &); |
| |
| /// Generate IO call(s) for WAIT; return the IOSTAT code |
| mlir::Value genWaitStatement(AbstractConverter &, const parser::WaitStmt &); |
| |
| /// Generate IO call(s) for WRITE; return the IOSTAT code |
| mlir::Value genWriteStatement(AbstractConverter &converter, |
| const parser::WriteStmt &stmt); |
| |
| } // namespace lower |
| } // namespace Fortran |
| |
| #endif // FORTRAN_LOWER_IO_H |