class GraphBuilderRegistry final : public GraphBuilderSource
{
public:
+ GraphBuilderRegistry() = default;
+
+public:
+ GraphBuilderRegistry(const GraphBuilderSource *parent) : _parent{parent}
+ {
+ // DO NOTHING
+ }
+
+public:
/**
* @brief Returns registered GraphBuilder pointer for operator or
* nullptr if not registered
const GraphBuilder *lookup(const std::string &op) const final
{
if (_builder_map.find(op) == _builder_map.end())
- return nullptr;
+ return (_parent == nullptr) ? nullptr : _parent->lookup(op);
return _builder_map.at(op).get();
}
}
private:
+ const GraphBuilderSource *_parent = nullptr;
+
+private:
std::map<const std::string, std::unique_ptr<GraphBuilder>> _builder_map;
};