aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2/generator/shiboken2/shibokengenerator.h
diff options
context:
space:
mode:
Diffstat (limited to 'sources/shiboken2/generator/shiboken2/shibokengenerator.h')
-rw-r--r--sources/shiboken2/generator/shiboken2/shibokengenerator.h573
1 files changed, 0 insertions, 573 deletions
diff --git a/sources/shiboken2/generator/shiboken2/shibokengenerator.h b/sources/shiboken2/generator/shiboken2/shibokengenerator.h
deleted file mode 100644
index d8259d245..000000000
--- a/sources/shiboken2/generator/shiboken2/shibokengenerator.h
+++ /dev/null
@@ -1,573 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 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$
-**
-****************************************************************************/
-
-#ifndef SHIBOKENGENERATOR_H
-#define SHIBOKENGENERATOR_H
-
-extern const char *CPP_ARG;
-extern const char *CPP_ARG_REMOVED;
-extern const char *CPP_RETURN_VAR;
-extern const char *CPP_SELF_VAR;
-extern const char *NULL_PTR;
-extern const char *PYTHON_ARG;
-extern const char *PYTHON_ARGS;
-extern const char *PYTHON_OVERRIDE_VAR;
-extern const char *PYTHON_RETURN_VAR;
-extern const char *PYTHON_TO_CPP_VAR;
-extern const char *SMART_POINTER_GETTER;
-
-extern const char *CONV_RULE_OUT_VAR_SUFFIX;
-extern const char *BEGIN_ALLOW_THREADS;
-extern const char *END_ALLOW_THREADS;
-
-#include <generator.h>
-
-#include "typesystem.h"
-
-#include <QtCore/QRegularExpression>
-
-class DocParser;
-class CodeSnip;
-class OverloadData;
-struct GeneratorClassInfoCacheEntry;
-
-QT_FORWARD_DECLARE_CLASS(QTextStream)
-
-/**
- * Abstract generator that contains common methods used in CppGenerator and HeaderGenerator.
- */
-class ShibokenGenerator : public Generator
-{
-public:
- enum class AttroCheckFlag
- {
- None = 0x0,
- GetattroOverloads = 0x01,
- GetattroSmartPointer = 0x02,
- GetattroUser = 0x04, // Injected code
- GetattroMask = 0x0F,
- SetattroQObject = 0x10,
- SetattroSmartPointer = 0x20,
- SetattroMethodOverride = 0x40,
- SetattroUser = 0x80, // Injected code
- SetattroMask = 0xF0,
- };
- Q_DECLARE_FLAGS(AttroCheck, AttroCheckFlag);
-
- using FunctionGroups = QMap<QString, AbstractMetaFunctionList>; // Sorted
-
- ShibokenGenerator();
- ~ShibokenGenerator() override;
-
- const char *name() const override { return "Shiboken"; }
-
- /// Returns a list of all ancestor classes for the given class.
- AbstractMetaClassList getAllAncestors(const AbstractMetaClass *metaClass) const;
-
-protected:
- bool doSetup() override;
-
- void writeArgumentNames(QTextStream &s,
- const AbstractMetaFunction *func,
- Options options = NoOption) const override;
-
- /**
- * Function used to write the fucntion arguments on the class buffer.
- * \param s the class output buffer
- * \param func the pointer to metafunction information
- * \param count the number of function arguments
- * \param options some extra options used during the parser
- */
- void writeFunctionArguments(QTextStream &s,
- const AbstractMetaFunction *func,
- Options options = NoOption) const override;
-
- GeneratorContext contextForClass(const AbstractMetaClass *c) const override;
-
- /**
- * Returns a map with all functions grouped, the function name is used as key.
- * Example of return value: { "foo" -> ["foo(int)", "foo(int, long)], "bar" -> "bar(double)"}
- * \param scope Where to search for functions, null means all global functions.
- */
- FunctionGroups getGlobalFunctionGroups() const;
- static FunctionGroups getFunctionGroups(const AbstractMetaClass *scope);
-
- /**
- * Returns all different inherited overloads of func, and includes func as well.
- * The function can be called multiple times without duplication.
- * \param func the metafunction to be searched in subclasses.
- * \param seen the function's minimal signatures already seen.
- */
- AbstractMetaFunctionList getFunctionAndInheritedOverloads(const AbstractMetaFunction *func, QSet<QString> *seen);
-
- /// Write user's custom code snippets at class or module level.
- void writeClassCodeSnips(QTextStream &s,
- const QVector<CodeSnip> & codeSnips,
- TypeSystem::CodeSnipPosition position,
- TypeSystem::Language language,
- const GeneratorContext &context);
- void writeCodeSnips(QTextStream &s,
- const QVector<CodeSnip> & codeSnips,
- TypeSystem::CodeSnipPosition position,
- TypeSystem::Language language);
- /// Write user's custom code snippets at function level.
- void writeCodeSnips(QTextStream &s,
- const QVector<CodeSnip> & codeSnips,
- TypeSystem::CodeSnipPosition position,
- TypeSystem::Language language,
- const AbstractMetaFunction *func,
- const AbstractMetaArgument *lastArg = nullptr);
-
- /// Replaces variables for the user's custom code at global or class level.
- void processCodeSnip(QString &code);
- void processClassCodeSnip(QString &code, const GeneratorContext &context);
-
- /**
- * Verifies if any of the function's code injections of the "native"
- * type needs the type system variable "%PYSELF".
- * \param func the function to check
- * \return true if the function's native code snippets use "%PYSELF"
- */
- bool injectedCodeUsesPySelf(const AbstractMetaFunction *func);
-
- /**
- * Verifies if any of the function's code injections makes a call
- * to the C++ method. This is used by the generator to avoid writing calls
- * to C++ when the user custom code already does this.
- * \param func the function to check
- * \return true if the function's code snippets call the wrapped C++ function
- */
- bool injectedCodeCallsCppFunction(const GeneratorContext &context,
- const AbstractMetaFunction *func);
-
- /**
- * Verifies if any of the function's code injections of the "native" class makes a
- * call to the C++ method. This is used by the generator to avoid writing calls to
- * Python overrides of C++ virtual methods when the user custom code already does this.
- * \param func the function to check
- * \return true if the function's code snippets call the Python override for a C++ virtual method
- */
- bool injectedCodeCallsPythonOverride(const AbstractMetaFunction *func);
-
- /**
- * Verifies if any of the function's code injections attributes values to
- * the return variable (%0 or %PYARG_0).
- * \param func the function to check
- * \param language the kind of code snip
- * \return true if the function's code attributes values to "%0" or "%PYARG_0"
- */
- bool injectedCodeHasReturnValueAttribution(const AbstractMetaFunction *func, TypeSystem::Language language = TypeSystem::TargetLangCode);
-
- /**
- * Verifies if any of the function's code injections uses the type system variable
- * for function arguments of a given index.
- */
- bool injectedCodeUsesArgument(const AbstractMetaFunction *func, int argumentIndex);
-
- /**
- * Function which parse the metafunction information
- * \param func the function witch will be parserd
- * \param option some extra options
- * \param arg_count the number of function arguments
- */
- QString functionSignature(const AbstractMetaFunction *func,
- const QString &prepend = QString(),
- const QString &append = QString(),
- Options options = NoOption,
- int arg_count = -1) const;
-
- /// Returns the top-most class that has multiple inheritance in the ancestry.
- static const AbstractMetaClass *getMultipleInheritingClass(const AbstractMetaClass *metaClass);
-
- static bool useOverrideCaching(const AbstractMetaClass *metaClass);
- AttroCheck checkAttroFunctionNeeds(const AbstractMetaClass *metaClass) const;
-
- /// Returns a list of methods of the given class where each one is part of a different overload with both static and non-static method.
- AbstractMetaFunctionList getMethodsWithBothStaticAndNonStaticMethods(const AbstractMetaClass *metaClass);
-
- /// Returns a list of parent classes for a given class.
- AbstractMetaClassList getBaseClasses(const AbstractMetaClass *metaClass) const;
-
- void writeToPythonConversion(QTextStream &s, const AbstractMetaType *type,
- const AbstractMetaClass *context, const QString &argumentName);
- void writeToCppConversion(QTextStream &s, const AbstractMetaType *type, const AbstractMetaClass *context, const QString &inArgName, const QString &outArgName);
- void writeToCppConversion(QTextStream &s, const AbstractMetaClass *metaClass, const QString &inArgName, const QString &outArgName);
-
- /// Returns true if the argument is a pointer that rejects nullptr values.
- bool shouldRejectNullPointerArgument(const AbstractMetaFunction *func, int argIndex);
-
- /// Verifies if the class should have a C++ wrapper generated for it, instead of only a Python wrapper.
- bool shouldGenerateCppWrapper(const AbstractMetaClass *metaClass) const;
-
- /// Condition to call WriteVirtualMethodNative. Was extracted because also used to count these calls.
- bool shouldWriteVirtualMethodNative(const AbstractMetaFunction *func);
-
- /// Adds enums eligible for generation from classes/namespaces marked not to be generated.
- static void lookForEnumsInClassesNotToBeGenerated(AbstractMetaEnumList &enumList, const AbstractMetaClass *metaClass);
-
- QString wrapperName(const AbstractMetaClass *metaClass) const;
-
- QString fullPythonClassName(const AbstractMetaClass *metaClass);
- QString fullPythonFunctionName(const AbstractMetaFunction *func);
-
- bool wrapperDiagnostics() const { return m_wrapperDiagnostics; }
-
- static QString protectedEnumSurrogateName(const AbstractMetaEnum *metaEnum);
- static QString protectedFieldGetterName(const AbstractMetaField *field);
- static QString protectedFieldSetterName(const AbstractMetaField *field);
-
- static QString pythonPrimitiveTypeName(const QString &cppTypeName);
- static QString pythonPrimitiveTypeName(const PrimitiveTypeEntry *type);
-
- static QString pythonOperatorFunctionName(const QString &cppOpFuncName);
- static QString pythonOperatorFunctionName(const AbstractMetaFunction *func);
- static QString pythonRichCompareOperatorId(const QString &cppOpFuncName);
- static QString pythonRichCompareOperatorId(const AbstractMetaFunction *func);
-
- static QString fixedCppTypeName(const CustomConversion::TargetToNativeConversion *toNative);
- static QString fixedCppTypeName(const AbstractMetaType *type);
- static QString fixedCppTypeName(const TypeEntry *type, QString typeName = QString());
-
- static bool isNumber(const QString &cpythonApiName);
- static bool isNumber(const TypeEntry *type);
- static bool isNumber(const AbstractMetaType *type);
- static bool isPyInt(const TypeEntry *type);
- static bool isPyInt(const AbstractMetaType *type);
-
- /**
- * Returns true if the type passed has a Python wrapper for it.
- * Although namespace has a Python wrapper, it's not considered a type.
- */
- static bool isWrapperType(const TypeEntry *type);
- static bool isWrapperType(const ComplexTypeEntry *type);
- static bool isWrapperType(const AbstractMetaType *metaType);
-
- /**
- * Checks if the type is an Object/QObject or pointer to Value Type.
- * In other words, tells if the type is "T*" and T has a Python wrapper.
- */
- static bool isPointerToWrapperType(const AbstractMetaType *type);
-
- /**
- * Returns true if \p type is an Object Type used as a value.
- */
- static bool isObjectTypeUsedAsValueType(const AbstractMetaType *type);
-
- static bool isValueTypeWithCopyConstructorOnly(const AbstractMetaClass *metaClass);
- bool isValueTypeWithCopyConstructorOnly(const TypeEntry *type) const;
- bool isValueTypeWithCopyConstructorOnly(const AbstractMetaType *type) const;
-
- /// Returns true if the type is a primitive but not a C++ primitive.
- static bool isUserPrimitive(const TypeEntry *type);
- static bool isUserPrimitive(const AbstractMetaType *type);
-
- /// Returns true if the type is a C++ primitive, a void*, a const char*, or a std::string.
- static bool isCppPrimitive(const TypeEntry *type);
- static bool isCppPrimitive(const AbstractMetaType *type);
-
- /// Returns true if the type is a C++ integral primitive, i.e. bool, char, int, long, and their unsigned counterparts.
- static bool isCppIntegralPrimitive(const TypeEntry *type);
- static bool isCppIntegralPrimitive(const AbstractMetaType *type);
-
- /// Checks if an argument type should be dereferenced by the Python method wrapper before calling the C++ method.
- static bool shouldDereferenceArgumentPointer(const AbstractMetaArgument *arg);
- /// Checks if a meta type should be dereferenced by the Python method wrapper passing it to C++.
- static bool shouldDereferenceAbstractMetaTypePointer(const AbstractMetaType *metaType);
-
- static bool visibilityModifiedToPrivate(const AbstractMetaFunction *func);
-
- QString converterObject(const AbstractMetaType *type);
- QString converterObject(const TypeEntry *type);
-
- static QString cpythonBaseName(const AbstractMetaClass *metaClass);
- static QString cpythonBaseName(const TypeEntry *type);
- QString cpythonBaseName(const AbstractMetaType *type);
- QString cpythonTypeName(const AbstractMetaClass *metaClass);
- QString cpythonTypeName(const TypeEntry *type);
- QString cpythonTypeNameExt(const TypeEntry *type) const;
- QString cpythonTypeNameExt(const AbstractMetaType *type) const;
- QString cpythonCheckFunction(const TypeEntry *type, bool genericNumberType = false);
- QString cpythonCheckFunction(const AbstractMetaType *metaType, bool genericNumberType = false);
- /**
- * Receives the argument \p type and tries to find the appropriate AbstractMetaType for it
- * or a custom type check.
- * \param type A string representing the type to be discovered.
- * \param metaType A pointer to an AbstractMetaType pointer, to where write a new meta type object
- * if one is produced from the \p type string. This object must be deallocated by
- * the caller. It will set the target variable to nullptr, is \p type is a Python type.
- * \return A custom check if \p type is a custom type, or an empty string if \p metaType
- * receives an existing type object.
- */
- QString guessCPythonCheckFunction(const QString &type, AbstractMetaType **metaType);
- QString cpythonIsConvertibleFunction(const TypeEntry *type, bool genericNumberType = false, bool checkExact = false);
- QString cpythonIsConvertibleFunction(const AbstractMetaType *metaType, bool genericNumberType = false);
- QString cpythonIsConvertibleFunction(const AbstractMetaArgument *metaArg, bool genericNumberType = false);
-
- QString cpythonToCppConversionFunction(const AbstractMetaClass *metaClass);
- QString cpythonToCppConversionFunction(const AbstractMetaType *type, const AbstractMetaClass *context = nullptr);
- QString cpythonToPythonConversionFunction(const AbstractMetaType *type, const AbstractMetaClass *context = nullptr);
- QString cpythonToPythonConversionFunction(const AbstractMetaClass *metaClass);
- QString cpythonToPythonConversionFunction(const TypeEntry *type);
-
- QString cpythonFunctionName(const AbstractMetaFunction *func);
- QString cpythonMethodDefinitionName(const AbstractMetaFunction *func);
- QString cpythonGettersSettersDefinitionName(const AbstractMetaClass *metaClass);
- static QString cpythonGetattroFunctionName(const AbstractMetaClass *metaClass);
- static QString cpythonSetattroFunctionName(const AbstractMetaClass *metaClass);
- QString cpythonGetterFunctionName(const AbstractMetaField *metaField);
- QString cpythonSetterFunctionName(const AbstractMetaField *metaField);
- QString cpythonWrapperCPtr(const AbstractMetaClass *metaClass,
- const QString &argName = QLatin1String("self")) const;
- QString cpythonWrapperCPtr(const AbstractMetaType *metaType, const QString &argName) const;
- QString cpythonWrapperCPtr(const TypeEntry *type, const QString &argName) const;
-
- /// Guesses the scope to where belongs an argument's default value.
- QString guessScopeForDefaultValue(const AbstractMetaFunction *func,
- const AbstractMetaArgument *arg) const;
- QString guessScopeForDefaultFlagsValue(const AbstractMetaFunction *func,
- const AbstractMetaArgument *arg,
- const QString &value) const;
-
- static QString cpythonEnumName(const EnumTypeEntry *enumEntry);
- static QString cpythonEnumName(const AbstractMetaEnum *metaEnum);
-
- static QString cpythonFlagsName(const FlagsTypeEntry *flagsEntry);
- static QString cpythonFlagsName(const AbstractMetaEnum *metaEnum);
- /// Returns the special cast function name, the function used to proper cast class with multiple inheritance.
- static QString cpythonSpecialCastFunctionName(const AbstractMetaClass *metaClass);
-
- QString getFormatUnitString(const AbstractMetaFunction *func, bool incRef = false) const;
-
- /// Returns the file name for the module global header. If no module name is provided the current will be used.
- QString getModuleHeaderFileName(const QString &moduleName = QString()) const;
-
- OptionDescriptions options() const override;
- bool handleOption(const QString &key, const QString &value) override;
-
- /// Returns true if the user enabled the so called "parent constructor heuristic".
- bool useCtorHeuristic() const;
- /// Returns true if the user enabled the so called "return value heuristic".
- bool useReturnValueHeuristic() const;
- /// Returns true if the user enabled PySide extensions.
- bool usePySideExtensions() const;
- /// Returns true if the generator should use the result of isNull()const to compute boolean casts.
- bool useIsNullAsNbNonZero() const;
- /// Returns true if the generated code should use the "#define protected public" hack.
- bool avoidProtectedHack() const;
- QString cppApiVariableName(const QString &moduleName = QString()) const;
- QString pythonModuleObjectName(const QString &moduleName = QString()) const;
- QString convertersVariableName(const QString &moduleName = QString()) const;
- /**
- * Returns the type index variable name for a given class. If \p alternativeTemplateName is true
- * and the class is a typedef for a template class instantiation, it will return an alternative name
- * made of the template class and the instantiation values, or an empty string if the class isn't
- * derived from a template class at all.
- */
- QString getTypeIndexVariableName(const AbstractMetaClass *metaClass, bool alternativeTemplateName = false) const;
- QString getTypeIndexVariableName(const TypeEntry *type) const;
- QString getTypeIndexVariableName(const AbstractMetaType *type) const;
-
- /// Returns true if the user don't want verbose error messages on the generated bindings.
- bool verboseErrorMessagesDisabled() const;
-
- /**
- * Builds an AbstractMetaType object from a QString.
- * Returns nullptr if no type could be built from the string.
- * \param typeSignature The string describing the type to be built.
- * \return A new AbstractMetaType object that must be deleted by the caller,
- * or a nullptr pointer in case of failure.
- */
- AbstractMetaType *buildAbstractMetaTypeFromString(QString typeSignature,
- QString *errorMessage = nullptr);
-
- /// Creates an AbstractMetaType object from a TypeEntry.
- AbstractMetaType *buildAbstractMetaTypeFromTypeEntry(const TypeEntry *typeEntry);
- /// Creates an AbstractMetaType object from an AbstractMetaClass.
- AbstractMetaType *buildAbstractMetaTypeFromAbstractMetaClass(const AbstractMetaClass *metaClass);
-
- void writeMinimalConstructorExpression(QTextStream &s, const AbstractMetaType *type, const QString &defaultCtor = QString());
- void writeMinimalConstructorExpression(QTextStream &s, const TypeEntry *type, const QString &defaultCtor = QString());
-
- void collectContainerTypesFromConverterMacros(const QString &code, bool toPythonMacro);
- // verify whether the class is copyable
- bool isCopyable(const AbstractMetaClass *metaClass);
-
- void clearTpFuncs();
-
-
- /// Initializes correspondences between primitive and Python types.
- static void initPrimitiveTypesCorrespondences();
- /// Initializes a list of Python known type names.
- static void initKnownPythonTypes();
-
- void writeFunctionCall(QTextStream &s,
- const AbstractMetaFunction *metaFunc,
- Options options = NoOption) const;
-
- void writeUnusedVariableCast(QTextStream &s, const QString &variableName);
-
- AbstractMetaFunctionList filterFunctions(const AbstractMetaClass *metaClass);
-
- // All data about extended converters: the type entries of the target type, and a
- // list of AbstractMetaClasses accepted as argument for the conversion.
- using ExtendedConverterData = QHash<const TypeEntry *, QVector<const AbstractMetaClass *> >;
- /// Returns all extended conversions for the current module.
- ExtendedConverterData getExtendedConverters() const;
-
- /// Returns a list of converters for the non wrapper types of the current module.
- QVector<const CustomConversion *> getPrimitiveCustomConversions();
-
- /// Returns true if the Python wrapper for the received OverloadData must accept a list of arguments.
- static bool pythonFunctionWrapperUsesListOfArguments(const OverloadData &overloadData);
-
- Indentor INDENT;
-
- const QRegularExpression &convertToCppRegEx() const
- { return m_typeSystemConvRegEx[TypeSystemToCppFunction]; }
-
- static QString pythonArgsAt(int i);
-
- static QHash<QString, QString> m_pythonPrimitiveTypeName;
- static QHash<QString, QString> m_pythonOperators;
- static QHash<QString, QString> m_formatUnits;
- static QHash<QString, QString> m_tpFuncs;
- static QStringList m_knownPythonTypes;
-
-private:
- static const GeneratorClassInfoCacheEntry &getGeneratorClassInfo(const AbstractMetaClass *scope);
- static FunctionGroups getFunctionGroupsImpl(const AbstractMetaClass *scope);
- static bool classNeedsGetattroFunctionImpl(const AbstractMetaClass *metaClass);
-
- QString translateTypeForWrapperMethod(const AbstractMetaType *cType,
- const AbstractMetaClass *context,
- Options opt = NoOption) const;
-
- /**
- * Returns all different inherited overloads of func.
- * The function can be called multiple times without duplication.
- * \param func the metafunction to be searched in subclasses.
- * \param seen the function's minimal signatures already seen.
- */
- AbstractMetaFunctionList getInheritedOverloads(const AbstractMetaFunction *func,
- QSet<QString> *seen);
-
- /**
- * Returns all overloads for a function named \p functionName.
- * \param scope scope used to search for overloads.
- * \param functionName the function name.
- */
- AbstractMetaFunctionList getFunctionOverloads(const AbstractMetaClass *scope,
- const QString &functionName);
- /**
- * Write a function argument in the C++ in the text stream \p s.
- * This function just call \code s << argumentString(); \endcode
- * \param s text stream used to write the output.
- * \param func the current metafunction.
- * \param argument metaargument information to be parsed.
- * \param options some extra options.
- */
- void writeArgument(QTextStream &s,
- const AbstractMetaFunction *func,
- const AbstractMetaArgument *argument,
- Options options = NoOption) const;
- /**
- * Create a QString in the C++ format to an function argument.
- * \param func the current metafunction.
- * \param argument metaargument information to be parsed.
- * \param options some extra options.
- */
- QString argumentString(const AbstractMetaFunction *func,
- const AbstractMetaArgument *argument,
- Options options = NoOption) const;
-
- QString functionReturnType(const AbstractMetaFunction *func, Options options = NoOption) const;
-
- /// Utility function for writeCodeSnips.
- using ArgumentVarReplacementPair = QPair<const AbstractMetaArgument *, QString>;
- using ArgumentVarReplacementList = QVector<ArgumentVarReplacementPair>;
- ArgumentVarReplacementList getArgumentReplacement(const AbstractMetaFunction* func,
- bool usePyArgs, TypeSystem::Language language,
- const AbstractMetaArgument *lastArg);
-
- /// Returns a string with the user's custom code snippets that comply with \p position and \p language.
- QString getCodeSnippets(const QVector<CodeSnip> & codeSnips,
- TypeSystem::CodeSnipPosition position,
- TypeSystem::Language language);
-
- enum TypeSystemConverterVariable {
- TypeSystemCheckFunction = 0,
- TypeSystemIsConvertibleFunction,
- TypeSystemToCppFunction,
- TypeSystemToPythonFunction,
- TypeSystemConverterVariables
- };
- void replaceConverterTypeSystemVariable(TypeSystemConverterVariable converterVariable, QString &code);
-
- /// Replaces the %CONVERTTOPYTHON type system variable.
- inline void replaceConvertToPythonTypeSystemVariable(QString &code)
- {
- replaceConverterTypeSystemVariable(TypeSystemToPythonFunction, code);
- }
- /// Replaces the %CONVERTTOCPP type system variable.
- inline void replaceConvertToCppTypeSystemVariable(QString &code)
- {
- replaceConverterTypeSystemVariable(TypeSystemToCppFunction, code);
- }
- /// Replaces the %ISCONVERTIBLE type system variable.
- inline void replaceIsConvertibleToCppTypeSystemVariable(QString &code)
- {
- replaceConverterTypeSystemVariable(TypeSystemIsConvertibleFunction, code);
- }
- /// Replaces the %CHECKTYPE type system variable.
- inline void replaceTypeCheckTypeSystemVariable(QString &code)
- {
- replaceConverterTypeSystemVariable(TypeSystemCheckFunction, code);
- }
-
- /// Return a prefix with '_' suitable for names in C++
- QString moduleCppPrefix(const QString &moduleName = QString()) const;
-
- bool m_useCtorHeuristic = false;
- bool m_userReturnValueHeuristic = false;
- bool m_usePySideExtensions = false;
- bool m_verboseErrorMessagesDisabled = false;
- bool m_useIsNullAsNbNonZero = false;
- bool m_avoidProtectedHack = false;
- bool m_wrapperDiagnostics = false;
-
- using AbstractMetaTypeCache = QHash<QString, AbstractMetaType *>;
- AbstractMetaTypeCache m_metaTypeFromStringCache;
-
- /// Type system converter variable replacement names and regular expressions.
- QString m_typeSystemConvName[TypeSystemConverterVariables];
- QRegularExpression m_typeSystemConvRegEx[TypeSystemConverterVariables];
-};
-
-Q_DECLARE_OPERATORS_FOR_FLAGS(ShibokenGenerator::AttroCheck);
-
-#endif // SHIBOKENGENERATOR_H