예제 #1
0
    MyASTConsumer(clang::CompilerInstance &ci) : clang::ASTConsumer(), ci(ci),
            annotator (OutputPath, DataPath)

    {
        for(std::string &s : ProjectPaths) {
            auto colonPos = s.find(':');
            if (colonPos >= s.size()) {
                std::cerr << "fail to parse project option : " << s << std::endl;
                continue;
            }
            auto secondColonPos = s.find(':', colonPos+1);
            ProjectInfo info { s.substr(0, colonPos), s.substr(colonPos+1, secondColonPos - colonPos -1),
                                secondColonPos < s.size() ? s.substr(secondColonPos + 1) : std::string() };
            annotator.addProject(std::move(info));
        }
        for(std::string &s : ExternalProjectPaths) {
            auto colonPos = s.find(':');
            if (colonPos >= s.size()) {
                std::cerr << "fail to parse project option : " << s << std::endl;
                continue;
            }
            auto secondColonPos = s.find(':', colonPos+1);
            if (secondColonPos >= s.size()) {
                std::cerr << "fail to parse project option : " << s << std::endl;
                continue;
            }
            ProjectInfo info { s.substr(0, colonPos), s.substr(colonPos+1, secondColonPos - colonPos -1),
                               ProjectInfo::External };
            info.external_root_url = s.substr(secondColonPos + 1);
            annotator.addProject(std::move(info));
        }

        //ci.getLangOpts().DelayedTemplateParsing = (true);
        ci.getPreprocessor().enableIncrementalProcessing();
    }
예제 #2
0
파일: main.cpp 프로젝트: aaronzou/ddtt-dev
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    Annotator w;
    w.show();

    return a.exec();
}
예제 #3
0
void indri::infnet::DocListIteratorNode::annotate( Annotator& annotator, lemur::api::DOCID_T documentID, indri::index::Extent &extent ) {
  if (! _lastExtent.contains(extent)) {
    // if the last extent we annotated contains this one, there is no work
    // to do.
    _lastExtent = extent;
    annotator.addMatches( _extents, this, documentID, extent );
  }
}
예제 #4
0
void indri::infnet::UnorderedWindowNode::annotate( Annotator& annotator, int documentID, indri::index::Extent &extent ) {
  annotator.addMatches( _extents, this, documentID, extent );

  for( size_t i=0; i<_extents.size(); i++ ) {
    for( size_t j=0; j<_children.size(); j++ ) {
      _children[j]->annotate( annotator, documentID, _extents[i] );
    }
  }
}
예제 #5
0
    virtual void HandleTranslationUnit(clang::ASTContext& Ctx) override {

       /* if (PP.getDiagnostics().hasErrorOccurred())
            return;*/
        ci.getPreprocessor().getDiagnostics().getClient();


        BrowserASTVisitor v(annotator);
        v.TraverseDecl(Ctx.getTranslationUnitDecl());


        annotator.generate(ci.getSema(), WasInDatabase);
    }
예제 #6
0
void indri::infnet::ListBeliefNode::annotate( Annotator& annotator, int documentID, indri::index::Extent &extent ) {
  const indri::utility::greedy_vector<indri::index::Extent>& extents = _list.extents();

  indri::index::Extent range( extent.begin, extent.end );
  indri::utility::greedy_vector<indri::index::Extent>::const_iterator iter;
  iter = std::lower_bound( extents.begin(), extents.end(), range, indri::index::Extent::begins_before_less() );

  // mark the begin and end points for this list
  for( size_t i = iter - extents.begin(); i < extents.size() && extents[i].begin <= extent.end; i++ ) {
    if( extents[i].begin >= extent.begin &&
        extents[i].end <= extent.end ) {
      annotator.add( this, documentID, (indri::index::Extent &)extents[i] );
      _list.annotate( annotator, documentID, (indri::index::Extent &)extents[i] );
    }
  }
}
예제 #7
0
void indri::infnet::ShrinkageBeliefNode::annotate( Annotator& annotator, lemur::api::DOCID_T documentID, indri::index::Extent &extent ) {

 
  const indri::utility::greedy_vector<indri::index::Extent>& extents = _list.extents();
  int count = 0;


  // mark the begin and end points for this list
  for( size_t i=0; i<extents.size(); i++ ) {
    if( extents[i].begin >= extent.begin &&
        extents[i].end <= extent.end ) {
      annotator.add( this, documentID, (indri::index::Extent &)extents[i] );
      _list.annotate( annotator, documentID, (indri::index::Extent &)extents[i] );
    }
  }
}
예제 #8
0
 virtual bool shouldSkipFunctionBody(clang::Decl *D) override {
     return !annotator.shouldProcess(
         clang::FullSourceLoc(D->getLocation(),annotator.getSourceMgr())
             .getExpansionLoc().getFileID());
 }
예제 #9
0
 virtual void Initialize(clang::ASTContext& Ctx) override {
     annotator.setSourceMgr(Ctx.getSourceManager(), Ctx.getLangOpts());
     annotator.setMangleContext(Ctx.createMangleContext());
     ci.getPreprocessor().addPPCallbacks(maybe_unique(new PreprocessorCallback(annotator, ci.getPreprocessor())));
     ci.getDiagnostics().setClient(new BrowserDiagnosticClient(annotator), true);
 }