diff options
Diffstat (limited to 'sources/shiboken6/ApiExtractor/clangparser/clangparser.h')
-rw-r--r-- | sources/shiboken6/ApiExtractor/clangparser/clangparser.h | 48 |
1 files changed, 18 insertions, 30 deletions
diff --git a/sources/shiboken6/ApiExtractor/clangparser/clangparser.h b/sources/shiboken6/ApiExtractor/clangparser/clangparser.h index d95ada602..4a46248e4 100644 --- a/sources/shiboken6/ApiExtractor/clangparser/clangparser.h +++ b/sources/shiboken6/ApiExtractor/clangparser/clangparser.h @@ -1,30 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2017 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) 2017 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #ifndef CLANGPARSER_H #define CLANGPARSER_H @@ -33,11 +8,11 @@ #include <QtCore/QByteArrayList> #include <QtCore/QHash> -#include <QtCore/QPair> #include <QtCore/QString> #include <QtCore/QList> #include <string_view> +#include <utility> namespace clang { @@ -56,8 +31,16 @@ private: FileNameCache m_fileNameCache; }; +enum class LocationType +{ + Main, // Main header parsed for bindings + Other, // A header parsed for bindings + System, // A system header + Unknown // Clang internal +}; + class BaseVisitor { - Q_DISABLE_COPY(BaseVisitor) + Q_DISABLE_COPY_MOVE(BaseVisitor) public: using Diagnostics = QList<Diagnostic>; @@ -68,7 +51,7 @@ public: // Whether location should be visited. // defaults to clang_Location_isFromMainFile() - virtual bool visitLocation(const CXSourceLocation &location) const; + virtual bool visitLocation(const QString &fileName, LocationType locationType) const; virtual StartTokenResult startToken(const CXCursor &cursor) = 0; virtual bool endToken(const CXCursor &cursor) = 0; @@ -84,9 +67,14 @@ public: void setDiagnostics(const Diagnostics &d); void appendDiagnostic(const Diagnostic &d); + // For usage by the parser + bool _handleVisitLocation( const CXSourceLocation &location); + private: SourceFileCache m_fileCache; Diagnostics m_diagnostics; + CXFile m_currentCxFile{}; + bool m_visitCurrent = true; }; bool parse(const QByteArrayList &clangArgs, |