1ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenek//== Checker.cpp - Registration mechanism for checkers -----------*- C++ -*--=//
2ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenek//
3ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenek//                     The LLVM Compiler Infrastructure
4ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenek//
5ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenek// This file is distributed under the University of Illinois Open Source
6ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenek// License. See LICENSE.TXT for details.
7ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenek//
8ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenek//===----------------------------------------------------------------------===//
9ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenek//
10ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenek//  This file defines Checker, used to create and register checkers.
11ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenek//
12ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenek//===----------------------------------------------------------------------===//
13ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenek
14a5888f61be9f8d76e9b48a453dbced50523bd2e0Argyrios Kyrtzidis#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h"
15ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenek#include "clang/StaticAnalyzer/Core/Checker.h"
16ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenek
17ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenekusing namespace clang;
18ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenekusing namespace ento;
19ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenek
20ca804539d908d3a0e8c72a0df5f1f571d29490bbTed KremenekStringRef CheckerBase::getTagDescription() const {
21651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return getCheckName().getName();
22651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines}
23651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
24651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesCheckName CheckerBase::getCheckName() const { return Name; }
25651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
26651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesCheckerProgramPointTag::CheckerProgramPointTag(StringRef CheckerName,
27651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines                                               StringRef Msg)
28651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  : SimpleProgramPointTag(CheckerName, Msg) {}
29651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
30651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesCheckerProgramPointTag::CheckerProgramPointTag(const CheckerBase *Checker,
31651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines                                               StringRef Msg)
32651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  : SimpleProgramPointTag(Checker->getCheckName().getName(), Msg) {}
33651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines
34651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesraw_ostream& clang::ento::operator<<(raw_ostream &Out,
35651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines                                     const CheckerBase &Checker) {
36651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  Out << Checker.getCheckName().getName();
37651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  return Out;
38ca804539d908d3a0e8c72a0df5f1f571d29490bbTed Kremenek}
3999ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikie
4099ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikievoid Checker<check::_VoidCheck, check::_VoidCheck, check::_VoidCheck,
4199ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikie             check::_VoidCheck, check::_VoidCheck, check::_VoidCheck,
4299ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikie             check::_VoidCheck, check::_VoidCheck, check::_VoidCheck,
4399ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikie             check::_VoidCheck, check::_VoidCheck, check::_VoidCheck,
4499ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikie             check::_VoidCheck, check::_VoidCheck, check::_VoidCheck,
4599ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikie             check::_VoidCheck, check::_VoidCheck, check::_VoidCheck
4699ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikie             >::anchor() { }
47