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