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);
469 void evalFopen(const FnDescription *Desc, const CallEvent &Call,
472 void preFreopen(const FnDescription *Desc, const CallEvent &Call,
474 void evalFreopen(const FnDescription *Desc, const CallEvent &Call,
477 void evalFclose(const FnDescription *Desc, const CallEvent &Call,
480 void preRead(const FnDescription *Desc, const CallEvent &Call,
483 void preWrite(const FnDescription *Desc, const CallEvent &Call,
486 void evalFreadFwrite(const FnDescription *Desc, const CallEvent &Call,
489 void evalFgetx(const FnDescription *Desc, const CallEvent &Call,
492 void evalFputx(const FnDescription *Desc, const CallEvent &Call,
495 void evalFprintf(const FnDescription *Desc, const CallEvent &Call,
498 void evalFscanf(const FnDescription *Desc, const CallEvent &Call,
501 void evalUngetc(const FnDescription *Desc, const CallEvent &Call,
504 void evalGetdelim(const FnDescription *Desc, const CallEvent &Call,
507 void preFseek(const FnDescription *Desc, const CallEvent &Call,
509 void evalFseek(const FnDescription *Desc, const CallEvent &Call,
512 void evalFgetpos(const FnDescription *Desc, const CallEvent &Call,
515 void evalFsetpos(const FnDescription *Desc, const CallEvent &Call,
518 void evalFtell(const FnDescription *Desc, const CallEvent &Call,
521 void evalRewind(const FnDescription *Desc, const CallEvent &Call,
524 void preDefault(const FnDescription *Desc, const CallEvent &Call,
527 void evalClearerr(const FnDescription *Desc, const CallEvent &Call,
530 void evalFeofFerror(const FnDescription *Desc, const CallEvent &Call,
534 void evalSetFeofFerror(const FnDescription *Desc, const CallEvent &Call,
538 void preFflush(const FnDescription *Desc, const CallEvent &Call,
541 void evalFflush(const FnDescription *Desc, const CallEvent &Call,
544 void evalFileno(const FnDescription *Desc, const CallEvent &Call,
655 bool Init(const FnDescription *Desc, const CallEvent &Call, CheckerContext &C,
657 StreamSym = getStreamArg(Desc, Call).getAsSymbol();
884 const FnDescription *Desc = lookupFn(Call);
885 if (!Desc || !Desc->PreFn)
888 Desc->PreFn(this, Desc, Call, C);
892 const FnDescription *Desc = lookupFn(Call);
893 if (!Desc && TestMode)
894 Desc = FnTestDescriptions.lookup(Call);
895 if (!Desc || !Desc->EvalFn)
898 Desc->EvalFn(this, Desc, Call, C);
927 void StreamChecker::evalFopen(const FnDescription *Desc, const CallEvent &Call,
947 StateNotNull->set<StreamMap>(RetSym, StreamState::getOpened(Desc));
949 StateNull->set<StreamMap>(RetSym, StreamState::getOpenFailed(Desc));
958 void StreamChecker::preFreopen(const FnDescription *Desc, const CallEvent &Call,
962 State = ensureStreamNonNull(getStreamArg(Desc, Call),
963 Call.getArgExpr(Desc->StreamArgNo), C, State);
970 void StreamChecker::evalFreopen(const FnDescription *Desc,
980 getStreamArg(Desc, Call).getAs<DefinedSVal>();
1007 StateRetNotNull->set<StreamMap>(StreamSym, StreamState::getOpened(Desc));
1009 StateRetNull->set<StreamMap>(StreamSym, StreamState::getOpenFailed(Desc));
1016 void StreamChecker::evalFclose(const FnDescription *Desc, const CallEvent &Call,
1020 if (!E.Init(Desc, Call, C, State))
1026 State = E.setStreamState(State, StreamState::getClosed(Desc));
1033 void StreamChecker::preRead(const FnDescription *Desc, const CallEvent &Call,
1036 SVal StreamVal = getStreamArg(Desc, Call);
1037 State = ensureStreamNonNull(StreamVal, Call.getArgExpr(Desc->StreamArgNo), C,
1058 void StreamChecker::preWrite(const FnDescription *Desc, const CallEvent &Call,
1061 SVal StreamVal = getStreamArg(Desc, Call);
1062 State = ensureStreamNonNull(StreamVal, Call.getArgExpr(Desc->StreamArgNo), C,
1149 void StreamChecker::evalFreadFwrite(const FnDescription *Desc,
1154 if (!E.Init(Desc, Call, C, State))
1194 E.setStreamState(StateNotFailed, StreamState::getOpened(Desc));
1218 StateFailed, StreamState::getOpened(Desc, NewES, !NewES.isFEof()));
1222 void StreamChecker::evalFgetx(const FnDescription *Desc, const CallEvent &Call,
1229 if (!E.Init(Desc, Call, C, State))
1260 E.setStreamState(StateNotFailed, StreamState::getOpened(Desc));
1277 StateFailed, StreamState::getOpened(Desc, NewES, !NewES.isFEof()));
1281 void StreamChecker::evalFputx(const FnDescription *Desc, const CallEvent &Call,
1288 if (!E.Init(Desc, Call, C, State))
1299 E.setStreamState(StateNotFailed, StreamState::getOpened(Desc));
1311 E.setStreamState(StateNotFailed, StreamState::getOpened(Desc));
1322 StateFailed, StreamState::getOpened(Desc, ErrorFError, true));
1326 void StreamChecker::evalFprintf(const FnDescription *Desc,
1334 if (!E.Init(Desc, Call, C, State))
1350 E.setStreamState(StateNotFailed, StreamState::getOpened(Desc));
1359 StateFailed, StreamState::getOpened(Desc, ErrorFError, true));
1363 void StreamChecker::evalFscanf(const FnDescription *Desc, const CallEvent &Call,
1370 if (!E.Init(Desc, Call, C, State))
1412 StateFailed, StreamState::getOpened(Desc, NewES, !NewES.isFEof()));
1416 void StreamChecker::evalUngetc(const FnDescription *Desc, const CallEvent &Call,
1420 if (!E.Init(Desc, Call, C, State))
1429 E.setStreamState(StateNotFailed, StreamState::getOpened(Desc));
1439 StateFailed = E.setStreamState(StateFailed, StreamState::getOpened(Desc));
1443 void StreamChecker::evalGetdelim(const FnDescription *Desc,
1448 if (!E.Init(Desc, Call, C, State))
1495 StateFailed, StreamState::getOpened(Desc, NewES, !NewES.isFEof()));
1503 void StreamChecker::preFseek(const FnDescription *Desc, const CallEvent &Call,
1506 SVal StreamVal = getStreamArg(Desc, Call);
1507 State = ensureStreamNonNull(StreamVal, Call.getArgExpr(Desc->StreamArgNo), C,
1521 void StreamChecker::evalFseek(const FnDescription *Desc, const CallEvent &Call,
1525 if (!E.Init(Desc, Call, C, State))
1532 E.setStreamState(StateNotFailed, StreamState::getOpened(Desc));
1546 StateFailed, StreamState::getOpened(Desc, ErrorNone | ErrorFError, true));
1550 void StreamChecker::evalFgetpos(const FnDescription *Desc,
1555 if (!E.Init(Desc, Call, C, State))
1569 void StreamChecker::evalFsetpos(const FnDescription *Desc,
1574 if (!E.Init(Desc, Call, C, State))
1581 StateNotFailed, StreamState::getOpened(Desc, ErrorNone, false));
1592 StateFailed, StreamState::getOpened(Desc, ErrorNone | ErrorFError, true));
1597 void StreamChecker::evalFtell(const FnDescription *Desc, const CallEvent &Call,
1601 if (!E.Init(Desc, Call, C, State))
1621 void StreamChecker::evalRewind(const FnDescription *Desc, const CallEvent &Call,
1625 if (!E.Init(Desc, Call, C, State))
1629 E.setStreamState(State, StreamState::getOpened(Desc, ErrorNone, false));
1633 void StreamChecker::preFflush(const FnDescription *Desc, const CallEvent &Call,
1636 SVal StreamVal = getStreamArg(Desc, Call);
1648 void StreamChecker::evalFflush(const FnDescription *Desc, const CallEvent &Call,
1651 SVal StreamVal = getStreamArg(Desc, Call);
1676 auto ClearErrorInNotFailed = [&StateNotFailed, Desc](SymbolRef Sym,
1681 StreamState NewSS = StreamState::getOpened(Desc, NewES, false);
1711 void StreamChecker::evalClearerr(const FnDescription *Desc,
1716 if (!E.Init(Desc, Call, C, State))
1722 StreamState::getOpened(Desc, ErrorNone, E.SS->FilePositionIndeterminate));
1726 void StreamChecker::evalFeofFerror(const FnDescription *Desc,
1731 if (!E.Init(Desc, Call, C, State))
1740 TrueState, StreamState::getOpened(Desc, ErrorKind,
1752 Desc, NewES, E.SS->FilePositionIndeterminate && !NewES.isFEof())));
1756 void StreamChecker::evalFileno(const FnDescription *Desc, const CallEvent &Call,
1769 if (!E.Init(Desc, Call, C, State))
1781 void StreamChecker::preDefault(const FnDescription *Desc, const CallEvent &Call,
1784 SVal StreamVal = getStreamArg(Desc, Call);
1785 State = ensureStreamNonNull(StreamVal, Call.getArgExpr(Desc->StreamArgNo), C,
1796 void StreamChecker::evalSetFeofFerror(const FnDescription *Desc,
1801 SymbolRef StreamSym = getStreamArg(Desc, Call).getAsSymbol();