File indexing completed on 2024-05-05 04:40:22
0001 /* 0002 SPDX-FileCopyrightText: 2007 Andreas Pakulat <apaku@gmx.de> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef VARIABLEREFERENCEPARSER_H 0008 #define VARIABLEREFERENCEPARSER_H 0009 0010 #include <QList> 0011 #include <QMap> 0012 #include <QString> 0013 0014 class QStringList; 0015 0016 class VariableInfo 0017 { 0018 public: 0019 enum VariableType 0020 { 0021 QMakeVariable, 0022 QtConfigVariable, 0023 ShellVariableResolveQMake, 0024 ShellVariableResolveMake, 0025 FunctionCall, 0026 Invalid 0027 }; 0028 0029 struct Position { 0030 Position(int start_, int end_) 0031 : start(start_), end(end_) 0032 { 0033 } 0034 int start; 0035 int end; 0036 }; 0037 0038 VariableInfo(); 0039 QList< Position > positions; 0040 VariableType type = VariableInfo::Invalid; 0041 }; 0042 0043 class VariableReferenceParser 0044 { 0045 public: 0046 VariableReferenceParser(); 0047 void setContent( const QString& ); 0048 bool parse(); 0049 QStringList variableReferences() const; 0050 VariableInfo variableInfo( const QString& ) const; 0051 private: 0052 void appendPosition( const QString&, int, int, VariableInfo::VariableType ); 0053 QString m_content; 0054 QMap< QString, VariableInfo > m_variables; 0055 }; 0056 0057 #endif 0058