Lines Matching refs:io
17 namespace Fortran::runtime::io { namespace
21 IoStatementState &io, const DataEdit &edit, void *n, std::size_t bytes) { in EditBOZInput() argument
23 std::optional<char32_t> next{io.PrepareInput(edit, remaining)}; in EditBOZInput()
26 next = io.NextInField(remaining, edit); in EditBOZInput()
32 for (; next; next = io.NextInField(remaining, edit)) { in EditBOZInput()
44 io.GetIoErrorHandler().SignalError( in EditBOZInput()
52 io.GetIoErrorHandler().SignalError(IostatBOZInputOverflow, in EditBOZInput()
57 io.HandleRelativePosition(-chars); in EditBOZInput()
69 char32_t ch{*io.NextInField(remaining, edit)}; in EditBOZInput()
100 static bool ScanNumericPrefix(IoStatementState &io, const DataEdit &edit, in ScanNumericPrefix() argument
102 next = io.PrepareInput(edit, remaining); in ScanNumericPrefix()
107 io.SkipSpaces(remaining); in ScanNumericPrefix()
108 next = io.NextInField(remaining, edit); in ScanNumericPrefix()
115 IoStatementState &io, const DataEdit &edit, void *n, int kind) { in EditIntegerInput() argument
116 RUNTIME_CHECK(io.GetIoErrorHandler(), kind >= 1 && !(kind & (kind - 1))); in EditIntegerInput()
119 if (IsNamelistName(io)) { in EditIntegerInput()
127 return EditBOZInput<1>(io, edit, n, kind); in EditIntegerInput()
129 return EditBOZInput<3>(io, edit, n, kind); in EditIntegerInput()
131 return EditBOZInput<4>(io, edit, n, kind); in EditIntegerInput()
133 return EditCharacterInput(io, edit, reinterpret_cast<char *>(n), kind); in EditIntegerInput()
135 io.GetIoErrorHandler().SignalError(IostatErrorInFormat, in EditIntegerInput()
142 bool negate{ScanNumericPrefix(io, edit, next, remaining)}; in EditIntegerInput()
146 for (; next; next = io.NextInField(remaining, edit)) { in EditIntegerInput()
159 io.GetIoErrorHandler().SignalError( in EditIntegerInput()
176 io.GetIoErrorHandler().SignalError(IostatIntegerInputOverflow, in EditIntegerInput()
183 if (any || !io.GetConnectionState().IsAtEOF()) { in EditIntegerInput()
196 static int ScanRealInput(char *buffer, int bufferSize, IoStatementState &io, in ScanRealInput() argument
208 if (ScanNumericPrefix(io, edit, next, remaining)) { in ScanRealInput()
214 if (!io.GetConnectionState().IsAtEOF()) { in ScanRealInput()
226 next = io.NextInField(remaining, edit)) { in ScanRealInput()
237 next = io.NextInField(remaining, edit); in ScanRealInput()
256 for (; next; next = io.NextInField(remaining, edit)) { in ScanRealInput()
287 io.SkipSpaces(remaining); in ScanRealInput()
288 next = io.NextInField(remaining, edit); in ScanRealInput()
298 next = io.NextInField(remaining, edit); in ScanRealInput()
300 for (exponent = 0; next; next = io.NextInField(remaining, edit)) { in ScanRealInput()
335 next = io.NextInField(remaining, edit); in ScanRealInput()
339 next = io.GetCurrentChar(byteCount); in ScanRealInput()
341 io.HandleRelativePosition(byteCount); in ScanRealInput()
346 next = io.NextInField(remaining, edit); in ScanRealInput()
380 IoStatementState &io, const DataEdit &edit, void *n) { in TryFastPathRealInput() argument
388 std::size_t got{io.GetNextInputBytes(str)}; in TryFastPathRealInput()
390 !io.GetConnectionState().recordLength.has_value()) { in TryFastPathRealInput()
432 io.HandleRelativePosition(p - str); in TryFastPathRealInput()
441 bool EditCommonRealInput(IoStatementState &io, const DataEdit &edit, void *n) { in EditCommonRealInput() argument
443 if (TryFastPathRealInput<binaryPrecision>(io, edit, n)) { in EditCommonRealInput()
452 int got{ScanRealInput(buffer, maxDigits + 2, io, edit, exponent)}; in EditCommonRealInput()
454 io.GetIoErrorHandler().Crash("EditCommonRealInput: buffer was too small"); in EditCommonRealInput()
458 io.GetIoErrorHandler().SignalError(IostatBadRealInput); in EditCommonRealInput()
505 io.GetIoErrorHandler().SignalError(IostatBadRealInput); in EditCommonRealInput()
513 io.GetIoErrorHandler().SignalError(IostatRealInputOverflow); in EditCommonRealInput()
522 bool EditRealInput(IoStatementState &io, const DataEdit &edit, void *n) { in EditRealInput() argument
525 if (IsNamelistName(io)) { in EditRealInput()
528 return EditCommonRealInput<KIND>(io, edit, n); in EditRealInput()
535 return EditCommonRealInput<KIND>(io, edit, n); in EditRealInput()
537 return EditBOZInput<1>(io, edit, n, in EditRealInput()
540 return EditBOZInput<3>(io, edit, n, in EditRealInput()
543 return EditBOZInput<4>(io, edit, n, in EditRealInput()
546 return EditCharacterInput(io, edit, reinterpret_cast<char *>(n), KIND); in EditRealInput()
548 io.GetIoErrorHandler().SignalError(IostatErrorInFormat, in EditRealInput()
556 bool EditLogicalInput(IoStatementState &io, const DataEdit &edit, bool &x) { in EditLogicalInput() argument
559 if (IsNamelistName(io)) { in EditLogicalInput()
567 io.GetIoErrorHandler().SignalError(IostatErrorInFormat, in EditLogicalInput()
573 std::optional<char32_t> next{io.PrepareInput(edit, remaining)}; in EditLogicalInput()
575 next = io.NextInField(remaining, edit); in EditLogicalInput()
578 io.GetIoErrorHandler().SignalError("Empty LOGICAL input field"); in EditLogicalInput()
591 io.GetIoErrorHandler().SignalError( in EditLogicalInput()
596 io.HandleRelativePosition(*remaining); in EditLogicalInput()
598 while (io.NextInField(remaining, edit)) { // discard rest of field in EditLogicalInput()
607 IoStatementState &io, CHAR *x, std::size_t length, char32_t delimiter) { in EditDelimitedCharacterInput() argument
611 auto ch{io.GetCurrentChar(byteCount)}; in EditDelimitedCharacterInput()
613 if (io.AdvanceRecord()) { in EditDelimitedCharacterInput()
620 io.HandleRelativePosition(byteCount); in EditDelimitedCharacterInput()
622 auto next{io.GetCurrentChar(byteCount)}; in EditDelimitedCharacterInput()
625 io.HandleRelativePosition(byteCount); in EditDelimitedCharacterInput()
641 IoStatementState &io, CHAR *x, std::size_t length, const DataEdit &edit) { in EditListDirectedCharacterInput() argument
643 auto ch{io.GetCurrentChar(byteCount)}; in EditListDirectedCharacterInput()
645 io.HandleRelativePosition(byteCount); in EditListDirectedCharacterInput()
646 return EditDelimitedCharacterInput(io, x, length, *ch); in EditListDirectedCharacterInput()
648 if (IsNamelistName(io) || io.GetConnectionState().IsAtEOF()) { in EditListDirectedCharacterInput()
656 while (std::optional<char32_t> next{io.NextInField(remaining, edit)}) { in EditListDirectedCharacterInput()
686 IoStatementState &io, const DataEdit &edit, CHAR *x, std::size_t length) { in EditCharacterInput() argument
689 return EditListDirectedCharacterInput(io, x, length, edit); in EditCharacterInput()
694 return EditBOZInput<1>(io, edit, x, length * sizeof *x); in EditCharacterInput()
696 return EditBOZInput<3>(io, edit, x, length * sizeof *x); in EditCharacterInput()
698 return EditBOZInput<4>(io, edit, x, length * sizeof *x); in EditCharacterInput()
700 io.GetIoErrorHandler().SignalError(IostatErrorInFormat, in EditCharacterInput()
705 const ConnectionState &connection{io.GetConnectionState()}; in EditCharacterInput()
721 ready = io.GetNextInputBytes(input); in EditCharacterInput()
723 if (io.CheckForEndOfRecord()) { in EditCharacterInput()
726 return !io.GetIoErrorHandler().InError(); in EditCharacterInput()
767 io.GotChar(chunk); in EditCharacterInput()
769 io.HandleRelativePosition(chunk); in EditCharacterInput()