blob: a81213cee4ee85b147383f7b658169ca4adf8421 [file] [log] [blame]
Daniel Jasperd07c8402013-07-29 08:19:24 +00001//===--- tools/extra/clang-tidy/ClangTidyModule.cpp - Clang tidy tool -----===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9///
10/// \file Implements classes required to build clang-tidy modules.
11///
12//===----------------------------------------------------------------------===//
13
14#include "ClangTidyModule.h"
15#include "llvm/Support/Regex.h"
16
17namespace clang {
18namespace tidy {
19
20CheckFactoryBase::~CheckFactoryBase() {}
21
22ClangTidyCheckFactories::~ClangTidyCheckFactories() {
23 for (std::map<std::string, CheckFactoryBase *>::iterator
24 I = Factories.begin(),
25 E = Factories.end();
26 I != E; ++I) {
27 delete I->second;
28 }
29}
30void ClangTidyCheckFactories::addCheckFactory(StringRef Name,
31 CheckFactoryBase *Factory) {
32
33 Factories[Name] = Factory;
34}
35
36void ClangTidyCheckFactories::createChecks(
37 StringRef CheckRegexString, SmallVectorImpl<ClangTidyCheck *> &Checks) {
38 llvm::Regex CheckRegex(CheckRegexString);
39 for (std::map<std::string, CheckFactoryBase *>::iterator
40 I = Factories.begin(),
41 E = Factories.end();
42 I != E; ++I) {
43 if (CheckRegex.match(I->first))
44 Checks.push_back(I->second->createCheck());
45 }
46}
47
48} // namespace tidy
49} // namespace clang