2 #include <boost/interprocess/sync/interprocess_semaphore.hpp>
10 using namespace clang::ento;
15 void EDMPluginDumper::checkASTDecl(
const clang::ClassTemplateDecl *TD,clang::ento::AnalysisManager& mgr,
16 clang::ento::BugReporter &BR )
const {
17 const clang::SourceManager &SM = BR.getSourceManager();
18 std::string tname = TD->getTemplatedDecl()->getQualifiedNameAsString();
19 if ( tname ==
"edm::WorkerMaker" ) {
20 for (
auto I = TD->spec_begin(), E = TD->spec_end();
I != E; ++
I)
22 for (
unsigned J = 0,
F =
I->getTemplateArgs().size(); J!=
F; ++J)
24 if (
const clang::CXXRecordDecl * RD =
I->getTemplateArgs().get(J).getAsType().getTypePtr()->getAsCXXRecordDecl()) {
25 const char * pPath = std::getenv(
"LOCALRT");
31 std::string ostring =
"edmplugin type '"+ rname +
"'\n";
32 std::ofstream
file(tname.c_str(),std::ios::app);
34 if (
const ClassTemplateSpecializationDecl *
SD = dyn_cast<ClassTemplateSpecializationDecl>(RD)) {
35 for (
unsigned J = 0,
F =
SD->getTemplateArgs().size(); J!=
F; ++J) {
38 const clang::CXXRecordDecl *
D =
SD->getTemplateArgs().get(J).getAsType().getTypePtr()->getAsCXXRecordDecl();
40 std::string ostring =
"edmplugin type '"+rname+
"' template arg '"+ dname +
"'\n";
41 std::ofstream
file(tname.c_str(),std::ios::app);
const std::complex< double > I
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
DecomposeProduct< arg, typename Div::arg > D