You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
806 B
39 lines
806 B
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
file Copyright.txt or https://cmake.org/licensing for details. */
|
|
#pragma once
|
|
|
|
#include <utility>
|
|
|
|
#include <cmGccDepfileReaderTypes.h>
|
|
|
|
class cmGccDepfileLexerHelper
|
|
{
|
|
public:
|
|
cmGccDepfileLexerHelper() = default;
|
|
|
|
bool readFile(const char* filePath);
|
|
cmGccDepfileContent extractContent() && { return std::move(this->Content); }
|
|
|
|
// Functions called by the lexer
|
|
void newEntry();
|
|
void newRule();
|
|
void newDependency();
|
|
void newRuleOrDependency();
|
|
void addToCurrentPath(const char* s);
|
|
|
|
private:
|
|
void sanitizeContent();
|
|
|
|
cmGccDepfileContent Content;
|
|
|
|
enum class State
|
|
{
|
|
Rule,
|
|
Dependency,
|
|
Failed,
|
|
};
|
|
State HelperState = State::Rule;
|
|
};
|
|
|
|
#define YY_EXTRA_TYPE cmGccDepfileLexerHelper*
|