コード例 #1
0
ファイル: driver.cpp プロジェクト: serghei/kde-kdesdk
void Driver::parseFile( const QString& fileName, bool onlyPreProcess, bool force )
{
    QFileInfo fileInfo( fileName );
    QString absFilePath = fileInfo.absFilePath();

    QMap<QString, TranslationUnitAST*>::Iterator it = m_parsedUnits.find( absFilePath );

    if( force && it != m_parsedUnits.end() ){
	takeTranslationUnit( absFilePath );
    } else if( it != m_parsedUnits.end() && *it != 0 ){
	// file already processed
	return;
    }

    m_dependences.remove( fileName );
    m_problems.remove( fileName );

    m_currentFileName = fileName;

    Lexer lex( this );
    lexer = &lex;
    setupLexer( &lex );

    lex.setSource( sourceProvider()->contents(fileName) );

    if( !onlyPreProcess ){
	Parser parser( this, &lex );
	setupParser( &parser );

        TranslationUnitAST :: Node translationUnit;
	parser.parseTranslationUnit( translationUnit );
        m_parsedUnits.insert( fileName, translationUnit.release() );
        fileParsed( fileName );
    }

    m_currentFileName = QString::null;
    lexer = 0;
}
コード例 #2
0
QList<AbstractSourceProvider::Pointer> WorkbenchServiceRegistry::GetSourceProviders() const
{
  QList<AbstractSourceProvider::Pointer> providers;
  IExtensionPoint::Pointer ep = this->GetExtensionPoint();
  QList<IConfigurationElement::Pointer> elements = ep->GetConfigurationElements();
  for (int i = 0; i < elements.size(); i++)
  {
    if (elements[i]->GetName() == WorkbenchRegistryConstants::TAG_SOURCE_PROVIDER)
    {
      try
      {
        ISourceProvider* sourceProvider(elements[i]->CreateExecutableExtension<ISourceProvider>(
                                          WorkbenchRegistryConstants::ATTR_PROVIDER));
        if (AbstractSourceProvider* asp = dynamic_cast<AbstractSourceProvider*>(sourceProvider))
        {
          providers.push_back(AbstractSourceProvider::Pointer(asp));
        }
        else
        {
          const QString attributeName = elements[i]->GetAttribute(WorkbenchRegistryConstants::ATTR_PROVIDER);
          const QString message = "Source Provider '" + attributeName +
              "' should extend AbstractSourceProvider";
          const IStatus::Pointer status(new Status(IStatus::ERROR_TYPE,
                                                   PlatformUI::PLUGIN_ID(), message, BERRY_STATUS_LOC));
          WorkbenchPlugin::Log(status);
          continue;
        }
      }
      catch (const CoreException& e)
      {
        //StatusManager.getManager().handle(e.getStatus());
        BERRY_ERROR << "CoreException: " << e.what() << std::endl;
      }
    }
  }
  return providers;
}