[flang-commits] [flang] [flang][runtime] Implement EX editing for input & output (PR #67208)
via flang-commits
flang-commits at lists.llvm.org
Fri Sep 22 17:51:07 PDT 2023
================
@@ -229,17 +229,22 @@ bool EditIntegerInput(
// Parses a REAL input number from the input source as a normalized
// fraction into a supplied buffer -- there's an optional '-', a
-// decimal point, and at least one digit. The adjusted exponent value
-// is returned in a reference argument. The returned value is the number
-// of characters that (should) have been written to the buffer -- this can
-// be larger than the buffer size and can indicate overflow. Replaces
-// blanks with zeroes if appropriate.
-static int ScanRealInput(char *buffer, int bufferSize, IoStatementState &io,
- const DataEdit &edit, int &exponent) {
+// (hexa)decimal point, and at least one digit.
+// Replaces blanks with zeroes where appropriate.
+struct ScannedRealInput {
+ // Number of characters that (should) have been written to the
+ // buffer -- this can be larger than the buffer size, which
+ // indicates buffer overflow. Zero indicates an error.
+ int got{0};
+ int exponent{0}; // adjusted as necessary; binary if isHexadecimal
+ bool isHexadecimal{false}; // 0X...
+};
+static ScannedRealInput ScanRealInput(
+ char *buffer, int bufferSize, IoStatementState &io, const DataEdit &edit) {
std::optional<int> remaining;
std::optional<char32_t> next;
int got{0};
- std::optional<int> decimalPoint;
+ std::optional<int> decimalPoint; // misnamed for hexadecimal, sorry
----------------
vdonaldson wrote:
+1
https://github.com/llvm/llvm-project/pull/67208
More information about the flang-commits
mailing list