9#ifndef FORTRAN_RUNTIME_EDIT_OUTPUT_H_
10#define FORTRAN_RUNTIME_EDIT_OUTPUT_H_
23#include "flang/Common/uint128.h"
24#include "flang/Decimal/decimal.h"
26namespace Fortran::runtime::io {
33RT_API_ATTRS
bool EditIntegerOutput(IoStatementState &,
const DataEdit &,
34 common::HostSignedIntType<8 * KIND>,
bool isSigned);
42 RT_API_ATTRS
const char *FormatExponent(
43 int,
const DataEdit &edit,
int &length);
44 RT_API_ATTRS
bool EmitPrefix(
45 const DataEdit &, std::size_t length, std::size_t width);
46 RT_API_ATTRS
bool EmitSuffix(
const DataEdit &);
49 int trailingBlanks_{0};
56 static constexpr int binaryPrecision{common::PrecisionOfRealKind(KIND)};
63 RT_API_ATTRS
bool Edit(
const DataEdit &);
69 RT_API_ATTRS
bool EditEorDOutput(
const DataEdit &);
70 RT_API_ATTRS
bool EditFOutput(
const DataEdit &);
72 RT_API_ATTRS
bool EditEXOutput(
const DataEdit &);
73 RT_API_ATTRS
bool EditListDirectedOutput(
const DataEdit &);
75 RT_API_ATTRS
bool IsZero()
const {
return x_.IsZero(); }
77 RT_API_ATTRS decimal::ConversionToDecimalResult ConvertToDecimal(
78 int significantDigits,
enum decimal::FortranRounding,
int flags = 0);
80 struct ConvertToHexadecimalResult {
85 RT_API_ATTRS ConvertToHexadecimalResult ConvertToHexadecimal(
86 int significantDigits,
enum decimal::FortranRounding,
int flags = 0);
89 char buffer_[BinaryFloatingPoint::maxDecimalConversionDigits +
90 EXTRA_DECIMAL_CONVERSION_SPACE];
93RT_API_ATTRS
bool ListDirectedLogicalOutput(
97template <
typename CHAR>
101extern template RT_API_ATTRS
bool ListDirectedCharacterOutput(
103 const char *, std::size_t chars);
104extern template RT_API_ATTRS
bool ListDirectedCharacterOutput(
106 const char16_t *, std::size_t chars);
107extern template RT_API_ATTRS
bool ListDirectedCharacterOutput(
109 const char32_t *, std::size_t chars);
111template <
typename CHAR>
112RT_API_ATTRS
bool EditCharacterOutput(
114extern template RT_API_ATTRS
bool EditCharacterOutput(
116extern template RT_API_ATTRS
bool EditCharacterOutput(
118extern template RT_API_ATTRS
bool EditCharacterOutput(
121extern template RT_API_ATTRS
bool EditIntegerOutput<1>(
123extern template RT_API_ATTRS
bool EditIntegerOutput<2>(
125extern template RT_API_ATTRS
bool EditIntegerOutput<4>(
127extern template RT_API_ATTRS
bool EditIntegerOutput<8>(
129extern template RT_API_ATTRS
bool EditIntegerOutput<16>(
Definition: io-stmt.h:311
Definition: edit-output.h:37
Definition: edit-output.h:53