aboutsummaryrefslogtreecommitdiff
path: root/src/brussel.codegen.comp/CodegenOutput.hpp
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2023-10-19 22:50:07 -0700
committerrtk0c <[email protected]>2023-10-19 22:50:07 -0700
commit2c92e07f337e42cf58970443f9de678f85a9b2a4 (patch)
tree075d5407e1e12a9d35cbee6e4c20ad34e0765c42 /src/brussel.codegen.comp/CodegenOutput.hpp
parent615809c036f604bce4582cea8ad49c64693f4f45 (diff)
The great renaming: switch to "module style"
Diffstat (limited to 'src/brussel.codegen.comp/CodegenOutput.hpp')
-rw-r--r--src/brussel.codegen.comp/CodegenOutput.hpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/brussel.codegen.comp/CodegenOutput.hpp b/src/brussel.codegen.comp/CodegenOutput.hpp
new file mode 100644
index 0000000..df949f5
--- /dev/null
+++ b/src/brussel.codegen.comp/CodegenOutput.hpp
@@ -0,0 +1,34 @@
+#pragma once
+
+#include <Utils.hpp>
+
+#include <robin_hood.h>
+#include <algorithm>
+#include <cstdio>
+#include <cstdlib>
+#include <string>
+#include <vector>
+
+// A generic "thing" (could be anything, comments, string-concated functionsm, etc.) to spit into the output file
+struct CodegenOutputThing {
+ std::string text;
+};
+
+class CodegenOutput {
+private:
+ robin_hood::unordered_set<std::string, StringHash, StringEqual> mRequestIncludes;
+ std::vector<CodegenOutputThing> mOutThings;
+
+public:
+ std::string optionOutPrefix;
+ // Whether to add prefixes mOutPrefix to all global names or not
+ bool optionAutoAddPrefix : 1 = false;
+
+public:
+ void AddRequestInclude(std::string_view include);
+ void AddOutputThing(CodegenOutputThing thing, int placementLocation = -1);
+
+ void MergeContents(CodegenOutput other);
+
+ void Write(FILE* file) const;
+};