summaryrefslogtreecommitdiffstats
path: root/generators/boostpython/boostpythongenerator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'generators/boostpython/boostpythongenerator.cpp')
-rw-r--r--generators/boostpython/boostpythongenerator.cpp321
1 files changed, 0 insertions, 321 deletions
diff --git a/generators/boostpython/boostpythongenerator.cpp b/generators/boostpython/boostpythongenerator.cpp
deleted file mode 100644
index d266d39..0000000
--- a/generators/boostpython/boostpythongenerator.cpp
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- * This file is part of the Boost Python Generator project.
- *
- * Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
- *
- * Contact: PySide team <contact@pyside.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
- *
- */
-
-#include "boostpythongenerator.h"
-#include <reporthandler.h>
-
-#include <QtCore/QDir>
-#include <QtCore/QTextStream>
-#include <QtCore/QVariant>
-#include <QtCore/QRegExp>
-#include <QtCore/QDebug>
-
-#define NULL_VALUE "NULL"
-#define COMMENT_LINE_WIDTH 77
-
-static Indentor INDENT;
-static void dump_function(AbstractMetaFunctionList lst);
-
-QString BoostPythonGenerator::getWrapperName(const AbstractMetaClass* metaClass)
-{
- QString result = metaClass->typeEntry()->qualifiedCppName().toLower();
- result.replace("::", "_");
- result += "_wrapper";
- return result;
-}
-
-QString BoostPythonGenerator::argumentString(const AbstractMetaFunction *cppFunction,
- const AbstractMetaArgument *cppArgument,
- Options options) const
-{
- QString modifiedType = cppFunction->typeReplaced(cppArgument->argumentIndex() + 1);
- QString arg;
-
- if ((options & OriginalTypeDescription) || modifiedType.isEmpty())
- arg = translateType(cppArgument->type(), cppFunction->implementingClass(), options);
- else
- arg = modifiedType.replace('$', '.');
-
- if (!(options & Generator::SkipName)) {
- arg += " ";
- arg += cppArgument->argumentName();
- }
-
- QList<ReferenceCount> referenceCounts;
- referenceCounts = cppFunction->referenceCounts(cppFunction->implementingClass(), cppArgument->argumentIndex() + 1);
- if ((options & Generator::SkipDefaultValues) != Generator::SkipDefaultValues &&
- !cppArgument->defaultValueExpression().isEmpty()) {
- QString defaultValue = cppArgument->defaultValueExpression();
- if (defaultValue == "NULL")
- defaultValue = NULL_VALUE;
-
- //WORKAROUND: fix this please
- if (defaultValue.startsWith("new "))
- defaultValue.remove(0, 4);
-
- arg += " = " + defaultValue;
- }
-
- return arg;
-}
-
-void BoostPythonGenerator::writeArgument(QTextStream &s,
- const AbstractMetaFunction *func,
- const AbstractMetaArgument *cppArgument,
- Options options) const
-{
- s << argumentString(func, cppArgument, options);
-}
-
-void BoostPythonGenerator::writeFunctionArguments(QTextStream &s,
- const AbstractMetaFunction *func,
- Options options) const
-{
- AbstractMetaArgumentList arguments = func->arguments();
-
- if (options & Generator::WriteSelf) {
- s << func->implementingClass()->name() << '&';
- if (!(options & SkipName))
- s << " self";
- }
-
- int argUsed = 0;
- for (int i = 0; i < arguments.size(); ++i) {
- if ((options & Generator::SkipRemovedArguments) && func->argumentRemoved(i + 1))
- continue;
-
- if ((options & Generator::WriteSelf) || argUsed)
- s << ", ";
-
- writeArgument(s, func, arguments[i], options);
- argUsed++;
- }
-}
-
-QString BoostPythonGenerator::functionReturnType(const AbstractMetaFunction* func, Options options)
-{
- QString modifiedReturnType = QString(func->typeReplaced(0));
- if (!modifiedReturnType.isNull() && (!(options & OriginalTypeDescription)))
- return modifiedReturnType;
- else
- return translateType(func->type(), func->implementingClass(), options);
-}
-
-QString BoostPythonGenerator::functionSignature(const AbstractMetaFunction *func,
- QString prepend,
- QString append,
- Options options,
- int argCount)
-{
- AbstractMetaArgumentList arguments = func->arguments();
- int argument_count = argCount < 0 ? arguments.size() : argCount;
-
-
- QString result;
- QTextStream s(&result);
- // The actual function
- if (!(func->isEmptyFunction() ||
- func->isNormal() ||
- func->isSignal())) {
- options |= Generator::SkipReturnType;
- } else {
- s << functionReturnType(func, options) << ' ';
- }
-
- // name
- QString name(func->originalName());
- if (func->isConstructor())
- name = getWrapperName(func->ownerClass());
-
- s << prepend << name << append << "(";
- writeFunctionArguments(s, func, options);
- s << ")";
-
- if (func->isConstant() && (!(options & Generator::ExcludeMethodConst)))
- s << " const";
-
- return result;
-}
-
-QString BoostPythonGenerator::signatureForDefaultVirtualMethod(const AbstractMetaFunction *cppFunction,
- QString prepend,
- QString append,
- Options options,
- int arg_count)
-{
- QString defaultMethodSignature = functionSignature(cppFunction, prepend, append, options, arg_count);
- QString staticSelf("(");
- if (cppFunction->isConstant())
- staticSelf += "const ";
-
- staticSelf += cppFunction->ownerClass()->qualifiedCppName() + "& ";
- if (!(options & SkipName))
- staticSelf += " self";
-
- if (cppFunction->arguments().size() > 0)
- staticSelf += ", ";
-
- defaultMethodSignature.replace(defaultMethodSignature.lastIndexOf(") const"), 7, ")");
- defaultMethodSignature.replace(defaultMethodSignature.indexOf('('), 1, staticSelf);
- return defaultMethodSignature;
-}
-
-void BoostPythonGenerator::writeArgumentNames(QTextStream &s,
- const AbstractMetaFunction *func,
- Options options) const
-{
- AbstractMetaArgumentList arguments = func->arguments();
- int argCount = 0;
- for (int j = 0, max = arguments.size(); j < max; j++) {
-
- if ((options & Generator::SkipRemovedArguments) &&
- (func->argumentRemoved(arguments.at(j)->argumentIndex() + 1))) {
- continue;
- }
-
- if (argCount > 0)
- s << ", ";
-
- QString argName = arguments.at(j)->argumentName();
- if (((options & Generator::VirtualCall) == 0) &&
- (!func->conversionRule(TypeSystem::NativeCode, arguments.at(j)->argumentIndex() + 1).isEmpty() ||
- !func->conversionRule(TypeSystem::TargetLangCode, arguments.at(j)->argumentIndex() + 1).isEmpty())
- )
- argName += "_out";
-
- if ((options & Generator::BoxedPrimitive) &&
- !arguments.at(j)->type()->isReference() &&
- (arguments.at(j)->type()->isQObject() ||
- arguments.at(j)->type()->isObject())) {
-
- s << "PySide::ptr( " << argName << ")";
- } else {
- s << argName;
- }
- argCount++;
- }
-}
-
-void BoostPythonGenerator::writeFunctionCall(QTextStream &s,
- const AbstractMetaFunction* func,
- Options options)
-
-{
- if (!(options & Generator::SkipName))
- s << (func->isConstructor() ? func->ownerClass()->qualifiedCppName() : func->originalName());
-
- s << '(';
- writeArgumentNames(s, func, options);
- s << ')';
-}
-
-void BoostPythonGenerator::writeCodeSnips(QTextStream &s,
- const CodeSnipList &codeSnips,
- CodeSnip::Position position,
- TypeSystem::Language language,
- const AbstractMetaFunction *func)
-{
- Indentation indentation(INDENT);
- foreach (CodeSnip snip, codeSnips) {
- if ((snip.position != position) ||
- !(snip.language & language)) {
- continue;
- }
-
- QString code;
- QTextStream tmpStream(&code);
- formatCode(tmpStream, snip.code(), INDENT);
-
- if (func)
- replaceTemplateVariables(code, func);
-
- s << code << endl;
- }
-}
-
-bool BoostPythonGenerator::canCreateWrapperFor(const AbstractMetaClass* cppClass)
-{
- return !cppClass->hasPrivateDestructor() && !cppClass->isNamespace();
-}
-
-
-
-QStringList BoostPythonGenerator::getBaseClasses(const AbstractMetaClass *cppClass)
-{
- QStringList baseClass;
-
- if (!cppClass->baseClassName().isEmpty() &&
- (cppClass->name() != cppClass->baseClassName())) {
- baseClass.append(cppClass->baseClassName());
- }
-
- foreach (AbstractMetaClass *interface, cppClass->interfaces()) {
- AbstractMetaClass *aux = interface->primaryInterfaceImplementor();
- if (!aux)
- continue;
-
- //skip templates
- if (aux->templateArguments().size() > 0)
- continue;
-
- if (!aux->name().isEmpty() && (cppClass->qualifiedCppName() != aux->qualifiedCppName()))
- baseClass.append(aux->qualifiedCppName());
- }
-
- return baseClass;
-}
-
-
-bool BoostPythonGenerator::isCopyable(const AbstractMetaClass *cppClass)
-{
- if (cppClass->isNamespace())
- return false;
- else if (cppClass->typeEntry()->copyable() == ComplexTypeEntry::Unknown)
- return cppClass->hasCloneOperator();
- else
- return (cppClass->typeEntry()->copyable() == ComplexTypeEntry::CopyableSet);
-
- return false;
-}
-
-static void dump_function(AbstractMetaFunctionList lst)
-{
- qDebug() << "DUMP FUNCTIONS: ";
- foreach (AbstractMetaFunction *func, lst) {
- qDebug() << "*" << func->ownerClass()->name()
- << func->signature()
- << "Private: " << func->isPrivate()
- << "Empty: " << func->isEmptyFunction()
- << "Static:" << func->isStatic()
- << "Signal:" << func->isSignal()
- << "ClassImplements: " << (func->ownerClass() != func->implementingClass())
- << "is operator:" << func->isOperatorOverload()
- << "is global:" << func->isInGlobalScope();
- }
-}
-
-
-bool BoostPythonGenerator::doSetup(const QMap<QString, QString>&)
-{
- return true;
-}