本文整理汇总了C++中Generator::generateTree方法的典型用法代码示例。如果您正苦于以下问题:C++ Generator::generateTree方法的具体用法?C++ Generator::generateTree怎么用?C++ Generator::generateTree使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Generator
的用法示例。
在下文中一共展示了Generator::generateTree方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: processQdocconfFile
//.........这里部分代码省略.........
/*
Read some XML indexes. What are they???
*/
QStringList indexFiles = config.getStringList(CONFIG_INDEXES);
tree->readIndexes(indexFiles);
/*
Get all the header files: "*.ch *.h *.h++ *.hh *.hpp *.hxx"
Put them in a set.
*/
QSet<QString> excludedDirs;
QStringList excludedDirsList = config.getStringList(CONFIG_EXCLUDEDIRS);
foreach (const QString &excludeDir, excludedDirsList)
excludedDirs.insert(QDir::fromNativeSeparators(excludeDir));
QSet<QString> headers = QSet<QString>::fromList(
config.getAllFiles(CONFIG_HEADERS, CONFIG_HEADERDIRS,
codeParser->headerFileNameFilter(),
excludedDirs));
/*
Parse each header file in the set and add it to the big tree.
*/
QSet<QString>::ConstIterator h = headers.begin();
while (h != headers.end()) {
codeParser->parseHeaderFile(config.location(), *h, tree);
++h;
}
codeParser->doneParsingHeaderFiles(tree);
/*
Get all the source text files: "*.cpp *.qdoc *.mm"
Put them in a set.
*/
QSet<QString> sources = QSet<QString>::fromList(
config.getAllFiles(CONFIG_SOURCES, CONFIG_SOURCEDIRS,
codeParser->sourceFileNameFilter(),
excludedDirs));
/*
Parse each source text file in the set and add it to the big tree.
*/
QSet<QString>::ConstIterator s = sources.begin();
while (s != sources.end()) {
codeParser->parseSourceFile(config.location(), *s, tree);
++s;
}
codeParser->doneParsingSourceFiles(tree);
/*
Now the big tree has been built from all the header and
source files. Resolve all the class names, function names,
targets, URLs, links, and other stuff that needs resolving.
*/
tree->resolveGroups();
tree->resolveTargets();
/*
Now the tree has been built, and all the stuff that needed
resolving has been resolved. Now it is time to traverse
the big tree and generate the documentation output.
*/
QSet<QString>::ConstIterator of = outputFormats.begin();
while (of != outputFormats.end()) {
Generator *generator = Generator::generatorForFormat(*of);
if (generator == 0)
outputFormatsLocation.fatal(tr("Unknown output format '%1'")
.arg(*of));
generator->generateTree(tree, marker);
++of;
}
/*
Generate the XML tag file, if it was requested.
*/
QString tagFile = config.getString(CONFIG_TAGFILE);
if (!tagFile.isEmpty()) {
tree->generateTagFile(tagFile);
}
tree->setVersion("");
Generator::terminate();
CodeParser::terminate();
CodeMarker::terminate();
CppToQsConverter::terminate();
Doc::terminate();
Tokenizer::terminate();
Location::terminate();
QDir::setCurrent(prevCurrentDir);
#ifndef QT_NO_TRANSLATION
qDeleteAll(translators);
#endif
#ifdef DEBUG_SHUTDOWN_CRASH
qDebug() << "main(): Delete tree";
#endif
delete tree;
#ifdef DEBUG_SHUTDOWN_CRASH
qDebug() << "main(): Tree deleted";
#endif
}
示例2: processQdocconfFile
static void processQdocconfFile(const QString &fileName)
{
QList<QTranslator *> translators;
Config config( tr("qdoc") );
int i = 0;
while (defaults[i].key) {
config.setStringList(defaults[i].key, QStringList() << defaults[i].value);
++i;
}
config.setStringList(CONFIG_SLOW, QStringList(slow ? "true" : "false"));
Location::initialize( config );
config.load( fileName );
config.setStringList(CONFIG_DEFINES, defines + config.getStringList(CONFIG_DEFINES));
Location::terminate();
QString prevCurrentDir = QDir::currentPath();
QString dir = QFileInfo( fileName ).path();
if ( !dir.isEmpty() )
QDir::setCurrent( dir );
Location::initialize( config );
Tokenizer::initialize( config );
Doc::initialize( config );
CppToQsConverter::initialize( config );
CodeMarker::initialize( config );
CodeParser::initialize( config );
Generator::initialize( config );
QStringList fileNames = config.getStringList( CONFIG_TRANSLATORS );
QStringList::Iterator fn = fileNames.begin();
while ( fn != fileNames.end() ) {
QTranslator *translator = new QTranslator( 0 );
if ( !translator->load(*fn) )
config.lastLocation().error( tr("Cannot load translator '%1'")
.arg(*fn) );
QCoreApplication::instance()->installTranslator( translator );
translators.append( translator );
++fn;
}
QString lang = config.getString(CONFIG_LANGUAGE);
Location langLocation = config.lastLocation();
Tree *tree = treeForLanguage(lang);
tree->setVersion(config.getString(CONFIG_VERSION));
CodeParser *codeParser = CodeParser::parserForLanguage( lang );
if ( codeParser == 0 )
config.lastLocation().fatal(tr("Cannot parse programming language '%1'").arg(lang));
QSet<QString> outputFormats = config.getStringSet(CONFIG_OUTPUTFORMATS);
Location outputFormatsLocation = config.lastLocation();
CodeMarker *marker = CodeMarker::markerForLanguage(lang);
if (!marker && !outputFormats.isEmpty())
langLocation.fatal(tr("Cannot output documentation for programming language '%1'")
.arg(lang));
QStringList indexFiles = config.getStringList(CONFIG_INDEXES);
tree->readIndexes(indexFiles);
QStringList headers =
config.getAllFiles( CONFIG_HEADERS, CONFIG_HEADERDIRS,
codeParser->headerFileNameFilter() );
QStringList::ConstIterator h = headers.begin();
while ( h != headers.end() ) {
codeParser->parseHeaderFile( config.location(), *h, tree );
++h;
}
codeParser->doneParsingHeaderFiles( tree );
QStringList sources =
config.getAllFiles( CONFIG_SOURCES, CONFIG_SOURCEDIRS,
codeParser->sourceFileNameFilter() );
QStringList::ConstIterator s = sources.begin();
while ( s != sources.end() ) {
codeParser->parseSourceFile( config.location(), *s, tree );
++s;
}
codeParser->doneParsingSourceFiles( tree );
tree->resolveGroups();
tree->resolveTargets();
QSet<QString>::ConstIterator of = outputFormats.begin();
while ( of != outputFormats.end() ) {
Generator *generator = Generator::generatorForFormat( *of );
if ( generator == 0 )
outputFormatsLocation.fatal(tr("Unknown output format '%1'").arg(*of));
generator->generateTree( tree, marker );
++of;
}
tree->setVersion("");
Generator::terminate();
CodeParser::terminate();
CodeMarker::terminate();
CppToQsConverter::terminate();
//.........这里部分代码省略.........