diff options
Diffstat (limited to 'sources/shiboken6/ApiExtractor/modifications.h')
-rw-r--r-- | sources/shiboken6/ApiExtractor/modifications.h | 282 |
1 files changed, 25 insertions, 257 deletions
diff --git a/sources/shiboken6/ApiExtractor/modifications.h b/sources/shiboken6/ApiExtractor/modifications.h index 3335c8098..27a38f1aa 100644 --- a/sources/shiboken6/ApiExtractor/modifications.h +++ b/sources/shiboken6/ApiExtractor/modifications.h @@ -1,46 +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 "codesniphelpers.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; @@ -49,28 +21,6 @@ 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 @@ -107,71 +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 CodeSnipHelpers -{ -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 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: @@ -179,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 @@ -188,8 +73,9 @@ 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); @@ -206,8 +92,8 @@ public: 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; @@ -248,15 +134,14 @@ public: FunctionModification(); FunctionModification(const FunctionModification &); FunctionModification &operator=(const FunctionModification &); - FunctionModification(FunctionModification &&); - FunctionModification &operator=(FunctionModification &&); + FunctionModification(FunctionModification &&) noexcept; + FunctionModification &operator=(FunctionModification &&) noexcept; ~FunctionModification(); enum ModifierFlag { Private = 0x0001, Protected = 0x0002, - Public = 0x0003, - Friendly = 0x0004, + Public = 0x0004, AccessModifierMask = 0x000f, Final = 0x0010, @@ -269,7 +154,8 @@ public: CodeInjection = 0x1000, Rename = 0x2000, Deprecated = 0x4000, - ReplaceExpression = 0x8000 + Undeprecated = 0x8000, + ReplaceExpression = 0x10000 }; Q_DECLARE_FLAGS(Modifiers, ModifierFlag); @@ -304,10 +190,6 @@ public: { return accessModifier() == Public; } - bool isFriendly() const - { - return accessModifier() == Friendly; - } bool isFinal() const { return modifiers().testFlag(Final); @@ -316,7 +198,6 @@ public: { return modifiers().testFlag(NonFinal); } - QString accessModifierString() const; bool isDeprecated() const { @@ -336,13 +217,11 @@ public: { 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; @@ -356,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(); @@ -380,6 +259,7 @@ 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); @@ -391,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; @@ -411,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); @@ -418,121 +301,6 @@ 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 { - 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; - } - - /// Set this method as a classmethod. - void setClassMethod(bool value) - { - m_isClassMethod = value; - } - - /// Returns true if this is a static method. - bool isStatic() const - { - return m_isStatic; - } - - /// Returns true if this is a class method. - bool isClassMethod() const - { - return m_isClassMethod; - } - - 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_isClassMethod = 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: |