Cleanup: Const correctness for node find functions
You shouldn't be able to retrieve a mutable node from a const node tree or a mutable socket from a const node. Use const_cast in one place in order to correct this without duplicating the function, which is still awkward in the C-API.
This commit is contained in:
parent
ca2ca0ce5d
commit
2ce6ac462b
|
@ -507,7 +507,7 @@ struct bNodeTree *ntreeFromID(struct ID *id);
|
|||
|
||||
void ntreeFreeLocalNode(struct bNodeTree *ntree, struct bNode *node);
|
||||
void ntreeFreeLocalTree(struct bNodeTree *ntree);
|
||||
struct bNode *ntreeFindType(const struct bNodeTree *ntree, int type);
|
||||
struct bNode *ntreeFindType(struct bNodeTree *ntree, int type);
|
||||
bool ntreeHasTree(const struct bNodeTree *ntree, const struct bNodeTree *lookup);
|
||||
void ntreeUpdateAllNew(struct Main *main);
|
||||
void ntreeUpdateAllUsers(struct Main *main, struct ID *id);
|
||||
|
@ -629,7 +629,7 @@ const char *nodeStaticSocketLabel(int type, int subtype);
|
|||
} \
|
||||
((void)0)
|
||||
|
||||
struct bNodeSocket *nodeFindSocket(const struct bNode *node,
|
||||
struct bNodeSocket *nodeFindSocket(struct bNode *node,
|
||||
eNodeSocketInOut in_out,
|
||||
const char *identifier);
|
||||
struct bNodeSocket *nodeAddSocket(struct bNodeTree *ntree,
|
||||
|
|
|
@ -1455,7 +1455,7 @@ const char *nodeSocketTypeLabel(const bNodeSocketType *stype)
|
|||
return stype->label[0] != '\0' ? stype->label : RNA_struct_ui_name(stype->ext_socket.srna);
|
||||
}
|
||||
|
||||
bNodeSocket *nodeFindSocket(const bNode *node, eNodeSocketInOut in_out, const char *identifier)
|
||||
bNodeSocket *nodeFindSocket(bNode *node, eNodeSocketInOut in_out, const char *identifier)
|
||||
{
|
||||
const ListBase *sockets = (in_out == SOCK_IN) ? &node->inputs : &node->outputs;
|
||||
LISTBASE_FOREACH (bNodeSocket *, sock, sockets) {
|
||||
|
@ -3437,7 +3437,7 @@ void ntreeRemoveSocketInterface(bNodeTree *ntree, bNodeSocket *sock)
|
|||
|
||||
/* ************ find stuff *************** */
|
||||
|
||||
bNode *ntreeFindType(const bNodeTree *ntree, int type)
|
||||
bNode *ntreeFindType(bNodeTree *ntree, int type)
|
||||
{
|
||||
if (ntree) {
|
||||
LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
|
||||
|
|
|
@ -47,7 +47,7 @@ static void copy_property_from_node(const eNodeSocketDatatype property_type,
|
|||
if (!node) {
|
||||
return;
|
||||
}
|
||||
bNodeSocket *socket{nodeFindSocket(node, SOCK_IN, identifier)};
|
||||
const bNodeSocket *socket = nodeFindSocket(const_cast<bNode *>(node), SOCK_IN, identifier);
|
||||
BLI_assert(socket && socket->type == property_type);
|
||||
if (!socket) {
|
||||
return;
|
||||
|
@ -55,21 +55,21 @@ static void copy_property_from_node(const eNodeSocketDatatype property_type,
|
|||
switch (property_type) {
|
||||
case SOCK_FLOAT: {
|
||||
BLI_assert(r_property.size() == 1);
|
||||
bNodeSocketValueFloat *socket_def_value = static_cast<bNodeSocketValueFloat *>(
|
||||
const bNodeSocketValueFloat *socket_def_value = static_cast<const bNodeSocketValueFloat *>(
|
||||
socket->default_value);
|
||||
r_property[0] = socket_def_value->value;
|
||||
break;
|
||||
}
|
||||
case SOCK_RGBA: {
|
||||
BLI_assert(r_property.size() == 3);
|
||||
bNodeSocketValueRGBA *socket_def_value = static_cast<bNodeSocketValueRGBA *>(
|
||||
const bNodeSocketValueRGBA *socket_def_value = static_cast<const bNodeSocketValueRGBA *>(
|
||||
socket->default_value);
|
||||
copy_v3_v3(r_property.data(), socket_def_value->value);
|
||||
break;
|
||||
}
|
||||
case SOCK_VECTOR: {
|
||||
BLI_assert(r_property.size() == 3);
|
||||
bNodeSocketValueVector *socket_def_value = static_cast<bNodeSocketValueVector *>(
|
||||
const bNodeSocketValueVector *socket_def_value = static_cast<const bNodeSocketValueVector *>(
|
||||
socket->default_value);
|
||||
copy_v3_v3(r_property.data(), socket_def_value->value);
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue