Lines Matching defs:Desc

219 /// The call should contain a function that is described by Desc.
220 SVal getStreamArg(const FnDescription *Desc, const CallEvent &Call) {
221 assert(Desc && Desc->StreamArgNo != ArgNone &&
223 return Call.getArgSVal(Desc->StreamArgNo);
454 void evalFopen(const FnDescription *Desc, const CallEvent &Call,
457 void preFreopen(const FnDescription *Desc, const CallEvent &Call,
459 void evalFreopen(const FnDescription *Desc, const CallEvent &Call,
462 void evalFclose(const FnDescription *Desc, const CallEvent &Call,
465 void preRead(const FnDescription *Desc, const CallEvent &Call,
468 void preWrite(const FnDescription *Desc, const CallEvent &Call,
471 void evalFreadFwrite(const FnDescription *Desc, const CallEvent &Call,
474 void evalFgetx(const FnDescription *Desc, const CallEvent &Call,
477 void evalFputx(const FnDescription *Desc, const CallEvent &Call,
480 void evalFprintf(const FnDescription *Desc, const CallEvent &Call,
483 void evalFscanf(const FnDescription *Desc, const CallEvent &Call,
486 void evalUngetc(const FnDescription *Desc, const CallEvent &Call,
489 void evalGetdelim(const FnDescription *Desc, const CallEvent &Call,
492 void preFseek(const FnDescription *Desc, const CallEvent &Call,
494 void evalFseek(const FnDescription *Desc, const CallEvent &Call,
497 void evalFgetpos(const FnDescription *Desc, const CallEvent &Call,
500 void evalFsetpos(const FnDescription *Desc, const CallEvent &Call,
503 void evalFtell(const FnDescription *Desc, const CallEvent &Call,
506 void evalRewind(const FnDescription *Desc, const CallEvent &Call,
509 void preDefault(const FnDescription *Desc, const CallEvent &Call,
512 void evalClearerr(const FnDescription *Desc, const CallEvent &Call,
515 void evalFeofFerror(const FnDescription *Desc, const CallEvent &Call,
519 void evalSetFeofFerror(const FnDescription *Desc, const CallEvent &Call,
523 void preFflush(const FnDescription *Desc, const CallEvent &Call,
526 void evalFflush(const FnDescription *Desc, const CallEvent &Call,
529 void evalFileno(const FnDescription *Desc, const CallEvent &Call,
648 bool Init(const FnDescription *Desc, const CallEvent &Call, CheckerContext &C,
650 StreamSym = getStreamArg(Desc, Call).getAsSymbol();
871 const FnDescription *Desc = lookupFn(Call);
872 if (!Desc || !Desc->PreFn)
875 Desc->PreFn(this, Desc, Call, C);
879 const FnDescription *Desc = lookupFn(Call);
880 if (!Desc && TestMode)
881 Desc = FnTestDescriptions.lookup(Call);
882 if (!Desc || !Desc->EvalFn)
885 Desc->EvalFn(this, Desc, Call, C);
890 void StreamChecker::evalFopen(const FnDescription *Desc, const CallEvent &Call,
910 StateNotNull->set<StreamMap>(RetSym, StreamState::getOpened(Desc));
912 StateNull->set<StreamMap>(RetSym, StreamState::getOpenFailed(Desc));
919 void StreamChecker::preFreopen(const FnDescription *Desc, const CallEvent &Call,
923 State = ensureStreamNonNull(getStreamArg(Desc, Call),
924 Call.getArgExpr(Desc->StreamArgNo), C, State);
931 void StreamChecker::evalFreopen(const FnDescription *Desc,
941 getStreamArg(Desc, Call).getAs<DefinedSVal>();
968 StateRetNotNull->set<StreamMap>(StreamSym, StreamState::getOpened(Desc));
970 StateRetNull->set<StreamMap>(StreamSym, StreamState::getOpenFailed(Desc));
977 void StreamChecker::evalFclose(const FnDescription *Desc, const CallEvent &Call,
981 if (!E.Init(Desc, Call, C, State))
987 State = E.setStreamState(State, StreamState::getClosed(Desc));
994 void StreamChecker::preRead(const FnDescription *Desc, const CallEvent &Call,
997 SVal StreamVal = getStreamArg(Desc, Call);
998 State = ensureStreamNonNull(StreamVal, Call.getArgExpr(Desc->StreamArgNo), C,
1019 void StreamChecker::preWrite(const FnDescription *Desc, const CallEvent &Call,
1022 SVal StreamVal = getStreamArg(Desc, Call);
1023 State = ensureStreamNonNull(StreamVal, Call.getArgExpr(Desc->StreamArgNo), C,
1110 void StreamChecker::evalFreadFwrite(const FnDescription *Desc,
1115 if (!E.Init(Desc, Call, C, State))
1155 E.setStreamState(StateNotFailed, StreamState::getOpened(Desc));
1179 StateFailed, StreamState::getOpened(Desc, NewES, !NewES.isFEof()));
1183 void StreamChecker::evalFgetx(const FnDescription *Desc, const CallEvent &Call,
1190 if (!E.Init(Desc, Call, C, State))
1221 E.setStreamState(StateNotFailed, StreamState::getOpened(Desc));
1238 StateFailed, StreamState::getOpened(Desc, NewES, !NewES.isFEof()));
1242 void StreamChecker::evalFputx(const FnDescription *Desc, const CallEvent &Call,
1249 if (!E.Init(Desc, Call, C, State))
1260 E.setStreamState(StateNotFailed, StreamState::getOpened(Desc));
1272 E.setStreamState(StateNotFailed, StreamState::getOpened(Desc));
1283 StateFailed, StreamState::getOpened(Desc, ErrorFError, true));
1287 void StreamChecker::evalFprintf(const FnDescription *Desc,
1295 if (!E.Init(Desc, Call, C, State))
1311 E.setStreamState(StateNotFailed, StreamState::getOpened(Desc));
1320 StateFailed, StreamState::getOpened(Desc, ErrorFError, true));
1324 void StreamChecker::evalFscanf(const FnDescription *Desc, const CallEvent &Call,
1331 if (!E.Init(Desc, Call, C, State))
1373 StateFailed, StreamState::getOpened(Desc, NewES, !NewES.isFEof()));
1377 void StreamChecker::evalUngetc(const FnDescription *Desc, const CallEvent &Call,
1381 if (!E.Init(Desc, Call, C, State))
1390 E.setStreamState(StateNotFailed, StreamState::getOpened(Desc));
1400 StateFailed = E.setStreamState(StateFailed, StreamState::getOpened(Desc));
1404 void StreamChecker::evalGetdelim(const FnDescription *Desc,
1409 if (!E.Init(Desc, Call, C, State))
1456 StateFailed, StreamState::getOpened(Desc, NewES, !NewES.isFEof()));
1464 void StreamChecker::preFseek(const FnDescription *Desc, const CallEvent &Call,
1467 SVal StreamVal = getStreamArg(Desc, Call);
1468 State = ensureStreamNonNull(StreamVal, Call.getArgExpr(Desc->StreamArgNo), C,
1482 void StreamChecker::evalFseek(const FnDescription *Desc, const CallEvent &Call,
1486 if (!E.Init(Desc, Call, C, State))
1493 E.setStreamState(StateNotFailed, StreamState::getOpened(Desc));
1507 StateFailed, StreamState::getOpened(Desc, ErrorNone | ErrorFError, true));
1511 void StreamChecker::evalFgetpos(const FnDescription *Desc,
1516 if (!E.Init(Desc, Call, C, State))
1530 void StreamChecker::evalFsetpos(const FnDescription *Desc,
1535 if (!E.Init(Desc, Call, C, State))
1542 StateNotFailed, StreamState::getOpened(Desc, ErrorNone, false));
1553 StateFailed, StreamState::getOpened(Desc, ErrorNone | ErrorFError, true));
1558 void StreamChecker::evalFtell(const FnDescription *Desc, const CallEvent &Call,
1562 if (!E.Init(Desc, Call, C, State))
1582 void StreamChecker::evalRewind(const FnDescription *Desc, const CallEvent &Call,
1586 if (!E.Init(Desc, Call, C, State))
1590 E.setStreamState(State, StreamState::getOpened(Desc, ErrorNone, false));
1594 void StreamChecker::preFflush(const FnDescription *Desc, const CallEvent &Call,
1597 SVal StreamVal = getStreamArg(Desc, Call);
1609 void StreamChecker::evalFflush(const FnDescription *Desc, const CallEvent &Call,
1612 SVal StreamVal = getStreamArg(Desc, Call);
1637 auto ClearErrorInNotFailed = [&StateNotFailed, Desc](SymbolRef Sym,
1642 StreamState NewSS = StreamState::getOpened(Desc, NewES, false);
1672 void StreamChecker::evalClearerr(const FnDescription *Desc,
1677 if (!E.Init(Desc, Call, C, State))
1683 StreamState::getOpened(Desc, ErrorNone, E.SS->FilePositionIndeterminate));
1687 void StreamChecker::evalFeofFerror(const FnDescription *Desc,
1692 if (!E.Init(Desc, Call, C, State))
1701 TrueState, StreamState::getOpened(Desc, ErrorKind,
1713 Desc, NewES, E.SS->FilePositionIndeterminate && !NewES.isFEof())));
1717 void StreamChecker::evalFileno(const FnDescription *Desc, const CallEvent &Call,
1730 if (!E.Init(Desc, Call, C, State))
1742 void StreamChecker::preDefault(const FnDescription *Desc, const CallEvent &Call,
1745 SVal StreamVal = getStreamArg(Desc, Call);
1746 State = ensureStreamNonNull(StreamVal, Call.getArgExpr(Desc->StreamArgNo), C,
1757 void StreamChecker::evalSetFeofFerror(const FnDescription *Desc,
1762 SymbolRef StreamSym = getStreamArg(Desc, Call).getAsSymbol();