summaryrefslogtreecommitdiffstats
path: root/Source/cmGccDepfileLexerHelper.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmGccDepfileLexerHelper.h')
-rw-r--r--Source/cmGccDepfileLexerHelper.h40
1 files changed, 40 insertions, 0 deletions
diff --git a/Source/cmGccDepfileLexerHelper.h b/Source/cmGccDepfileLexerHelper.h
new file mode 100644
index 0000000..e6b2fcf
--- /dev/null
+++ b/Source/cmGccDepfileLexerHelper.h
@@ -0,0 +1,40 @@
+/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+ file Copyright.txt or https://cmake.org/licensing for details. */
+#ifndef cmGccDepfileLexerHelper_h
+#define cmGccDepfileLexerHelper_h
+
+#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
+ };
+ State HelperState = State::Rule;
+};
+
+#define YY_EXTRA_TYPE cmGccDepfileLexerHelper*
+
+#endif