1212#ifndef FORTRAN_DECIMAL_DECIMAL_H_
1313#define FORTRAN_DECIMAL_DECIMAL_H_
1414
15+ #include " flang/Common/api-attrs.h"
1516#include < stddef.h>
1617
1718#ifdef __cplusplus
@@ -65,27 +66,27 @@ enum DecimalConversionFlags {
6566
6667#ifdef __cplusplus
6768template <int PREC>
68- ConversionToDecimalResult ConvertToDecimal (char *, size_t ,
69+ RT_API_ATTRS ConversionToDecimalResult ConvertToDecimal (char *, size_t ,
6970 DecimalConversionFlags, int digits, enum FortranRounding rounding,
7071 BinaryFloatingPointNumber<PREC> x);
7172
72- extern template ConversionToDecimalResult ConvertToDecimal<8 >(char *, size_t ,
73- enum DecimalConversionFlags, int , enum FortranRounding,
73+ extern template RT_API_ATTRS ConversionToDecimalResult ConvertToDecimal<8 >(
74+ char *, size_t , enum DecimalConversionFlags, int , enum FortranRounding,
7475 BinaryFloatingPointNumber<8 >);
75- extern template ConversionToDecimalResult ConvertToDecimal<11 >(char *, size_t ,
76- enum DecimalConversionFlags, int , enum FortranRounding,
76+ extern template RT_API_ATTRS ConversionToDecimalResult ConvertToDecimal<11 >(
77+ char *, size_t , enum DecimalConversionFlags, int , enum FortranRounding,
7778 BinaryFloatingPointNumber<11 >);
78- extern template ConversionToDecimalResult ConvertToDecimal<24 >(char *, size_t ,
79- enum DecimalConversionFlags, int , enum FortranRounding,
79+ extern template RT_API_ATTRS ConversionToDecimalResult ConvertToDecimal<24 >(
80+ char *, size_t , enum DecimalConversionFlags, int , enum FortranRounding,
8081 BinaryFloatingPointNumber<24 >);
81- extern template ConversionToDecimalResult ConvertToDecimal<53 >(char *, size_t ,
82- enum DecimalConversionFlags, int , enum FortranRounding,
82+ extern template RT_API_ATTRS ConversionToDecimalResult ConvertToDecimal<53 >(
83+ char *, size_t , enum DecimalConversionFlags, int , enum FortranRounding,
8384 BinaryFloatingPointNumber<53 >);
84- extern template ConversionToDecimalResult ConvertToDecimal<64 >(char *, size_t ,
85- enum DecimalConversionFlags, int , enum FortranRounding,
85+ extern template RT_API_ATTRS ConversionToDecimalResult ConvertToDecimal<64 >(
86+ char *, size_t , enum DecimalConversionFlags, int , enum FortranRounding,
8687 BinaryFloatingPointNumber<64 >);
87- extern template ConversionToDecimalResult ConvertToDecimal<113 >(char *, size_t ,
88- enum DecimalConversionFlags, int , enum FortranRounding,
88+ extern template RT_API_ATTRS ConversionToDecimalResult ConvertToDecimal<113 >(
89+ char *, size_t , enum DecimalConversionFlags, int , enum FortranRounding,
8990 BinaryFloatingPointNumber<113 >);
9091
9192template <int PREC> struct ConversionToBinaryResult {
@@ -94,20 +95,20 @@ template <int PREC> struct ConversionToBinaryResult {
9495};
9596
9697template <int PREC>
97- ConversionToBinaryResult<PREC> ConvertToBinary (const char *&,
98+ RT_API_ATTRS ConversionToBinaryResult<PREC> ConvertToBinary (const char *&,
9899 enum FortranRounding = RoundNearest, const char *end = nullptr );
99100
100- extern template ConversionToBinaryResult<8 > ConvertToBinary<8 >(
101+ extern template RT_API_ATTRS ConversionToBinaryResult<8 > ConvertToBinary<8 >(
101102 const char *&, enum FortranRounding, const char *end);
102- extern template ConversionToBinaryResult<11 > ConvertToBinary<11 >(
103+ extern template RT_API_ATTRS ConversionToBinaryResult<11 > ConvertToBinary<11 >(
103104 const char *&, enum FortranRounding, const char *end);
104- extern template ConversionToBinaryResult<24 > ConvertToBinary<24 >(
105+ extern template RT_API_ATTRS ConversionToBinaryResult<24 > ConvertToBinary<24 >(
105106 const char *&, enum FortranRounding, const char *end);
106- extern template ConversionToBinaryResult<53 > ConvertToBinary<53 >(
107+ extern template RT_API_ATTRS ConversionToBinaryResult<53 > ConvertToBinary<53 >(
107108 const char *&, enum FortranRounding, const char *end);
108- extern template ConversionToBinaryResult<64 > ConvertToBinary<64 >(
109+ extern template RT_API_ATTRS ConversionToBinaryResult<64 > ConvertToBinary<64 >(
109110 const char *&, enum FortranRounding, const char *end);
110- extern template ConversionToBinaryResult<113 > ConvertToBinary<113 >(
111+ extern template RT_API_ATTRS ConversionToBinaryResult<113 > ConvertToBinary<113 >(
111112 const char *&, enum FortranRounding, const char *end);
112113} // namespace Fortran::decimal
113114extern " C" {
@@ -116,21 +117,21 @@ extern "C" {
116117#define NS (x ) x
117118#endif /* C++ */
118119
119- struct NS (ConversionToDecimalResult)
120+ RT_API_ATTRS struct NS (ConversionToDecimalResult)
120121 ConvertFloatToDecimal (char *, size_t , enum NS (DecimalConversionFlags),
121122 int digits, enum NS(FortranRounding), float);
122- struct NS (ConversionToDecimalResult)
123+ RT_API_ATTRS struct NS (ConversionToDecimalResult)
123124 ConvertDoubleToDecimal(char *, size_t , enum NS (DecimalConversionFlags),
124125 int digits, enum NS(FortranRounding), double);
125- struct NS (ConversionToDecimalResult)
126+ RT_API_ATTRS struct NS (ConversionToDecimalResult)
126127 ConvertLongDoubleToDecimal(char *, size_t , enum NS (DecimalConversionFlags),
127128 int digits, enum NS(FortranRounding), long double);
128129
129- enum NS (ConversionResultFlags)
130+ RT_API_ATTRS enum NS (ConversionResultFlags)
130131 ConvertDecimalToFloat(const char **, float *, enum NS (FortranRounding));
131- enum NS (ConversionResultFlags)
132+ RT_API_ATTRS enum NS (ConversionResultFlags)
132133 ConvertDecimalToDouble(const char **, double *, enum NS (FortranRounding));
133- enum NS (ConversionResultFlags) ConvertDecimalToLongDouble(
134+ RT_API_ATTRS enum NS (ConversionResultFlags) ConvertDecimalToLongDouble(
134135 const char **, long double *, enum NS (FortranRounding));
135136#undef NS
136137#ifdef __cplusplus
0 commit comments