##// END OF EJS Templates
changed so that paths are ignored when they startWith() an ignore path instead of matching the ignore path...
changed so that paths are ignored when they startWith() an ignore path instead of matching the ignore path git-svn-id: svn://svn.code.sf.net/p/pythonqt/code/trunk@76 ea8d5007-eb21-0410-b261-ccb3ea6e24a9

File last commit:

r10:21d959e02207
r40:054959ca17a1
Show More
generator.cpp
123 lines | 3.5 KiB | text/x-c | CppLexer
florianlink
syncing with my current work, updating to 1.2, see changelog...
r10 /****************************************************************************
**
** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved.
**
** This file is part of the Qt Script Generator project on Trolltech Labs.
**
** This file may be used under the terms of the GNU General Public
** License version 2.0 as published by the Free Software Foundation
** and appearing in the file LICENSE.GPL included in the packaging of
** this file. Please review the following information to ensure GNU
** General Public Licensing requirements will be met:
** http://www.trolltech.com/products/qt/opensource.html
**
** If you are unsure which license is appropriate for your use, please
** review the following information:
** http://www.trolltech.com/products/qt/licensing.html or contact the
** sales department at sales@trolltech.com.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
****************************************************************************/
#include "generator.h"
#include "reporthandler.h"
#include "fileout.h"
#include <QDir>
#include <QFile>
#include <QFileInfo>
Generator::Generator()
{
m_num_generated = 0;
m_num_generated_written = 0;
m_out_dir = ".";
}
void Generator::generate()
{
if (m_classes.size() == 0) {
ReportHandler::warning(QString("%1: no java classes, skipping")
.arg(metaObject()->className()));
return;
}
foreach (AbstractMetaClass *cls, m_classes) {
if (!shouldGenerate(cls))
continue;
QString fileName = fileNameForClass(cls);
ReportHandler::debugSparse(QString("generating: %1").arg(fileName));
FileOut fileOut(outputDirectory() + "/" + subDirectoryForClass(cls) + "/" + fileName);
write(fileOut.stream, cls);
if( fileOut.done() )
++m_num_generated_written;
++m_num_generated;
}
}
void Generator::printClasses()
{
QTextStream s(stdout);
AbstractMetaClassList classes = m_classes;
qSort(classes);
foreach (AbstractMetaClass *cls, classes) {
if (!shouldGenerate(cls))
continue;
write(s, cls);
s << endl << endl;
}
}
void Generator::verifyDirectoryFor(const QFile &file)
{
QDir dir = QFileInfo(file).dir();
if (!dir.exists()) {
if (!dir.mkpath(dir.absolutePath()))
ReportHandler::warning(QString("unable to create directory '%1'")
.arg(dir.absolutePath()));
}
}
QString Generator::subDirectoryForClass(const AbstractMetaClass *) const
{
Q_ASSERT(false);
return QString();
}
QString Generator::fileNameForClass(const AbstractMetaClass *) const
{
Q_ASSERT(false);
return QString();
}
void Generator::write(QTextStream &, const AbstractMetaClass *)
{
Q_ASSERT(false);
}
bool Generator::hasDefaultConstructor(const AbstractMetaType *type)
{
QString full_name = type->typeEntry()->qualifiedTargetLangName();
QString class_name = type->typeEntry()->targetLangName();
foreach (const AbstractMetaClass *java_class, m_classes) {
if (java_class->typeEntry()->qualifiedTargetLangName() == full_name) {
AbstractMetaFunctionList functions = java_class->functions();
foreach (const AbstractMetaFunction *function, functions) {
if (function->arguments().size() == 0 && function->name() == class_name)
return true;
}
return false;
}
}
return false;
}