diff options
-rw-r--r-- | libcppbuild.cc | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/libcppbuild.cc b/libcppbuild.cc index 8d5231f..441ba00 100644 --- a/libcppbuild.cc +++ b/libcppbuild.cc @@ -88,20 +88,29 @@ std::shared_ptr<Task> getNextTask(const std::list<std::shared_ptr<Task>>& allTas return nullptr; } -struct Config +namespace +{ +struct BuildConfigurationEntry { const char* file; std::vector<BuildConfiguration> (*cb)(); }; -std::array<Config, 100> configFiles; +std::array<BuildConfigurationEntry, 1024> configFiles; int numConfigFiles{0}; +} // TODO: Use c++20 when ready, somehing like this: //int reg(const std::source_location location = std::source_location::current()) -int reg(const char* location, - std::vector<BuildConfiguration> (*cb)()) +int reg(const char* location, std::vector<BuildConfiguration> (*cb)()) { // NOTE: std::cout cannot be used here + if(numConfigFiles >= configFiles.size()) + { + fprintf(stderr, "Max %d build configurations currently supported.\n", + (int)configFiles.size()); + exit(1); + } + configFiles[numConfigFiles].file = location; configFiles[numConfigFiles].cb = cb; ++numConfigFiles; |