29 #include <QStringList>
51 : m_text(source.m_text), m_position(source.m_position),
52 m_level(source.m_level) {}
55 : m_text(text), m_position(position), m_level(
level) {}
59 if (
this != &source) {
60 m_text = source.m_text;
61 m_position = source.m_position;
62 m_level = source.m_level;
69 return ((m_text == p.m_text) && (m_position == p.m_position)
70 && (m_level == p.m_level));
73 QString
text()
const {
return m_text; }
75 int level()
const {
return m_level; }
98 explicit Macro(
const QString &n) : m_name(n) {}
99 Macro(
const QString &n,
const QString &b) : m_name(n), m_body(b) {}
102 : m_name(source.m_name),
103 m_fileName(source.m_fileName),
104 m_body(source.m_body),
105 m_arguments(source.m_arguments) {}
109 m_name = source.m_name;
110 m_body = source.m_body;
111 m_fileName = source.m_fileName;
112 m_arguments = source.m_arguments;
119 m_name == source.m_name &&
120 m_fileName == source.m_fileName &&
121 m_body == source.m_body &&
122 m_arguments == source.m_arguments;
125 QString
const&
name()
const {
return m_name;}
131 QString
body()
const {
return m_body; }
153 virtual QString
contents(
const QString& fileName) = 0;
154 virtual bool isModified(
const QString& fileName) = 0;
163 typedef std::map<QString, Macro> MacroMap;
171 virtual void reset();
173 virtual bool parseFile(
const QString& fileName,
bool onlyPreProcesss=
false,
bool force=
false);
174 virtual void fileParsed(
const QString& fileName);
182 QMap<QString, Dependence>
dependences(
const QString& fileName)
const;
184 MacroMap macros()
const {
return m_macroManager.macros();}
187 bool hasMacro(
const QString& name)
const {
return m_macroManager.hasMacro(name);}
188 Macro&
macro(
const QString& name) {
return m_macroManager.macro(name);}
189 virtual void removeMacro(
const QString& macroName) {m_macroManager.removeMacro(macroName);}
194 const QMap<QString, TranslationUnitAST*> &
parsedUnits()
const {
return m_parsedUnits; }
205 QMap<QString, Dependence>& findOrInsertDependenceList(
const QString& fileName);
207 QString findIncludeFile(
const Dependence& dep)
const;
215 bool hasMacro(
const QString& name)
const
216 {
return (m_macros.find(name) != m_macros.end());}
217 Macro&
macro(
const QString& name) {
return m_macros[ name];}
218 MacroMap
const& macros()
const;
219 void removeAllMacrosInFile(
const QString& fileName);
226 QString m_currentFileName;
227 QMap< QString, QMap<QString, Dependence> > m_dependences;
228 MacroManager m_macroManager;
229 QMap< QString, QList<Problem> > m_problems;
230 QMap<QString, TranslationUnitAST*> m_parsedUnits;
231 QStringList m_includePaths;
238 void operator = (
const Driver& source);
void setSourceProvider(SourceProvider *sourceProvider)
virtual bool parseFile(const QString &fileName, bool onlyPreProcesss=false, bool force=false)
Macro(const Macro &source)
virtual void removeMacro(const QString ¯oName)
virtual void setupLexer(Lexer *lexer)
virtual QString contents(const QString &fileName)=0
bool isResolveDependencesEnabled() const
QMap< QString, Dependence > dependences(const QString &fileName) const
bool operator==(const Macro &source) const
Macro(const QString &n, const QString &b)
SourceProvider * sourceProvider()
bool operator==(const Problem &p) const
Macro & operator=(const Macro &source)
virtual void setupParser(Parser *parser)
virtual ~SourceProvider()
TranslationUnitAST::Node takeTranslationUnit(const QString &fileName)
virtual void setupPreProcessor()
ArgumentList const & arguments() const
virtual void fileParsed(const QString &fileName)
QString currentFileName() const
void setName(const QString &name)
void push_back(Argument const &argument)
const QMap< QString, TranslationUnitAST * > & parsedUnits() const
virtual void setResolveDependencesEnabled(bool enabled)
TranslationUnitAST * translationUnit(const QString &fileName) const
QList< Problem > problems(const QString &fileName) const
Macro & macro(const QString &name)
Problem(const Problem &source)
QString const & name() const
void setBody(const QString &body)
virtual bool isModified(const QString &fileName)=0
virtual void addDependence(const QString &fileName, const Dependence &dep)
bool hasArguments() const
Problem(const QString &text, Position const &position, int level=Level_Error)
QStringList includePaths() const
bool hasMacro(const QString &name) const
Problem & operator=(const Problem &source)
void setFileName(const QString &fileName)
virtual void addIncludePath(const QString &path)
AUTO_PTR< TranslationUnitAST > Node
QPair< QString, int > Dependence
virtual void addMacro(const Macro ¯o)
std::list< Argument > ArgumentList
Position const & position() const
virtual void addProblem(const QString &fileName, const Problem &problem)