Lines Matching defs:handler
48 std::size_t elementBytes, IoErrorHandler &handler) {
71 handler.SignalError(IostatRecordWriteOverrun,
87 handler.SignalError(IostatWriteAfterEndfile);
90 CheckDirectAccess(handler);
91 WriteFrame(frameOffsetInFile_, recordOffsetInFrame_ + furthestAfter, handler);
108 std::size_t elementBytes, IoErrorHandler &handler) {
109 RUNTIME_CHECK(handler, direction_ == Direction::Input);
113 handler.SignalError(IostatRecordReadOverrun,
120 auto got{ReadFrame(frameOffsetInFile_, need, handler)};
130 HitEndOnRead(handler);
136 const char *&p, IoErrorHandler &handler) {
137 RUNTIME_CHECK(handler, direction_ == Direction::Input);
147 p = FrameNextInput(handler, length);
170 IoErrorHandler &handler, std::size_t bytes) {
171 RUNTIME_CHECK(handler, isUnformatted.has_value() && !*isUnformatted);
176 auto got{ReadFrame(frameOffsetInFile_, need, handler)};
181 HitEndOnRead(handler);
203 bool ExternalFileUnit::BeginReadingRecord(IoErrorHandler &handler) {
204 RUNTIME_CHECK(handler, direction_ == Direction::Input);
216 CheckDirectAccess(handler);
218 auto got{ReadFrame(frameOffsetInFile_, need, handler)};
223 HitEndOnRead(handler);
229 DoEndfile<false, Direction::Input>(handler);
232 RUNTIME_CHECK(handler, isUnformatted.has_value());
235 BeginSequentialVariableUnformattedInputRecord(handler);
238 BeginVariableFormattedInputRecord(handler);
242 RUNTIME_CHECK(handler,
243 recordLength.has_value() || !IsRecordFile() || handler.InError());
244 return !handler.InError();
247 void ExternalFileUnit::FinishReadingRecord(IoErrorHandler &handler) {
248 RUNTIME_CHECK(handler, direction_ == Direction::Input && beganReadingRecord_);
250 if (handler.GetIoStat() == IostatEnd ||
260 RUNTIME_CHECK(handler, isUnformatted.has_value());
292 bool ExternalFileUnit::AdvanceRecord(IoErrorHandler &handler) {
294 FinishReadingRecord(handler);
295 return BeginReadingRecord(handler);
298 RUNTIME_CHECK(handler, isUnformatted.has_value());
305 frameOffsetInFile_, recordOffsetInFrame_ + *openRecl, handler);
323 sizeof length, handler);
327 sizeof length, handler);
331 } else if (handler.GetIoStat() != IostatOk &&
346 ok = ok && Emit(lineEnding, lineEndingBytes, 1, handler);
364 void ExternalFileUnit::BackspaceRecord(IoErrorHandler &handler) {
366 handler.SignalError(IostatBackspaceNonSequential,
377 DoImpliedEndfile(handler);
381 BackspaceFixedRecord(handler);
383 RUNTIME_CHECK(handler, isUnformatted.has_value());
385 BackspaceVariableUnformattedRecord(handler);
387 BackspaceVariableFormattedRecord(handler);
397 void ExternalFileUnit::FlushOutput(IoErrorHandler &handler) {
410 Flush(handler);
413 void ExternalFileUnit::FlushIfTerminal(IoErrorHandler &handler) {
415 FlushOutput(handler);
419 void ExternalFileUnit::Endfile(IoErrorHandler &handler) {
421 handler.SignalError(IostatEndfileDirect,
424 handler.SignalError(IostatEndfileUnwritable,
429 DoEndfile(handler);
432 RUNTIME_CHECK(handler, endfileRecordNumber.has_value());
438 void ExternalFileUnit::Rewind(IoErrorHandler &handler) {
440 handler.SignalError(IostatRewindNonSequential,
443 DoImpliedEndfile(handler);
444 SetPosition(0, handler);
451 void ExternalFileUnit::SetPosition(std::int64_t pos, IoErrorHandler &handler) {
461 std::int64_t oneBasedPos, IoErrorHandler &handler) {
463 handler.SignalError("POS= may not appear unless ACCESS='STREAM'");
467 handler.SignalError(
475 DoImpliedEndfile(handler);
477 SetPosition(oneBasedPos - 1, handler);
486 std::int64_t oneBasedRec, IoErrorHandler &handler) {
488 handler.SignalError("REC= may not appear unless ACCESS='DIRECT'");
492 handler.SignalError("RECL= was not specified");
496 handler.SignalError(
501 SetPosition((oneBasedRec - 1) * *openRecl, handler);
512 IoErrorHandler &handler) {
513 RUNTIME_CHECK(handler, access == Access::Sequential);
516 std::size_t got{ReadFrame(frameOffsetInFile_, need, handler)};
521 HitEndOnRead(handler);
530 got = ReadFrame(frameOffsetInFile_, need, handler);
545 handler.SignalError(error, static_cast<std::intmax_t>(currentRecordNumber),
554 IoErrorHandler &handler) {
557 defaultOutput->FlushOutput(handler);
560 errorOutput->FlushOutput(handler);
567 ReadFrame(frameOffsetInFile_, recordOffsetInFrame_ + need, handler) -
575 HitEndOnRead(handler);
582 void ExternalFileUnit::BackspaceFixedRecord(IoErrorHandler &handler) {
583 RUNTIME_CHECK(handler, openRecl.has_value());
585 handler.SignalError(IostatBackspaceAtFirstRecord);
592 IoErrorHandler &handler) {
598 handler.SignalError(IostatBackspaceAtFirstRecord);
605 ReadFrame(frameOffsetInFile_ - headerBytes, headerBytes, handler)};
607 handler.SignalError(IostatShortRead);
612 handler.SignalError(IostatBadUnformattedRecord);
618 got = ReadFrame(frameOffsetInFile_, need, handler);
620 handler.SignalError(IostatShortRead);
625 handler.SignalError(IostatBadUnformattedRecord);
643 IoErrorHandler &handler) {
648 handler.SignalError(IostatBackspaceAtFirstRecord);
667 auto got{ReadFrame(frameOffsetInFile_, need, handler)};
669 handler.SignalError(IostatShortRead);
674 handler.SignalError(IostatMissingTerminator);
683 void ExternalFileUnit::DoImpliedEndfile(IoErrorHandler &handler) {
690 DoEndfile(handler);
697 void ExternalFileUnit::DoEndfile(IoErrorHandler &handler) {
708 AdvanceRecord(handler);
711 RUNTIME_CHECK(handler, direction_ != Direction::Output);
722 FlushOutput(handler);
723 Truncate(frameOffsetInFile_, handler);
724 TruncateFrame(frameOffsetInFile_, handler);
730 template void ExternalFileUnit::DoEndfile(IoErrorHandler &handler);
732 IoErrorHandler &handler);
734 IoErrorHandler &handler);
743 bool ExternalFileUnit::CheckDirectAccess(IoErrorHandler &handler) {
745 RUNTIME_CHECK(handler, openRecl);
747 handler.SignalError(
755 void ExternalFileUnit::HitEndOnRead(IoErrorHandler &handler) {
756 handler.SignalEnd();