1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
/*
SPDX-FileCopyrightText: 2007 Andreas Pakulat <apaku@gmx.de>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#ifndef VARIABLEREFERENCEPARSER_H
#define VARIABLEREFERENCEPARSER_H
#include <QList>
#include <QMap>
#include <QStringList>
class VariableInfo
{
public:
enum VariableType
{
QMakeVariable,
QtConfigVariable,
ShellVariableResolveQMake,
ShellVariableResolveMake,
FunctionCall,
Invalid
};
struct Position {
Position(int start_, int end_)
: start(start_), end(end_)
{
}
int start;
int end;
};
VariableInfo();
QList< Position > positions;
VariableType type = VariableInfo::Invalid;
};
class VariableReferenceParser
{
public:
VariableReferenceParser();
void setContent( const QString& );
bool parse();
QStringList variableReferences() const;
VariableInfo variableInfo( const QString& ) const;
private:
void appendPosition( const QString&, int, int, VariableInfo::VariableType );
QString m_content;
QMap< QString, VariableInfo > m_variables;
};
#endif
|