When using clangd or running clang-tidy on headers there are currently many errors. These are noisy in IDEs, make auto fixes impossible, and break features like code completion, refactoring and navigation. This makes source/blender headers work by themselves, which is generally the goal anyway. But #includes and forward declarations were often incomplete. * Add #includes and forward declarations * Add IWYU pragma: export in a few places * Remove some unused #includes (but there are many more) * Tweak ShaderCreateInfo macros to work better with clangd Some types of headers still have errors, these could be fixed or worked around with more investigation. Mostly preprocessor template headers like NOD_static_types.h. Note that that disabling WITH_UNITY_BUILD is required for clangd to work properly, otherwise compile_commands.json does not contain the information for the relevant source files. For more details see the developer docs: https://developer.blender.org/docs/handbook/tooling/clangd/ Pull Request: https://projects.blender.org/blender/blender/pulls/132608
67 lines
2.4 KiB
C++
67 lines
2.4 KiB
C++
/* SPDX-FileCopyrightText: 2007 Blender Authors
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
/** \file
|
|
* \ingroup nodes
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "DNA_node_types.h"
|
|
|
|
struct bNode;
|
|
namespace blender::bke {
|
|
struct bNodeInstanceHash;
|
|
}
|
|
struct bNodeTree;
|
|
|
|
/* data for initializing node execution */
|
|
struct bNodeExecContext {
|
|
blender::bke::bNodeInstanceHash *previews;
|
|
};
|
|
|
|
struct bNodeExecData {
|
|
void *data; /* custom data storage */
|
|
bNodePreview *preview; /* optional preview image */
|
|
};
|
|
|
|
/**** Storage Data ****/
|
|
|
|
void node_free_curves(bNode *node);
|
|
void node_free_standard_storage(bNode *node);
|
|
|
|
void node_copy_curves(bNodeTree *dest_ntree, bNode *dest_node, const bNode *src_node);
|
|
void node_copy_standard_storage(bNodeTree *dest_ntree, bNode *dest_node, const bNode *src_node);
|
|
void *node_initexec_curves(bNodeExecContext *context, bNode *node, bNodeInstanceKey key);
|
|
|
|
/**** Updates ****/
|
|
void node_sock_label(bNodeSocket *sock, const char *name);
|
|
void node_sock_label_clear(bNodeSocket *sock);
|
|
void node_math_update(bNodeTree *ntree, bNode *node);
|
|
|
|
/**** Labels ****/
|
|
void node_blend_label(const bNodeTree *ntree, const bNode *node, char *label, int label_maxncpy);
|
|
void node_image_label(const bNodeTree *ntree, const bNode *node, char *label, int label_maxncpy);
|
|
void node_math_label(const bNodeTree *ntree, const bNode *node, char *label, int label_maxncpy);
|
|
void node_vector_math_label(const bNodeTree *ntree,
|
|
const bNode *node,
|
|
char *label,
|
|
int label_maxncpy);
|
|
void node_filter_label(const bNodeTree *ntree, const bNode *node, char *label, int label_maxncpy);
|
|
void node_combsep_color_label(const ListBase *sockets, NodeCombSepColorMode mode);
|
|
|
|
/*** Link Handling */
|
|
|
|
/**
|
|
* By default there are no links we don't want to connect, when inserting.
|
|
*/
|
|
bool node_insert_link_default(bNodeTree *ntree, bNode *node, bNodeLink *link);
|
|
|
|
float node_socket_get_float(bNodeTree *ntree, bNode *node, bNodeSocket *sock);
|
|
void node_socket_set_float(bNodeTree *ntree, bNode *node, bNodeSocket *sock, float value);
|
|
void node_socket_get_color(bNodeTree *ntree, bNode *node, bNodeSocket *sock, float *value);
|
|
void node_socket_set_color(bNodeTree *ntree, bNode *node, bNodeSocket *sock, const float *value);
|
|
void node_socket_get_vector(bNodeTree *ntree, bNode *node, bNodeSocket *sock, float *value);
|
|
void node_socket_set_vector(bNodeTree *ntree, bNode *node, bNodeSocket *sock, const float *value);
|