aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken6/ApiExtractor/modifications.h
diff options
context:
space:
mode:
Diffstat (limited to 'sources/shiboken6/ApiExtractor/modifications.h')
-rw-r--r--sources/shiboken6/ApiExtractor/modifications.h327
1 files changed, 45 insertions, 282 deletions
diff --git a/sources/shiboken6/ApiExtractor/modifications.h b/sources/shiboken6/ApiExtractor/modifications.h
index de47c15c2..27a38f1aa 100644
--- a/sources/shiboken6/ApiExtractor/modifications.h
+++ b/sources/shiboken6/ApiExtractor/modifications.h
@@ -1,45 +1,18 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt for Python.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#ifndef MODIFICATIONS_H
#define MODIFICATIONS_H
#include "typesystem_enums.h"
-#include "typesystem_typedefs.h"
-#include "parser/typeinfo.h"
+#include "modifications_typedefs.h"
#include <QtCore/QList>
-#include <QtCore/QRegularExpression>
#include <QtCore/QSharedDataPointer>
-#include <QtCore/QSharedPointer>
#include <QtCore/QString>
class ArgumentModificationData;
+class CodeSnip;
class FunctionModificationData;
class ModificationData;
class FieldModificationData;
@@ -48,32 +21,9 @@ QT_BEGIN_NAMESPACE
class QDebug;
QT_END_NAMESPACE
-class TemplateInstance
-{
-public:
- explicit TemplateInstance(const QString &name) : m_name(name) {}
-
- void addReplaceRule(const QString &name, const QString &value)
- {
- replaceRules[name] = value;
- }
-
- QString expandCode() const;
-
- QString name() const
- {
- return m_name;
- }
-
-private:
- const QString m_name;
- QHash<QString, QString> replaceRules;
-};
-
struct ReferenceCount
{
enum Action { // 0x01 - 0xff
- Invalid = 0x00,
Add = 0x01,
AddAll = 0x02,
Remove = 0x04,
@@ -86,7 +36,7 @@ struct ReferenceCount
};
QString varName;
- Action action = Invalid;
+ Action action;
};
struct ArgumentOwner
@@ -107,74 +57,6 @@ struct ArgumentOwner
int index = InvalidIndex;
};
-class CodeSnipFragment
-{
-public:
- CodeSnipFragment() = default;
- explicit CodeSnipFragment(const QString &code) : m_code(code) {}
- explicit CodeSnipFragment(TemplateInstance *instance) : m_instance(instance) {}
-
- QString code() const;
-
-private:
- QString m_code;
- TemplateInstance *m_instance = nullptr;
-};
-
-class CodeSnipAbstract
-{
-public:
- QString code() const;
-
- void addCode(const QString &code);
- void addCode(QStringView code) { addCode(code.toString()); }
-
- void addTemplateInstance(TemplateInstance *ti)
- {
- codeList.append(CodeSnipFragment(ti));
- }
-
- QList<CodeSnipFragment> codeList;
-
- static QString fixSpaces(QString code);
- static QString dedent(const QString &code);
- static void prependCode(QString *code, QString firstLine);
- static QRegularExpression placeHolderRegex(int index);
-};
-
-class CustomFunction : public CodeSnipAbstract
-{
-public:
- explicit CustomFunction(const QString &n = QString()) : name(n) {}
-
- QString name;
- QString paramName;
-};
-
-class TemplateEntry : public CodeSnipAbstract
-{
-public:
- explicit TemplateEntry(const QString &name) : m_name(name) {}
-
- QString name() const
- {
- return m_name;
- }
-
-private:
- QString m_name;
-};
-
-class CodeSnip : public CodeSnipAbstract
-{
-public:
- CodeSnip() = default;
- explicit CodeSnip(TypeSystem::Language lang) : language(lang) {}
-
- TypeSystem::Language language = TypeSystem::TargetLangCode;
- TypeSystem::CodeSnipPosition position = TypeSystem::CodeSnipPositionAny;
-};
-
class ArgumentModification
{
public:
@@ -182,8 +64,8 @@ public:
explicit ArgumentModification(int idx);
ArgumentModification(const ArgumentModification &);
ArgumentModification &operator=(const ArgumentModification &);
- ArgumentModification(ArgumentModification &&);
- ArgumentModification &operator=(ArgumentModification &&);
+ ArgumentModification(ArgumentModification &&) noexcept;
+ ArgumentModification &operator=(ArgumentModification &&) noexcept;
~ArgumentModification();
// Reference count flags for this argument
@@ -191,20 +73,27 @@ public:
void addReferenceCount(const ReferenceCount &value);
// The text given for the new type of the argument
- QString modifiedType() const;
+ const QString &modifiedType() const;
void setModifiedType(const QString &value);
+ bool isTypeModified() const;
+
+ QString pyiType() const;
+ void setPyiType(const QString &value);
// The text of the new default expression of the argument
QString replacedDefaultExpression() const;
void setReplacedDefaultExpression(const QString &value);
// The new definition of ownership for a specific argument
- const QHash<TypeSystem::Language, TypeSystem::Ownership> &ownerships() const;
- void insertOwnership(TypeSystem::Language l, TypeSystem::Ownership o);
+
+ TypeSystem::Ownership targetOwnerShip() const;
+ void setTargetOwnerShip(TypeSystem::Ownership o);
+ TypeSystem::Ownership nativeOwnership() const;
+ void setNativeOwnership(TypeSystem::Ownership o);
// Different conversion rules
- const CodeSnipList &conversionRules() const;
- CodeSnipList &conversionRules();
+ const QList<CodeSnip> &conversionRules() const;
+ QList<CodeSnip> &conversionRules();
// QObject parent(owner) of this argument
ArgumentOwner owner() const;
@@ -237,16 +126,22 @@ private:
QSharedDataPointer<ArgumentModificationData> d;
};
-class Modification
+class FunctionModification
{
public:
+ using AllowThread = TypeSystem::AllowThread;
+
+ FunctionModification();
+ FunctionModification(const FunctionModification &);
+ FunctionModification &operator=(const FunctionModification &);
+ FunctionModification(FunctionModification &&) noexcept;
+ FunctionModification &operator=(FunctionModification &&) noexcept;
+ ~FunctionModification();
enum ModifierFlag {
- InvalidModifier = 0x0000,
Private = 0x0001,
Protected = 0x0002,
- Public = 0x0003,
- Friendly = 0x0004,
+ Public = 0x0004,
AccessModifierMask = 0x000f,
Final = 0x0010,
@@ -259,18 +154,12 @@ public:
CodeInjection = 0x1000,
Rename = 0x2000,
Deprecated = 0x4000,
- ReplaceExpression = 0x8000
+ Undeprecated = 0x8000,
+ ReplaceExpression = 0x10000
};
Q_DECLARE_FLAGS(Modifiers, ModifierFlag);
- Modification();
- Modification(const Modification &);
- Modification &operator=(const Modification &);
- Modification(Modification &&);
- Modification &operator=(Modification &&);
- ~Modification();
-
QString renamedToName() const;
void setRenamedToName(const QString &value);
@@ -301,10 +190,6 @@ public:
{
return accessModifier() == Public;
}
- bool isFriendly() const
- {
- return accessModifier() == Friendly;
- }
bool isFinal() const
{
return modifiers().testFlag(Final);
@@ -313,7 +198,6 @@ public:
{
return modifiers().testFlag(NonFinal);
}
- QString accessModifierString() const;
bool isDeprecated() const
{
@@ -327,39 +211,17 @@ public:
bool isRemoveModifier() const { return isRemoved(); }
-#ifndef QT_NO_DEBUG_STREAM
- void formatDebug(QDebug &d) const;
-#endif
-
-private:
- QSharedDataPointer<ModificationData> md;
-};
-
-Q_DECLARE_OPERATORS_FOR_FLAGS(Modification::Modifiers)
-class FunctionModification: public Modification
-{
-public:
- using AllowThread = TypeSystem::AllowThread;
-
- FunctionModification();
- FunctionModification(const FunctionModification &);
- FunctionModification &operator=(const FunctionModification &);
- FunctionModification(FunctionModification &&);
- FunctionModification &operator=(FunctionModification &&);
- ~FunctionModification();
bool isCodeInjection() const
{
return modifiers().testFlag(CodeInjection);
}
- void setIsThread(bool flag);
- bool isThread() const;
AllowThread allowThread() const;
void setAllowThread(AllowThread allow);
- bool matches(const QString &functionSignature) const;
+ bool matches(const QStringList &functionSignatures) const;
bool setSignature(const QString &s, QString *errorMessage = nullptr);
QString signature() const;
@@ -373,10 +235,10 @@ public:
int overloadNumber() const;
void setOverloadNumber(int overloadNumber);
- const CodeSnipList &snips() const;
- CodeSnipList &snips();
+ const QList<CodeSnip> &snips() const;
+ QList<CodeSnip> &snips();
void appendSnip(const CodeSnip &snip);
- void setSnips(const CodeSnipList &snips);
+ void setSnips(const QList<CodeSnip> &snips);
const QList<ArgumentModification> &argument_mods() const;
QList<ArgumentModification> &argument_mods();
@@ -393,8 +255,11 @@ private:
QSharedDataPointer<FunctionModificationData> d;
};
+Q_DECLARE_OPERATORS_FOR_FLAGS(FunctionModification::Modifiers)
+
#ifndef QT_NO_DEBUG_STREAM
QDebug operator<<(QDebug d, const ReferenceCount &);
+QDebug operator<<(QDebug d, const CodeSnip &s);
QDebug operator<<(QDebug d, const ArgumentOwner &a);
QDebug operator<<(QDebug d, const ArgumentModification &a);
QDebug operator<<(QDebug d, const FunctionModification &fm);
@@ -406,8 +271,8 @@ public:
FieldModification();
FieldModification(const FieldModification &);
FieldModification &operator=(const FieldModification &);
- FieldModification(FieldModification &&);
- FieldModification &operator=(FieldModification &&);
+ FieldModification(FieldModification &&) noexcept;
+ FieldModification &operator=(FieldModification &&) noexcept;
~FieldModification();
QString name() const;
@@ -426,6 +291,9 @@ public:
bool isRemoved() const;
void setRemoved(bool r);
+ bool isOpaqueContainer() const;
+ void setOpaqueContainer(bool r);
+
TypeSystem::SnakeCase snakeCase() const;
void setSnakeCase(TypeSystem::SnakeCase s);
@@ -433,117 +301,12 @@ private:
QSharedDataPointer<FieldModificationData> d;
};
-/**
-* \internal
-* Struct used to store information about functions added by the typesystem.
-* This info will be used later to create a fake AbstractMetaFunction which
-* will be inserted into the right AbstractMetaClass.
-*/
-struct AddedFunction
-{
- using AddedFunctionPtr = QSharedPointer<AddedFunction>;
-
- /// Function access types.
- enum Access {
- InvalidAccess = 0,
- Protected = 0x1,
- Public = 0x2
- };
-
- struct Argument
- {
- TypeInfo typeInfo;
- QString name;
- QString defaultValue;
- };
-
- /// Creates a new AddedFunction with a signature and a return type.
- explicit AddedFunction(const QString &name, const QList<Argument> &arguments,
- const TypeInfo &returnType);
-
- static AddedFunctionPtr createAddedFunction(const QString &signatureIn,
- const QString &returnTypeIn,
- QString *errorMessage);
-
- AddedFunction() = default;
-
- /// Returns the function name.
- QString name() const
- {
- return m_name;
- }
-
- /// Set the function access type.
- void setAccess(Access access)
- {
- m_access = access;
- }
-
- /// Returns the function access type.
- Access access() const
- {
- return m_access;
- }
-
- /// Returns the function return type.
- TypeInfo returnType() const
- {
- return m_returnType;
- }
-
- /// Returns a list of argument type infos.
- const QList<Argument> &arguments() const
- {
- return m_arguments;
- }
-
- /// Returns true if this is a constant method.
- bool isConstant() const
- {
- return m_isConst;
- }
- void setConstant(bool c) { m_isConst = c; };
-
- /// Set this method static.
- void setStatic(bool value)
- {
- m_isStatic = value;
- }
-
- /// Returns true if this is a static method.
- bool isStatic() const
- {
- return m_isStatic;
- }
-
- bool isDeclaration() const { return m_isDeclaration; } // <declare-function>
- void setDeclaration(bool value) { m_isDeclaration = value; }
-
- FunctionModificationList modifications;
-
-private:
- QString m_name;
- QList<Argument> m_arguments;
- TypeInfo m_returnType;
- Access m_access = Public;
- bool m_isConst = false;
- bool m_isStatic = false;
- bool m_isDeclaration = false;
-};
-
-#ifndef QT_NO_DEBUG_STREAM
-QDebug operator<<(QDebug d, const AddedFunction::Argument &a);
-QDebug operator<<(QDebug d, const AddedFunction &af);
-#endif
-
class DocModification
{
public:
DocModification() = default;
- explicit DocModification(const QString& xpath, const QString& signature) :
- m_xpath(xpath), m_signature(signature) {}
- explicit DocModification(TypeSystem::DocModificationMode mode, const QString& signature) :
- m_signature(signature), m_mode(mode) {}
+ explicit DocModification(const QString& xpath, const QString& signature);
+ explicit DocModification(TypeSystem::DocModificationMode mode, const QString& signature);
void setCode(const QString& code);
void setCode(QStringView code) { setCode(code.toString()); }