Refactor: More const-correctness in node builder
Make it so find type of methods receive const pointers and do not modify graph topology. The latter was violated in the find_operation() which could have created an empty component. This is not intended behavior. No functional changes is expected.
This commit is contained in:
@@ -208,7 +208,7 @@ IDNode *DepsgraphNodeBuilder::add_id_node(ID *id)
|
||||
return id_node;
|
||||
}
|
||||
|
||||
IDNode *DepsgraphNodeBuilder::find_id_node(ID *id)
|
||||
IDNode *DepsgraphNodeBuilder::find_id_node(const ID *id)
|
||||
{
|
||||
return graph_->find_id_node(id);
|
||||
}
|
||||
@@ -228,6 +228,17 @@ ComponentNode *DepsgraphNodeBuilder::add_component_node(ID *id,
|
||||
return comp_node;
|
||||
}
|
||||
|
||||
ComponentNode *DepsgraphNodeBuilder::find_component_node(const ID *id,
|
||||
const NodeType comp_type,
|
||||
const char *comp_name)
|
||||
{
|
||||
IDNode *id_node = find_id_node(id);
|
||||
if (id_node == nullptr) {
|
||||
return nullptr;
|
||||
}
|
||||
return id_node->find_component(comp_type, comp_name);
|
||||
}
|
||||
|
||||
OperationNode *DepsgraphNodeBuilder::add_operation_node(ComponentNode *comp_node,
|
||||
OperationCode opcode,
|
||||
const DepsEvalOperationCb &op,
|
||||
@@ -311,19 +322,22 @@ bool DepsgraphNodeBuilder::has_operation_node(ID *id,
|
||||
return find_operation_node(id, comp_type, comp_name, opcode, name, name_tag) != nullptr;
|
||||
}
|
||||
|
||||
OperationNode *DepsgraphNodeBuilder::find_operation_node(ID *id,
|
||||
OperationNode *DepsgraphNodeBuilder::find_operation_node(const ID *id,
|
||||
NodeType comp_type,
|
||||
const char *comp_name,
|
||||
OperationCode opcode,
|
||||
const char *name,
|
||||
int name_tag)
|
||||
{
|
||||
ComponentNode *comp_node = add_component_node(id, comp_type, comp_name);
|
||||
ComponentNode *comp_node = find_component_node(id, comp_type, comp_name);
|
||||
if (comp_node == nullptr) {
|
||||
return nullptr;
|
||||
}
|
||||
return comp_node->find_operation(opcode, name, name_tag);
|
||||
}
|
||||
|
||||
OperationNode *DepsgraphNodeBuilder::find_operation_node(
|
||||
ID *id, NodeType comp_type, OperationCode opcode, const char *name, int name_tag)
|
||||
const ID *id, NodeType comp_type, OperationCode opcode, const char *name, int name_tag)
|
||||
{
|
||||
return find_operation_node(id, comp_type, "", opcode, name, name_tag);
|
||||
}
|
||||
|
||||
@@ -92,10 +92,11 @@ class DepsgraphNodeBuilder : public DepsgraphBuilder {
|
||||
int foreach_id_cow_detect_need_for_update_callback(ID *id_cow_self, ID *id_pointer);
|
||||
|
||||
IDNode *add_id_node(ID *id);
|
||||
IDNode *find_id_node(ID *id);
|
||||
IDNode *find_id_node(const ID *id);
|
||||
TimeSourceNode *add_time_source();
|
||||
|
||||
ComponentNode *add_component_node(ID *id, NodeType comp_type, const char *comp_name = "");
|
||||
ComponentNode *find_component_node(const ID *id, NodeType comp_type, const char *comp_name = "");
|
||||
|
||||
OperationNode *add_operation_node(ComponentNode *comp_node,
|
||||
OperationCode opcode,
|
||||
@@ -137,15 +138,18 @@ class DepsgraphNodeBuilder : public DepsgraphBuilder {
|
||||
const char *name = "",
|
||||
int name_tag = -1);
|
||||
|
||||
OperationNode *find_operation_node(ID *id,
|
||||
OperationNode *find_operation_node(const ID *id,
|
||||
NodeType comp_type,
|
||||
const char *comp_name,
|
||||
OperationCode opcode,
|
||||
const char *name = "",
|
||||
int name_tag = -1);
|
||||
|
||||
OperationNode *find_operation_node(
|
||||
ID *id, NodeType comp_type, OperationCode opcode, const char *name = "", int name_tag = -1);
|
||||
OperationNode *find_operation_node(const ID *id,
|
||||
NodeType comp_type,
|
||||
OperationCode opcode,
|
||||
const char *name = "",
|
||||
int name_tag = -1);
|
||||
|
||||
virtual void build_id(ID *id);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user