Lines Matching defs:io

19 namespace Fortran::runtime::io {
33 IoStatementState &io, const DataEdit &edit) {
36 if (auto ch{io.GetCurrentChar(byteCount)}) {
40 const auto &connection{io.GetConnectionState()};
41 io.GetIoErrorHandler().SignalError(IostatBadListDirectedInputSeparator,
63 IoStatementState &io, const DataEdit &edit, void *n, std::size_t bytes) {
65 Fortran::common::optional<int> remaining{io.CueUpInput(edit)};
66 auto start{io.GetConnectionState().positionInRecord};
67 Fortran::common::optional<char32_t> next{io.NextInField(remaining, edit)};
70 start = io.GetConnectionState().positionInRecord;
71 next = io.NextInField(remaining, edit);
78 for (; next; next = io.NextInField(remaining, edit)) {
95 io.GetIoErrorHandler().SignalError(
115 io.GetIoErrorHandler().SignalError(IostatBOZInputOverflow,
120 io.HandleAbsolutePosition(start);
133 char32_t ch{io.NextInField(remaining, edit).value_or(' ')};
162 return CheckCompleteListDirectedField(io, edit);
170 static RT_API_ATTRS char ScanNumericPrefix(IoStatementState &io,
173 remaining = io.CueUpInput(edit);
174 next = io.NextInField(remaining, edit);
180 io.SkipSpaces(remaining);
182 next = io.NextInField(remaining, edit);
188 RT_API_ATTRS bool EditIntegerInput(IoStatementState &io, const DataEdit &edit,
190 RUNTIME_CHECK(io.GetIoErrorHandler(), kind >= 1 && !(kind & (kind - 1)));
193 if (IsNamelistNameOrSlash(io)) {
201 return EditBOZInput<1>(io, edit, n, kind);
203 return EditBOZInput<3>(io, edit, n, kind);
205 return EditBOZInput<4>(io, edit, n, kind);
207 return EditCharacterInput(io, edit, reinterpret_cast<char *>(n), kind);
209 io.GetIoErrorHandler().SignalError(IostatErrorInFormat,
216 char sign{ScanNumericPrefix(io, edit, next, remaining)};
218 io.GetIoErrorHandler().SignalError("Negative sign in UNSIGNED input field");
226 for (; next; next = io.NextInField(remaining, edit)) {
246 while ((next = io.NextInField(remaining, edit))) {
255 io.GetIoErrorHandler().SignalError(
269 io.GetIoErrorHandler().SignalError(
281 io.GetIoErrorHandler().SignalError(IostatIntegerInputOverflow,
288 if (any || !io.GetIoErrorHandler().InError()) {
318 char *buffer, int bufferSize, IoStatementState &io, const DataEdit &edit) {
331 char sign{ScanNumericPrefix(io, edit, next, remaining)};
339 if (!edit.IsListDirected() && !io.GetConnectionState().IsAtEOF()) {
356 next = io.NextInField(remaining, edit)) {
367 next = io.NextInField(remaining, edit);
384 next = io.NextInField(remaining, edit);
387 next = io.NextInField(remaining, edit);
397 for (; next; next = io.NextInField(remaining, edit)) {
431 auto startExponent{io.GetConnectionState().positionInRecord};
436 next = io.NextInField(remaining, edit);
445 io.SkipSpaces(remaining);
446 next = io.NextInField(remaining, edit);
454 next = io.NextInField(remaining, edit);
456 for (; next; next = io.NextInField(remaining, edit)) {
483 io.HandleAbsolutePosition(startExponent);
506 io.SkipSpaces(remaining);
507 next = io.NextInField(remaining, edit);
511 next = io.GetCurrentChar(byteCount);
513 io.HandleRelativePosition(byteCount);
518 next = io.NextInField(remaining, edit);
574 IoStatementState &io, const DataEdit &edit, void *n) {
581 const ConnectionState &connection{io.GetConnectionState()};
586 std::size_t got{io.GetNextInputBytes(str)};
636 io.HandleRelativePosition(p - str);
763 IoStatementState &io, const DataEdit &edit, void *n) {
765 if (TryFastPathRealDecimalInput<binaryPrecision>(io, edit, n)) {
766 return CheckCompleteListDirectedField(io, edit);
773 auto scanned{ScanRealInput(buffer, maxDigits + 2, io, edit)};
776 io.GetIoErrorHandler().Crash("EditCommonRealInput: buffer was too small");
780 const auto &connection{io.GetConnectionState()};
781 io.GetIoErrorHandler().SignalError(IostatBadRealInput,
838 const auto &connection{io.GetConnectionState()};
839 io.GetIoErrorHandler().SignalError(IostatBadRealInput,
850 io.GetIoErrorHandler().SignalError(IostatRealInputOverflow);
855 return CheckCompleteListDirectedField(io, edit);
860 IoStatementState &io, const DataEdit &edit, void *n) {
863 if (IsNamelistNameOrSlash(io)) {
866 return EditCommonRealInput<KIND>(io, edit, n);
873 return EditCommonRealInput<KIND>(io, edit, n);
875 return EditBOZInput<1>(io, edit, n,
878 return EditBOZInput<3>(io, edit, n,
881 return EditBOZInput<4>(io, edit, n,
884 return EditCharacterInput(io, edit, reinterpret_cast<char *>(n), KIND);
886 io.GetIoErrorHandler().SignalError(IostatErrorInFormat,
895 IoStatementState &io, const DataEdit &edit, bool &x) {
898 if (IsNamelistNameOrSlash(io)) {
906 io.GetIoErrorHandler().SignalError(IostatErrorInFormat,
911 Fortran::common::optional<int> remaining{io.CueUpInput(edit)};
912 Fortran::common::optional<char32_t> next{io.NextInField(remaining, edit)};
914 next = io.NextInField(remaining, edit);
917 io.GetIoErrorHandler().SignalError("Empty LOGICAL input field");
930 io.GetIoErrorHandler().SignalError(
935 io.HandleRelativePosition(*remaining);
937 while (io.NextInField(remaining, edit)) { // discard rest of field
940 return CheckCompleteListDirectedField(io, edit);
946 IoStatementState &io, CHAR *x, std::size_t length, char32_t delimiter) {
950 auto ch{io.GetCurrentChar(byteCount)};
952 if (io.AdvanceRecord()) {
959 io.HandleRelativePosition(byteCount);
961 auto next{io.GetCurrentChar(byteCount)};
964 io.HandleRelativePosition(byteCount);
980 IoStatementState &io, CHAR *x, std::size_t length, const DataEdit &edit) {
982 auto ch{io.GetCurrentChar(byteCount)};
984 io.HandleRelativePosition(byteCount);
985 return EditDelimitedCharacterInput(io, x, length, *ch);
987 if (IsNamelistNameOrSlash(io) || io.GetConnectionState().IsAtEOF()) {
992 while (auto ch{io.GetCurrentChar(byteCount)}) {
1023 io.HandleRelativePosition(byteCount);
1024 io.GotChar(byteCount);
1031 RT_API_ATTRS bool EditCharacterInput(IoStatementState &io, const DataEdit &edit,
1035 return EditListDirectedCharacterInput(io, x, lengthChars, edit);
1040 return EditBOZInput<1>(io, edit, x, lengthChars * sizeof *x);
1042 return EditBOZInput<3>(io, edit, x, lengthChars * sizeof *x);
1044 return EditBOZInput<4>(io, edit, x, lengthChars * sizeof *x);
1046 io.GetIoErrorHandler().SignalError(IostatErrorInFormat,
1051 const ConnectionState &connection{io.GetConnectionState()};
1070 readyBytes = io.GetNextInputBytes(input);
1073 if (io.CheckForEndOfRecord(readyBytes)) {
1077 return !io.GetIoErrorHandler().InError();
1082 return !io.GetIoErrorHandler().InError();
1147 io.GotChar(chunkBytes);
1149 io.HandleRelativePosition(chunkBytes);
1154 return CheckCompleteListDirectedField(io, edit);
1179 } // namespace Fortran::runtime::io