aboutsummaryrefslogtreecommitdiff
path: root/source/20-codegen-compiler/CodegenInput.inl
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2022-06-02 21:34:16 -0700
committerrtk0c <[email protected]>2022-06-02 21:34:16 -0700
commitbd07ae3f4e1bcdedc3e373460671ca9713a03de5 (patch)
tree15c897891474a97983f247196923f8e4f2184083 /source/20-codegen-compiler/CodegenInput.inl
parent8a0f2cd0b398ee0b7740e44a0e5fb2f75d090ccb (diff)
Changeset: 60 Add struct/class scanning to codegen
Diffstat (limited to 'source/20-codegen-compiler/CodegenInput.inl')
-rw-r--r--source/20-codegen-compiler/CodegenInput.inl69
1 files changed, 0 insertions, 69 deletions
diff --git a/source/20-codegen-compiler/CodegenInput.inl b/source/20-codegen-compiler/CodegenInput.inl
deleted file mode 100644
index 0809e7f..0000000
--- a/source/20-codegen-compiler/CodegenInput.inl
+++ /dev/null
@@ -1,69 +0,0 @@
-#pragma once
-
-#include "CodegenConfig.hpp"
-#include "CodegenDecl.hpp"
-
-#include "CodegenUtils.inl"
-
-#include <Utils.hpp>
-
-#include <robin_hood.h>
-#include <cinttypes>
-#include <string>
-#include <string_view>
-#include <vector>
-
-using namespace std::literals;
-
-class CodegenInput {
-private:
- std::vector<DeclEnum> mEnums;
- robin_hood::unordered_flat_map<std::string, size_t, StringHash, StringEqual> mDeclByName;
- robin_hood::unordered_node_map<std::string, DeclNamespace, StringHash, StringEqual> mNamespaces;
-
-public:
- void AddEnum(std::string fullname, DeclEnum decl) {
-#if CODEGEN_DEBUG_PRINT
- printf("Committed enum '%s'\n", decl.name.c_str());
- for (auto& elm : decl.elements) {
- printf(" - element %s = %" PRId64 "\n", elm.name.c_str(), elm.value);
- }
-#endif
-
- mDeclByName.try_emplace(std::move(fullname), mEnums.size());
- mEnums.push_back(std::move(decl));
- }
-
- DeclNamespace* AddNamespace(DeclNamespace ns) {
- auto path = Utils::MakeFullName(""sv, &ns);
- auto [iter, success] = mNamespaces.try_emplace(std::move(path), std::move(ns));
- auto& nsRef = iter->second;
- if (success) {
- nsRef.fullname = iter->first;
- }
- return &nsRef;
- }
-
- const DeclEnum* FindEnumByName(std::string_view name) const {
- // TODO handle multiple kinds of decl
- auto iter = mDeclByName.find(name);
- if (iter != mDeclByName.end()) {
- return &mEnums[iter->second];
- } else {
- return nullptr;
- }
- }
-
- const DeclNamespace* FindNamespace(std::string_view fullname) const {
- auto iter = mNamespaces.find(fullname);
- if (iter != mNamespaces.end()) {
- return &iter->second;
- } else {
- return nullptr;
- }
- }
-
- DeclNamespace* FindNamespace(std::string_view name) {
- return const_cast<DeclNamespace*>(const_cast<const CodegenInput*>(this)->FindNamespace(name));
- }
-};