From 2a2a0827fa54b2eeb48e0e2090dfc503492ef33e Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 28 Oct 2020 07:51:22 +0100 Subject: Rename shiboken2 to shiboken6 Adapt CMake files, build scripts, tests and examples. Task-number: PYSIDE-904 Change-Id: I4cb5ee4c8df539546014b08202a7b1e98ed3ff07 Reviewed-by: Cristian Maureira-Fredes --- sources/shiboken2/ApiExtractor/typeparser.cpp | 305 -------------------------- 1 file changed, 305 deletions(-) delete mode 100644 sources/shiboken2/ApiExtractor/typeparser.cpp (limited to 'sources/shiboken2/ApiExtractor/typeparser.cpp') diff --git a/sources/shiboken2/ApiExtractor/typeparser.cpp b/sources/shiboken2/ApiExtractor/typeparser.cpp deleted file mode 100644 index c440fb66d..000000000 --- a/sources/shiboken2/ApiExtractor/typeparser.cpp +++ /dev/null @@ -1,305 +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$ -** -****************************************************************************/ - -#include "typeparser.h" -#include - -#include -#include -#include - -class Scanner -{ -public: - enum Token { - StarToken, - AmpersandToken, - LessThanToken, - ColonToken, - CommaToken, - OpenParenToken, - CloseParenToken, - SquareBegin, - SquareEnd, - GreaterThanToken, - - ConstToken, - VolatileToken, - Identifier, - NoToken, - InvalidToken - }; - - Scanner(const QString &s) - : m_pos(0), m_length(s.length()), m_tokenStart(-1), m_chars(s.constData()) - { - } - - Token nextToken(QString *errorMessage = Q_NULLPTR); - QString identifier() const; - - QString msgParseError(const QString &why) const; - -private: - int m_pos; - int m_length; - int m_tokenStart; - const QChar *m_chars; -}; - -QString Scanner::identifier() const -{ - return QString(m_chars + m_tokenStart, m_pos - m_tokenStart); -} - -Scanner::Token Scanner::nextToken(QString *errorMessage) -{ - Token tok = NoToken; - - // remove whitespace - while (m_pos < m_length && m_chars[m_pos] == QLatin1Char(' ')) - ++m_pos; - - m_tokenStart = m_pos; - - while (m_pos < m_length) { - - const QChar &c = m_chars[m_pos]; - - if (tok == NoToken) { - switch (c.toLatin1()) { - case '*': tok = StarToken; break; - case '&': tok = AmpersandToken; break; - case '<': tok = LessThanToken; break; - case '>': tok = GreaterThanToken; break; - case ',': tok = CommaToken; break; - case '(': tok = OpenParenToken; break; - case ')': tok = CloseParenToken; break; - case '[': tok = SquareBegin; break; - case ']' : tok = SquareEnd; break; - case ':': - tok = ColonToken; - Q_ASSERT(m_pos + 1 < m_length); - ++m_pos; - break; - default: - if (c.isLetterOrNumber() || c == QLatin1Char('_')) { - tok = Identifier; - } else { - QString message; - QTextStream (&message) << ": Unrecognized character in lexer at " - << m_pos << " : '" << c << '\''; - message = msgParseError(message); - if (errorMessage) - *errorMessage = message; - else - qWarning().noquote().nospace() << message; - return InvalidToken; - } - break; - } - } - - if (tok <= GreaterThanToken) { - ++m_pos; - break; - } - - if (tok == Identifier) { - if (c.isLetterOrNumber() || c == QLatin1Char('_')) - ++m_pos; - else - break; - } - } - - if (tok == Identifier) { - switch (m_pos - m_tokenStart) { - case 5: - if (m_chars[m_tokenStart] == QLatin1Char('c') - && m_chars[m_tokenStart + 1] == QLatin1Char('o') - && m_chars[m_tokenStart + 2] == QLatin1Char('n') - && m_chars[m_tokenStart + 3] == QLatin1Char('s') - && m_chars[m_tokenStart + 4] == QLatin1Char('t')) { - tok = ConstToken; - } - break; - case 8: - if (m_chars[m_tokenStart] == QLatin1Char('v') - && m_chars[m_tokenStart + 1] == QLatin1Char('o') - && m_chars[m_tokenStart + 2] == QLatin1Char('l') - && m_chars[m_tokenStart + 3] == QLatin1Char('a') - && m_chars[m_tokenStart + 4] == QLatin1Char('t') - && m_chars[m_tokenStart + 5] == QLatin1Char('i') - && m_chars[m_tokenStart + 6] == QLatin1Char('l') - && m_chars[m_tokenStart + 7] == QLatin1Char('e')) { - tok = VolatileToken; - } - break; - } - } - - return tok; - -} - -QString Scanner::msgParseError(const QString &why) const -{ - return QStringLiteral("TypeParser: Unable to parse \"") - + QString(m_chars, m_length) + QStringLiteral("\": ") + why; -} - -TypeInfo TypeParser::parse(const QString &str, QString *errorMessage) -{ - Scanner scanner(str); - - TypeInfo info; - QStack stack; - stack.push(&info); - - bool colon_prefix = false; - bool in_array = false; - QString array; - bool seenStar = false; - - Scanner::Token tok = scanner.nextToken(errorMessage); - while (tok != Scanner::NoToken) { - if (tok == Scanner::InvalidToken) - return TypeInfo(); - -// switch (tok) { -// case Scanner::StarToken: printf(" - *\n"); break; -// case Scanner::AmpersandToken: printf(" - &\n"); break; -// case Scanner::LessThanToken: printf(" - <\n"); break; -// case Scanner::GreaterThanToken: printf(" - >\n"); break; -// case Scanner::ColonToken: printf(" - ::\n"); break; -// case Scanner::CommaToken: printf(" - ,\n"); break; -// case Scanner::ConstToken: printf(" - const\n"); break; -// case Scanner::SquareBegin: printf(" - [\n"); break; -// case Scanner::SquareEnd: printf(" - ]\n"); break; -// case Scanner::Identifier: printf(" - '%s'\n", qPrintable(scanner.identifier())); break; -// default: -// break; -// } - - switch (tok) { - - case Scanner::StarToken: - seenStar = true; - stack.top()->addIndirection(Indirection::Pointer); - break; - - case Scanner::AmpersandToken: - switch (stack.top()->referenceType()) { - case NoReference: - stack.top()->setReferenceType(LValueReference); - break; - case LValueReference: - stack.top()->setReferenceType(RValueReference); - break; - case RValueReference: - const QString message = scanner.msgParseError(QStringLiteral("Too many '&' qualifiers")); - if (errorMessage) - *errorMessage = message; - else - qWarning().noquote().nospace() << message; - return TypeInfo(); - } - break; - case Scanner::LessThanToken: - stack.top()->m_instantiations << TypeInfo(); - stack.push(&stack.top()->m_instantiations.last()); - break; - - case Scanner::CommaToken: - stack.pop(); - stack.top()->m_instantiations << TypeInfo(); - stack.push(&stack.top()->m_instantiations.last()); - break; - - case Scanner::GreaterThanToken: - stack.pop(); - break; - - case Scanner::ColonToken: - colon_prefix = true; - break; - - case Scanner::ConstToken: - if (seenStar) { // "int *const": Last indirection is const. - Q_ASSERT(!stack.top()->m_indirections.isEmpty()); - *stack.top()->m_indirections.rbegin() = Indirection::ConstPointer; - } else { - stack.top()->m_constant = true; - } - break; - - case Scanner::VolatileToken: - stack.top()->m_volatile = true; - break; - - case Scanner::OpenParenToken: // function pointers not supported - case Scanner::CloseParenToken: { - const QString message = scanner.msgParseError(QStringLiteral("Function pointers are not supported")); - if (errorMessage) - *errorMessage = message; - else - qWarning().noquote().nospace() << message; - return TypeInfo(); - } - - case Scanner::Identifier: - if (in_array) { - array = scanner.identifier(); - } else if (colon_prefix || stack.top()->m_qualifiedName.isEmpty()) { - stack.top()->m_qualifiedName << scanner.identifier(); - colon_prefix = false; - } else { - stack.top()->m_qualifiedName.last().append(QLatin1Char(' ') + scanner.identifier()); - } - break; - - case Scanner::SquareBegin: - in_array = true; - break; - - case Scanner::SquareEnd: - in_array = false; - stack.top()->m_arrayElements += array; - break; - - - default: - break; - } - - tok = scanner.nextToken(); - } - - return info; -} -- cgit v1.2.3