Esempio n. 1
0
int main(int argc, const char **argv) {
	// CommonOptionsParser constructor will parse arguments and create
	// a CompilationDatabase. 
	clang::tooling::CommonOptionsParser OptionsParser(argc, argv, SampleToolCategory);
	// retrive CompilationDatabase and the list of input file paths, hand
	// to the tool constructor -> create a ClangTool and run FrontendAction
	// over the code
	clang::tooling::ClangTool Tool(OptionsParser.getCompilations(), OptionsParser.getSourcePathList());
	// ClangTool needs a new FrontendAction for each translation unit
	int result = Tool.run(clang::tooling::newFrontendActionFactory<PGAction>().get());
}
Esempio n. 2
0
TEST(ClangToolTest, InjectDiagnosticConsumerInBuildASTs) {
  FixedCompilationDatabase Compilations("/", std::vector<std::string>());
  ClangTool Tool(Compilations, std::vector<std::string>(1, "/a.cc"));
  Tool.mapVirtualFile("/a.cc", "int x = undeclared;");
  TestDiagnosticConsumer Consumer;
  Tool.setDiagnosticConsumer(&Consumer);
  std::vector<std::unique_ptr<ASTUnit>> ASTs;
  Tool.buildASTs(ASTs);
  EXPECT_EQ(1u, ASTs.size());
  EXPECT_EQ(1u, Consumer.NumDiagnosticsSeen);
}
Esempio n. 3
0
TEST(ClangToolTest, InjectDiagnosticConsumer) {
  FixedCompilationDatabase Compilations("/", std::vector<std::string>());
  ClangTool Tool(Compilations, std::vector<std::string>(1, "/a.cc"));
  Tool.mapVirtualFile("/a.cc", "int x = undeclared;");
  TestDiagnosticConsumer Consumer;
  Tool.setDiagnosticConsumer(&Consumer);
  std::unique_ptr<FrontendActionFactory> Action(
      newFrontendActionFactory<SyntaxOnlyAction>());
  Tool.run(Action.get());
  EXPECT_EQ(1u, Consumer.NumDiagnosticsSeen);
}
/*
 * Main @TestNeed
 */
int main(int argc, const char **argv){
	CommonOptionsParser OptionsParser(argc, argv, MyToolCategory);
	//Create an ClangTool instance to run a FrontendAction over a set of files
	ClangTool Tool(OptionsParser.getCompilations(),
					OptionsParser.getSourcePathList());
	//tool::MyFactory Factory;
	GlobalVarChecker gvc;
	MatchFinder finder;
	finder.addMatcher(VarDeclMatcher, &gvc);
	Tool.run(newFrontendActionFactory(&finder));
	return 0;
}
int main(int argc, const char **argv)
{
    CommonOptionsParser OptionsParser(argc, argv, MyToolCategory);
    ClangTool Tool(OptionsParser.getCompilations(),
                   OptionsParser.getSourcePathList());
    //tooling::MyFactory Factory;
    ParmPrinter Printer;
    MatchFinder Finder;
    Finder.addMatcher(funcMatcher, &Printer);

    Tool.run(newFrontendActionFactory(&Finder));
    return 0;
}
Esempio n. 6
0
TEST(ClangToolTest, BuildASTs) {
  FixedCompilationDatabase Compilations("/", std::vector<std::string>());

  std::vector<std::string> Sources;
  Sources.push_back("/a.cc");
  Sources.push_back("/b.cc");
  ClangTool Tool(Compilations, Sources);

  Tool.mapVirtualFile("/a.cc", "void a() {}");
  Tool.mapVirtualFile("/b.cc", "void b() {}");

  std::vector<std::unique_ptr<ASTUnit>> ASTs;
  EXPECT_EQ(0, Tool.buildASTs(ASTs));
  EXPECT_EQ(2u, ASTs.size());
}
Esempio n. 7
0
// Main function
int main(int argc, const char **argv) {
  clang::tooling::CommonOptionsParser OptionsParser(argc, argv, SuperastCPPCategory);
  clang::tooling::ClangTool Tool(OptionsParser.getCompilations(),
                                 OptionsParser.getSourcePathList());

  // Run the recursive visitor
  int returnValue = Tool.run(
      clang::tooling::newFrontendActionFactory<SuperastCPPAction>().get());

  // Dump the json to stdin
  dumpJsonDocument(std::cout, document);

  // Return
  return returnValue;
}
//Main @TestNeed
int main(int argc, const char **argv){
	CommonOptionsParser OptionsParser(argc, argv, MyToolCategory);
	ClangTool Tool(OptionsParser.getCompilations(),
					OptionsParser.getSourcePathList());
	CallExprChecker cec;
	MatchFinder finder;
	finder.addMatcher(mallocMatcher, &cec);
	finder.addMatcher(freeMatcher, &cec);
	finder.addMatcher(reallocMatcher, &cec);
	finder.addMatcher(memcpyAryMatcher, &cec);
	finder.addMatcher(memcpyPtrMatcher, &cec);
	finder.addMatcher(memcmpAryMatcher, &cec);
	finder.addMatcher(memcmpPtrMatcher, &cec);
	Tool.run(newFrontendActionFactory(&finder));
	return 0;
} 
int main(int argc, const char **argv)
{
    //CommonOptionsParser constructor will parse arguments and create a
    //CompilationDatabase. In case of error it will terminate the program.
    CommonOptionsParser OptionsParser(argc, argv, MyToolCategory);
    //once we have a CompilationDatabase, we can create a ClangTool and run our
    //FrontendAction over some code.
    ClangTool Tool(OptionsParser.getCompilations(),
                   OptionsParser.getSourcePathList());
    //tooling::MyFactory Factory;
    FunctionPrinter Printer;
    MatchFinder Finder;
    Finder.addMatcher(funcMatcher, &Printer);

    Tool.run(newFrontendActionFactory(&Finder));
    return 0;
}
Esempio n. 10
0
int main( int argc, const char* argv[] )
{
    invocation = argv[ 0 ];
    
    if( argc < 3 )
    {
        return Usage();
    }
    
    
    // files
    
    std::vector< std::string > files;
    
    auto arg = &argv[ 1 ];
    
    for( auto count = 1; count < argc && strcmp( "--", *arg ) != 0; ++count, ++arg )
    {
        files.push_back( *arg );
    }
    
    if( files.size() < 1 )
    {
        return Usage();
    }
    
    
    // compilation options

    auto options = FixedCompilationDatabase::loadFromCommandLine( argc, argv );
    
    if( options == nullptr )
    {
        llvm::errs() << "Failed to load compilation database\n";
        return Usage();
    }
    

    // run tool
    
    ClangTool Tool( *options, files );

    return Tool.run( newFrontendActionFactory< ReflectFrontendAction >().get() );
}
Esempio n. 11
0
TEST(newFrontendActionFactory, InjectsSourceFileCallbacks) {
  VerifyEndCallback EndCallback;

  FixedCompilationDatabase Compilations("/", std::vector<std::string>());
  std::vector<std::string> Sources;
  Sources.push_back("/a.cc");
  Sources.push_back("/b.cc");
  ClangTool Tool(Compilations, Sources);

  Tool.mapVirtualFile("/a.cc", "void a() {}");
  Tool.mapVirtualFile("/b.cc", "void b() {}");

  std::unique_ptr<FrontendActionFactory> Action(
      newFrontendActionFactory(&EndCallback, &EndCallback));
  Tool.run(Action.get());

  EXPECT_TRUE(EndCallback.Matched);
  EXPECT_EQ(2u, EndCallback.BeginCalled);
  EXPECT_EQ(2u, EndCallback.EndCalled);
}
Esempio n. 12
0
void Listener::onFrame( const Leap::Controller& controller ) 
{
	lock_guard<mutex> lock( *mMutex );
	if ( !mNewFrame ) {
		const Leap::Frame& controllerFrame	= controller.frame();
		const Leap::HandList& hands			= controllerFrame.hands();
		
		HandMap handMap;
		for ( const Leap::Hand& hand : hands ) {
			FingerMap fingerMap;
			ToolMap toolMap;
			const Leap::PointableList& pointables = hand.pointables();
			for ( const Leap::Pointable& pt : pointables ) {
				if ( pt.isValid() ) {
					Pointable pointable( pt );
					if ( pt.isFinger() ) {
						fingerMap[ pt.id() ] = Finger( pointable );
					} else if ( pt.isTool() ) {
						toolMap[ pt.id() ] = Tool( pointable );
					}
				}
			}
			
			float rotAngle			= (float)hand.rotationAngle( mFirstFrame.mFrame );
			Vec3f rotAxis			= toVec3f( hand.rotationAxis( mFirstFrame.mFrame ) );
			Matrix44f rotMatrix		= toMatrix44f( hand.rotationMatrix( mFirstFrame.mFrame ) );
			float scale				= (float)hand.scaleFactor( mFirstFrame.mFrame );
			Vec3f translation		= toVec3f( hand.translation( mFirstFrame.mFrame ) );
			
			handMap[ hand.id() ]	= Hand( hand, fingerMap, toolMap, rotAngle, rotAxis,
										   rotMatrix, scale, translation );
		}

		mFrame		= Frame( controllerFrame, handMap );
		if ( !mFirstFrameReceived ) {
			mFirstFrame			= Frame( controllerFrame, handMap );
			mFirstFrameReceived	= true;
		}
		mNewFrame	= true;
	}
}
int main(int argc, const char **argv){
	CommonOptionsParser OptionsParser(argc, argv, MyToolCategory);

	//Create an ClangTool instance to run a FrontendAction over a set of files
	ClangTool Tool(OptionsParser.getCompilations(),
					OptionsParser.getSourcePathList());
	
	//tooling::MyFactory Factory;
	FloatChecker fc;
	IntChecker ic;
	StringChecker sc;
	MatchFinder finder;
	
	finder.addMatcher(FloatLiteralMatcher , &fc);
	finder.addMatcher(IntLiteralMatcher , &ic);
	finder.addMatcher(StringLiteralMatcher , &sc);
	Tool.run(newFrontendActionFactory(&finder));

	llvm::outs() << "Avoid magic number : " << count << "\n";
	return 0;
}
ClangTidyStats
runClangTidy(std::unique_ptr<ClangTidyOptionsProvider> OptionsProvider,
             const tooling::CompilationDatabase &Compilations,
             ArrayRef<std::string> InputFiles,
             std::vector<ClangTidyError> *Errors, ProfileData *Profile) {
  ClangTool Tool(Compilations, InputFiles);
  clang::tidy::ClangTidyContext Context(std::move(OptionsProvider));
  if (Profile)
    Context.setCheckProfileData(Profile);

  ClangTidyDiagnosticConsumer DiagConsumer(Context);

  Tool.setDiagnosticConsumer(&DiagConsumer);

  class ActionFactory : public FrontendActionFactory {
  public:
    ActionFactory(ClangTidyContext &Context) : ConsumerFactory(Context) {}
    FrontendAction *create() override { return new Action(&ConsumerFactory); }

  private:
    class Action : public ASTFrontendAction {
    public:
      Action(ClangTidyASTConsumerFactory *Factory) : Factory(Factory) {}
      std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &Compiler,
                                                     StringRef File) override {
        return Factory->CreateASTConsumer(Compiler, File);
      }

    private:
      ClangTidyASTConsumerFactory *Factory;
    };

    ClangTidyASTConsumerFactory ConsumerFactory;
  };

  ActionFactory Factory(Context);
  Tool.run(&Factory);
  *Errors = Context.getErrors();
  return Context.getStats();
}
Esempio n. 15
0
ClangTidyStats runClangTidy(ClangTidyOptionsProvider *OptionsProvider,
                            const tooling::CompilationDatabase &Compilations,
                            ArrayRef<std::string> InputFiles,
                            std::vector<ClangTidyError> *Errors) {
    ClangTool Tool(Compilations, InputFiles);
    clang::tidy::ClangTidyContext Context(OptionsProvider);
    ClangTidyDiagnosticConsumer DiagConsumer(Context);

    Tool.setDiagnosticConsumer(&DiagConsumer);

    class ActionFactory : public FrontendActionFactory {
    public:
        ActionFactory(ClangTidyASTConsumerFactory *ConsumerFactory)
            : ConsumerFactory(ConsumerFactory) {}
        FrontendAction *create() override {
            return new Action(ConsumerFactory);
        }

    private:
        class Action : public ASTFrontendAction {
        public:
            Action(ClangTidyASTConsumerFactory *Factory) : Factory(Factory) {}
            ASTConsumer *CreateASTConsumer(CompilerInstance &Compiler,
                                           StringRef File) override {
                return Factory->CreateASTConsumer(Compiler, File);
            }

        private:
            ClangTidyASTConsumerFactory *Factory;
        };

        ClangTidyASTConsumerFactory *ConsumerFactory;
    };

    Tool.run(new ActionFactory(new ClangTidyASTConsumerFactory(Context)));
    *Errors = Context.getErrors();
    return Context.getStats();
}
Esempio n. 16
0
TEST(ClangToolTest, ArgumentAdjusters) {
  FixedCompilationDatabase Compilations("/", std::vector<std::string>());

  ClangTool Tool(Compilations, std::vector<std::string>(1, "/a.cc"));
  Tool.mapVirtualFile("/a.cc", "void a() {}");

  std::unique_ptr<FrontendActionFactory> Action(
      newFrontendActionFactory<SyntaxOnlyAction>());

  bool Found = false;
  bool Ran = false;
  Tool.appendArgumentsAdjuster(new CheckSyntaxOnlyAdjuster(Found, Ran));
  Tool.run(Action.get());
  EXPECT_TRUE(Ran);
  EXPECT_TRUE(Found);

  Ran = Found = false;
  Tool.clearArgumentsAdjusters();
  Tool.appendArgumentsAdjuster(new CheckSyntaxOnlyAdjuster(Found, Ran));
  Tool.appendArgumentsAdjuster(new ClangSyntaxOnlyAdjuster());
  Tool.run(Action.get());
  EXPECT_TRUE(Ran);
  EXPECT_FALSE(Found);
}
Tool
WorkspaceMoveTool::to_tool()
{
  return Tool(impl);
}
Esempio n. 18
0
Tool
TileMapPaintTool::to_tool()
{ 
  return Tool(impl);
}
Esempio n. 19
0
 XMLElementParser& pushElement(const XMLElement& element)
 {
   if(string_equal(element.name(), "var"))
   {
     Tools::iterator i = m_tools.insert(Tools::value_type(element.attribute("name"), Tool())).first;
     m_tool = new ToolXMLConstructor((*i).second);
     return *m_tool;
   }
   else if(string_equal(element.name(), "build"))
   {
     m_project.push_back(Project::value_type(element.attribute("name"), Build()));
     m_build = new BuildXMLConstructor(m_project.back().second);
     return *m_build;
   }
   else
   {
     ERROR_MESSAGE("parse error: invalid element");
     return *this;
   }
 }
Esempio n. 20
0
llvm::Error AllTUsToolExecutor::execute(
    llvm::ArrayRef<
        std::pair<std::unique_ptr<FrontendActionFactory>, ArgumentsAdjuster>>
        Actions) {
  if (Actions.empty())
    return make_string_error("No action to execute.");

  if (Actions.size() != 1)
    return make_string_error(
        "Only support executing exactly 1 action at this point.");

  std::string ErrorMsg;
  std::mutex TUMutex;
  auto AppendError = [&](llvm::Twine Err) {
    std::unique_lock<std::mutex> LockGuard(TUMutex);
    ErrorMsg += Err.str();
  };

  auto Log = [&](llvm::Twine Msg) {
    std::unique_lock<std::mutex> LockGuard(TUMutex);
    llvm::errs() << Msg.str() << "\n";
  };

  std::vector<std::string> Files;
  llvm::Regex RegexFilter(Filter);
  for (const auto& File : Compilations.getAllFiles()) {
    if (RegexFilter.match(File))
      Files.push_back(File);
  }
  // Add a counter to track the progress.
  const std::string TotalNumStr = std::to_string(Files.size());
  unsigned Counter = 0;
  auto Count = [&]() {
    std::unique_lock<std::mutex> LockGuard(TUMutex);
    return ++Counter;
  };

  auto &Action = Actions.front();

  {
    llvm::ThreadPool Pool(ThreadCount == 0 ? llvm::hardware_concurrency()
                                           : ThreadCount);
    llvm::SmallString<128> InitialWorkingDir;
    if (auto EC = llvm::sys::fs::current_path(InitialWorkingDir)) {
      InitialWorkingDir = "";
      llvm::errs() << "Error while getting current working directory: "
                   << EC.message() << "\n";
    }
    for (std::string File : Files) {
      Pool.async(
          [&](std::string Path) {
            Log("[" + std::to_string(Count()) + "/" + TotalNumStr +
                "] Processing file " + Path);
            ClangTool Tool(Compilations, {Path});
            Tool.appendArgumentsAdjuster(Action.second);
            Tool.appendArgumentsAdjuster(getDefaultArgumentsAdjusters());
            for (const auto &FileAndContent : OverlayFiles)
              Tool.mapVirtualFile(FileAndContent.first(),
                                  FileAndContent.second);
            // Do not restore working dir from multiple threads to avoid races.
            Tool.setRestoreWorkingDir(false);
            if (Tool.run(Action.first.get()))
              AppendError(llvm::Twine("Failed to run action on ") + Path +
                          "\n");
          },
          File);
    }
    // Make sure all tasks have finished before resetting the working directory.
    Pool.wait();
    if (!InitialWorkingDir.empty()) {
      if (auto EC = llvm::sys::fs::set_current_path(InitialWorkingDir))
        llvm::errs() << "Error while restoring working directory: "
                     << EC.message() << "\n";
    }
  }

  if (!ErrorMsg.empty())
    return make_string_error(ErrorMsg);

  return llvm::Error::success();
}
Esempio n. 21
0
BOOL CLLKBgReady::OnInitDialog() 
{
	CDialog::OnInitDialog();

 	CLLKCLIApp* pApp = (CLLKCLIApp*)AfxGetApp();
  	pApp->m_pSockThd->SetHwnd(m_hWnd);	
	pApp->m_pSockThd->readyMsg=m_hWnd;

	m_bmpBgReady.LoadBitmap(IDB_READY_BG);
	m_bmpBgTmp.LoadBitmap(IDB_READY_BG);
	m_bmpBgReady3.LoadBitmap(IDB_READY_BG);
	m_bmpReadyPlayer.LoadBitmap(IDB_READY_PLAYER);
	m_bmpTool.LoadBitmap(IDB_GAME_TOOL);
	m_bmpBgReady2.LoadBitmap(IDB_READY_BG2);

	m_bmpBgReady.GetBitmap(&m_infoBmpBgReady);
	m_bmpReadyPlayer.GetBitmap(&m_infoBmpReadyPlayer);
	m_bmpTool.GetBitmap(&m_infoBmpTool);
	m_bmpBgReady2.GetBitmap(&m_infoBmpBgReady2);

	CDC *pDC = GetDC();
	
	m_dcMem.CreateCompatibleDC(pDC);
	m_dcBuf.CreateCompatibleDC(pDC);
	
	m_dcMem.SelectObject(&m_bmpBgReady);
	
	RECT rc;
	GetWindowRect(&rc);//得到窗口信息
	
	int cyCaption = GetSystemMetrics(SM_CYCAPTION);//菜单高度
	
	MoveWindow(rc.left,rc.top,m_infoBmpBgReady.bmWidth,m_infoBmpBgReady.bmHeight+cyCaption);//调整窗口大小

	isReady=false;

	int	n=5;
	Tool(n);//显示道具
	
	//ShowName(chaNum,true);//显示昵称
	
 	SetTimer(1,500,NULL);
 	//SetTimer(2,500,NULL);
	
	StartButton.LoadBitmaps(IDB_GAME_START,IDB_GAME_START_DOWN,0,0);
	StartButton.SubclassDlgItem(IDC_START,this);
	StartButton.SizeToContent();

	TestButton.LoadBitmaps(IDB_GAME_TEST,IDB_GAME_TEST_DOWN,0,0);
	TestButton.SubclassDlgItem(IDC_TEST,this);
	TestButton.SizeToContent();

	CloseButton.LoadBitmaps(IDB_GAME_CLOSE,IDB_GAME_CLOSE_DOWN,0,0);
	CloseButton.SubclassDlgItem(IDC_CANCEL,this);
	CloseButton.SizeToContent();

	//请求用户信息
	sockaddr_in remotAddr;
	remotAddr.sin_family = AF_INET;
	remotAddr.sin_addr.S_un.S_addr = inet_addr(pApp->ip);
	remotAddr.sin_port = htons(pApp->port);
	CString buf;
	buf.Format("7 %d",c_uid);
	
	CSocket *pSock = pApp->m_pSockThd->GetSock();
	int res;
	res = sendto(pSock->m_hSocket,buf.GetBuffer(buf.GetLength()),buf.GetLength(),0,(SOCKADDR*)&remotAddr,sizeof(SOCKADDR));

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}