6#include <unordered_map>
14 mutable std::mutex compile_mutex_;
15 mutable std::mutex linker_mutex_;
16 std::unordered_map<std::string, std::vector<std::string>> compile_args_map_;
17 std::unordered_map<std::string, std::vector<std::string>> linker_args_map_;
26 std::lock_guard<std::mutex> lock(compile_mutex_);
27 if (compile_args_map_.find(target) != compile_args_map_.end()) {
28 throw std::runtime_error(
29 "Library node dispatcher already registered for library node code: " + std::string(target)
32 compile_args_map_[target] = std::move(args);
36 auto it = compile_args_map_.find(target);
37 if (it != compile_args_map_.end()) {
44 return compile_args_map_.size();
48 std::lock_guard<std::mutex> lock(linker_mutex_);
49 if (linker_args_map_.find(target) != linker_args_map_.end()) {
50 throw std::runtime_error(
51 "Library node dispatcher already registered for library node code: " + std::string(target)
54 linker_args_map_[target] = std::move(args);
58 auto it = linker_args_map_.find(target);
59 if (it != linker_args_map_.end()) {
66 return linker_args_map_.size();
Definition argument_registry.h:12
static ArgumentRegistry & instance()
Definition argument_registry.h:20
std::vector< std::string > get_compile_args(std::string target) const
Definition argument_registry.h:35
void register_linker_args(std::string target, std::vector< std::string > args)
Definition argument_registry.h:47
std::vector< std::string > get_linker_args(std::string target) const
Definition argument_registry.h:57
void register_compile_args(std::string target, std::vector< std::string > args)
Definition argument_registry.h:25
size_t size_compile_args() const
Definition argument_registry.h:43
size_t size_linker_args() const
Definition argument_registry.h:65
Definition argument_registry.h:10