1 //===-- runtime/format.cpp --------------------------------------*- 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 #include "format-implementation.h"
10 
11 namespace Fortran::runtime::io {
12 
GetNextDataEdit(int)13 DataEdit DefaultFormatControlCallbacks::GetNextDataEdit(int) {
14   Crash("DefaultFormatControlCallbacks::GetNextDataEdit() called for "
15         "non-formatted I/O statement");
16   return {};
17 }
Emit(const char *,std::size_t,std::size_t)18 bool DefaultFormatControlCallbacks::Emit(
19     const char *, std::size_t, std::size_t) {
20   Crash("DefaultFormatControlCallbacks::Emit(char) called for non-output I/O "
21         "statement");
22   return {};
23 }
Emit(const char16_t *,std::size_t)24 bool DefaultFormatControlCallbacks::Emit(const char16_t *, std::size_t) {
25   Crash("DefaultFormatControlCallbacks::Emit(char16_t) called for non-output "
26         "I/O statement");
27   return {};
28 }
Emit(const char32_t *,std::size_t)29 bool DefaultFormatControlCallbacks::Emit(const char32_t *, std::size_t) {
30   Crash("DefaultFormatControlCallbacks::Emit(char32_t) called for non-output "
31         "I/O statement");
32   return {};
33 }
GetCurrentChar()34 std::optional<char32_t> DefaultFormatControlCallbacks::GetCurrentChar() {
35   Crash("DefaultFormatControlCallbacks::GetCurrentChar() called for non-input "
36         "I/O "
37         "statement");
38   return {};
39 }
AdvanceRecord(int)40 bool DefaultFormatControlCallbacks::AdvanceRecord(int) {
41   Crash("DefaultFormatControlCallbacks::AdvanceRecord() called unexpectedly");
42   return {};
43 }
BackspaceRecord()44 void DefaultFormatControlCallbacks::BackspaceRecord() {
45   Crash("DefaultFormatControlCallbacks::BackspaceRecord() called unexpectedly");
46 }
HandleAbsolutePosition(std::int64_t)47 void DefaultFormatControlCallbacks::HandleAbsolutePosition(std::int64_t) {
48   Crash("DefaultFormatControlCallbacks::HandleAbsolutePosition() called for "
49         "non-formatted I/O statement");
50 }
HandleRelativePosition(std::int64_t)51 void DefaultFormatControlCallbacks::HandleRelativePosition(std::int64_t) {
52   Crash("DefaultFormatControlCallbacks::HandleRelativePosition() called for "
53         "non-formatted I/O statement");
54 }
55 
56 template class FormatControl<
57     InternalFormattedIoStatementState<Direction::Output>>;
58 template class FormatControl<
59     InternalFormattedIoStatementState<Direction::Input>>;
60 template class FormatControl<
61     ExternalFormattedIoStatementState<Direction::Output>>;
62 template class FormatControl<
63     ExternalFormattedIoStatementState<Direction::Input>>;
64 } // namespace Fortran::runtime::io
65