Mercurial > hg > CbC > CbC_llvm
diff flang/runtime/connection.cpp @ 173:0572611fdcc8 llvm10 llvm12
reorgnization done
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 11:55:54 +0900 |
parents | |
children | 2e18cbf3894f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flang/runtime/connection.cpp Mon May 25 11:55:54 2020 +0900 @@ -0,0 +1,32 @@ +//===-- runtime/connection.cpp ----------------------------------*- 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 +// +//===----------------------------------------------------------------------===// + +#include "connection.h" +#include "environment.h" +#include <algorithm> + +namespace Fortran::runtime::io { + +std::size_t ConnectionState::RemainingSpaceInRecord() const { + auto recl{recordLength.value_or( + executionEnvironment.listDirectedOutputLineLengthLimit)}; + return positionInRecord >= recl ? 0 : recl - positionInRecord; +} + +bool ConnectionState::IsAtEOF() const { + return endfileRecordNumber && currentRecordNumber >= *endfileRecordNumber; +} + +void ConnectionState::HandleAbsolutePosition(std::int64_t n) { + positionInRecord = std::max(n, std::int64_t{0}) + leftTabLimit.value_or(0); +} + +void ConnectionState::HandleRelativePosition(std::int64_t n) { + positionInRecord = std::max(leftTabLimit.value_or(0), positionInRecord + n); +} +} // namespace Fortran::runtime::io