Revert "Refactor: Core, give the IDWALK_… enums an explicit name"

This reverts commit 3ef748789d. It was
landed too hastily, my apologies.

Pull Request: https://projects.blender.org/blender/blender/pulls/131813
This commit is contained in:
Sybren A. Stüvel
2024-12-12 20:03:27 +01:00
parent 8cdeecaef8
commit 7d5143e94c
33 changed files with 103 additions and 138 deletions

View File

@@ -9,8 +9,6 @@
#include "DNA_gpencil_modifier_types.h" /* Needed for all enum type definitions. */
#include "BKE_lib_query.hh" /* For LibraryForeachIDCallbackFlag enum. */
#ifdef __cplusplus
extern "C" {
#endif
@@ -26,7 +24,7 @@ struct Object;
typedef void (*GreasePencilIDWalkFunc)(void *user_data,
struct Object *ob,
struct ID **idpoin,
LibraryForeachIDCallbackFlag cb_flag);
int cb_flag);
/**
* Free grease pencil modifier data

View File

@@ -31,7 +31,7 @@ struct LibraryForeachIDData;
struct Main;
/* Tips for the callback for cases it's gonna to modify the pointer. */
enum LibraryForeachIDCallbackFlag {
enum {
IDWALK_CB_NOP = 0,
IDWALK_CB_NEVER_NULL = (1 << 0),
IDWALK_CB_NEVER_SELF = (1 << 1),
@@ -114,7 +114,6 @@ enum LibraryForeachIDCallbackFlag {
IDWALK_CB_OVERRIDE_LIBRARY_HIERARCHY_DEFAULT = (1 << 18),
};
ENUM_OPERATORS(LibraryForeachIDCallbackFlag, IDWALK_CB_OVERRIDE_LIBRARY_HIERARCHY_DEFAULT);
enum {
IDWALK_RET_NOP = 0,
@@ -147,7 +146,7 @@ struct LibraryIDLinkCallbackData {
*/
ID *self_id;
ID **id_pointer;
LibraryForeachIDCallbackFlag cb_flag;
int cb_flag;
};
/**
@@ -158,7 +157,7 @@ struct LibraryIDLinkCallbackData {
using LibraryIDLinkCallback = int(LibraryIDLinkCallbackData *cb_data);
/* Flags for the foreach function itself. */
enum LibraryForeachIDFlag {
enum {
IDWALK_NOP = 0,
/**
* The callback will never modify the ID pointers it processes.
@@ -230,20 +229,17 @@ enum LibraryForeachIDFlag {
* proper lib_linking and expanding of older files). */
IDWALK_DO_DEPRECATED_POINTERS = (1 << 11),
};
ENUM_OPERATORS(LibraryForeachIDFlag, IDWALK_DO_DEPRECATED_POINTERS);
/**
* Check whether current iteration over ID usages should be stopped or not.
* \return true if the iteration should be stopped, false otherwise.
*/
bool BKE_lib_query_foreachid_iter_stop(const LibraryForeachIDData *data);
void BKE_lib_query_foreachid_process(LibraryForeachIDData *data,
ID **id_pp,
LibraryForeachIDCallbackFlag cb_flag);
LibraryForeachIDFlag BKE_lib_query_foreachid_process_flags_get(const LibraryForeachIDData *data);
void BKE_lib_query_foreachid_process(LibraryForeachIDData *data, ID **id_pp, int cb_flag);
int BKE_lib_query_foreachid_process_flags_get(const LibraryForeachIDData *data);
Main *BKE_lib_query_foreachid_process_main_get(const LibraryForeachIDData *data);
int BKE_lib_query_foreachid_process_callback_flag_override(LibraryForeachIDData *data,
LibraryForeachIDCallbackFlag cb_flag,
int cb_flag,
bool do_replace);
/** Should typically only be used when processing deprecated ID types (like IPO ones). */
@@ -311,7 +307,7 @@ void BKE_library_foreach_ID_link(Main *bmain,
ID *id,
blender::FunctionRef<LibraryIDLinkCallback> callback,
void *user_data,
LibraryForeachIDFlag flag);
int flag);
/**
* Apply `callback` to all ID usages of the data as defined by `subdata_foreach_id`. Useful to e.g.
@@ -349,7 +345,7 @@ void BKE_library_foreach_subdata_id(
blender::FunctionRef<void(LibraryForeachIDData *data)> subdata_foreach_id,
blender::FunctionRef<LibraryIDLinkCallback> callback,
void *user_data,
const LibraryForeachIDFlag flag);
const int flag);
/**
* Re-usable function, use when replacing ID's.

View File

@@ -25,8 +25,6 @@
#include "BLI_compiler_attrs.h"
#include "BLI_sys_types.h"
#include "BKE_lib_query.hh" /* For LibraryForeachIDCallbackFlag. */
struct BLI_mempool;
struct BlendThumbnail;
struct GHash;
@@ -61,7 +59,7 @@ struct MainIDRelationsEntryItem {
/* Session uid of the `id_pointer`. */
uint session_uid;
LibraryForeachIDCallbackFlag usage_flag; /* Using IDWALK_ enums, defined in BKE_lib_query.hh */
int usage_flag; /* Using IDWALK_ enums, defined in BKE_lib_query.hh */
};
struct MainIDRelationsEntry {

View File

@@ -11,8 +11,6 @@
#include "BLI_math_matrix_types.hh"
#include "BLI_span.hh"
#include "BKE_lib_query.hh" /* For LibraryForeachIDCallbackFlag. */
#include "DNA_modifier_types.h" /* Needed for all enum type definitions. */
#include "DNA_customdata_types.h"
@@ -130,10 +128,7 @@ enum ModifierTypeFlag {
};
ENUM_OPERATORS(ModifierTypeFlag, eModifierTypeFlag_AcceptsGreasePencil)
using IDWalkFunc = void (*)(void *user_data,
Object *ob,
ID **idpoin,
LibraryForeachIDCallbackFlag cb_flag);
using IDWalkFunc = void (*)(void *user_data, Object *ob, ID **idpoin, int cb_flag);
using TexWalkFunc = void (*)(void *user_data,
Object *ob,
ModifierData *md,

View File

@@ -17,8 +17,6 @@
#include "BLI_ordered_edge.hh"
#include "BLI_utildefines.h"
#include "BKE_lib_query.hh" /* For LibraryForeachIDCallbackFlag. */
#include "DNA_particle_types.h"
#ifdef __cplusplus
@@ -535,7 +533,7 @@ void particle_system_update(struct Depsgraph *depsgraph,
typedef void (*ParticleSystemIDFunc)(struct ParticleSystem *psys,
struct ID **idpoin,
void *userdata,
LibraryForeachIDCallbackFlag cb_flag);
int cb_flag);
void BKE_particlesystem_id_loop(struct ParticleSystem *psys,
ParticleSystemIDFunc func,

View File

@@ -9,8 +9,6 @@
#pragma once
#include "BKE_lib_query.hh" /* For LibraryForeachIDCallbackFlag enum. */
#ifdef __cplusplus
extern "C" {
#endif
@@ -61,7 +59,7 @@ void BKE_rigidbody_object_copy(struct Main *bmain,
typedef void (*RigidbodyWorldIDFunc)(struct RigidBodyWorld *rbw,
struct ID **idpoin,
void *userdata,
LibraryForeachIDCallbackFlag cb_flag);
int cb_flag);
void BKE_rigidbody_world_id_loop(struct RigidBodyWorld *rbw,
RigidbodyWorldIDFunc func,

View File

@@ -10,8 +10,6 @@
#include "BLI_compiler_attrs.h"
#include "DNA_shader_fx_types.h" /* Needed for all enum type definitions. */
#include "BKE_lib_query.hh" /* For LibraryForeachIDCallbackFlag enum. */
#ifdef __cplusplus
extern "C" {
#endif
@@ -56,7 +54,7 @@ typedef enum {
typedef void (*ShaderFxIDWalkFunc)(void *user_data,
struct Object *ob,
struct ID **idpoin,
LibraryForeachIDCallbackFlag cb_flag);
int cb_flag);
typedef void (*ShaderFxTexWalkFunc)(void *user_data,
struct Object *ob,
struct ShaderFxData *fx,

View File

@@ -256,10 +256,10 @@ static void action_foreach_id(ID *id, LibraryForeachIDData *data)
* NOTE: early-returns by BKE_LIB_FOREACHID_PROCESS_... macros are forbidden in non-readonly
* cases (see #IDWALK_RET_STOP_ITER documentation). */
const LibraryForeachIDFlag flag = BKE_lib_query_foreachid_process_flags_get(data);
const int flag = BKE_lib_query_foreachid_process_flags_get(data);
const bool is_readonly = flag & IDWALK_READONLY;
constexpr LibraryForeachIDCallbackFlag idwalk_flags = IDWALK_CB_NEVER_SELF | IDWALK_CB_LOOPBACK;
constexpr int idwalk_flags = IDWALK_CB_NEVER_SELF | IDWALK_CB_LOOPBACK;
Main *bmain = BKE_lib_query_foreachid_process_main_get(data);

View File

@@ -779,7 +779,7 @@ static void reuse_bmain_data_invalid_local_usages_fix(ReuseOldBMainData *reuse_d
nullptr;
BKE_library_foreach_ID_link(
new_bmain, id_iter, reuse_bmain_data_invalid_local_usages_fix_cb, reuse_data, IDWALK_NOP);
new_bmain, id_iter, reuse_bmain_data_invalid_local_usages_fix_cb, reuse_data, 0);
/* Liboverrides who lost their reference should not be liboverrides anymore, but regular IDs.
*/

View File

@@ -239,11 +239,11 @@ static void collection_foreach_id(ID *id, LibraryForeachIDData *data)
LISTBASE_FOREACH (CollectionParent *, parent, &collection->runtime.parents) {
/* XXX This is very weak. The whole idea of keeping pointers to private IDs is very bad
* anyway... */
const LibraryForeachIDCallbackFlag cb_flag =
((parent->collection != nullptr && (data_flags & IDWALK_NO_ORIG_POINTERS_ACCESS) == 0 &&
(parent->collection->id.flag & ID_FLAG_EMBEDDED_DATA) != 0) ?
IDWALK_CB_EMBEDDED_NOT_OWNING :
IDWALK_CB_NOP);
const int cb_flag = ((parent->collection != nullptr &&
(data_flags & IDWALK_NO_ORIG_POINTERS_ACCESS) == 0 &&
(parent->collection->id.flag & ID_FLAG_EMBEDDED_DATA) != 0) ?
IDWALK_CB_EMBEDDED_NOT_OWNING :
IDWALK_CB_NOP);
BKE_LIB_FOREACHID_PROCESS_IDSUPER(
data, parent->collection, IDWALK_CB_NEVER_SELF | IDWALK_CB_LOOPBACK | cb_flag);
}

View File

@@ -356,7 +356,7 @@ static void gpencil_modifier_foreach_ID_link(GpencilModifierData *md,
static void modifier_free_data_id_us_cb(void * /*user_data*/,
Object * /*ob*/,
ID **idpoin,
const LibraryForeachIDCallbackFlag cb_flag)
int cb_flag)
{
ID *id = *idpoin;
if (id != nullptr && (cb_flag & IDWALK_CB_USER) != 0) {

View File

@@ -621,7 +621,7 @@ static int id_copy_libmanagement_cb(LibraryIDLinkCallbackData *cb_data)
{
ID **id_pointer = cb_data->id_pointer;
ID *id = *id_pointer;
const LibraryForeachIDCallbackFlag cb_flag = cb_data->cb_flag;
const int cb_flag = cb_data->cb_flag;
IDCopyLibManagementData *data = static_cast<IDCopyLibManagementData *>(cb_data->user_data);
/* Remap self-references to new copied ID. */
@@ -1063,7 +1063,7 @@ bool id_single_user(bContext *C, ID *id, PointerRNA *ptr, PropertyRNA *prop)
static int libblock_management_us_plus(LibraryIDLinkCallbackData *cb_data)
{
ID **id_pointer = cb_data->id_pointer;
const LibraryForeachIDCallbackFlag cb_flag = cb_data->cb_flag;
const int cb_flag = cb_data->cb_flag;
if (cb_flag & IDWALK_CB_USER) {
id_us_plus(*id_pointer);
}
@@ -1077,7 +1077,7 @@ static int libblock_management_us_plus(LibraryIDLinkCallbackData *cb_data)
static int libblock_management_us_min(LibraryIDLinkCallbackData *cb_data)
{
ID **id_pointer = cb_data->id_pointer;
const LibraryForeachIDCallbackFlag cb_flag = cb_data->cb_flag;
const int cb_flag = cb_data->cb_flag;
if (cb_flag & IDWALK_CB_USER) {
id_us_min(*id_pointer);
}
@@ -1950,7 +1950,7 @@ void BKE_main_id_newptr_and_tag_clear(Main *bmain)
static int id_refcount_recompute_callback(LibraryIDLinkCallbackData *cb_data)
{
ID **id_pointer = cb_data->id_pointer;
const LibraryForeachIDCallbackFlag cb_flag = cb_data->cb_flag;
const int cb_flag = cb_data->cb_flag;
const bool do_linked_only = bool(POINTER_AS_INT(cb_data->user_data));
if (*id_pointer == nullptr) {

View File

@@ -44,11 +44,11 @@ struct LibraryForeachIDData {
ID *self_id;
/** Flags controlling the behavior of the 'foreach id' looping code. */
LibraryForeachIDFlag flag;
int flag;
/** Generic flags to be passed to all callback calls for current processed data. */
LibraryForeachIDCallbackFlag cb_flag;
int cb_flag;
/** Callback flags that are forbidden for all callback calls for current processed data. */
LibraryForeachIDCallbackFlag cb_flag_clear;
int cb_flag_clear;
/* Function to call for every ID pointers of current processed data, and its opaque user data
* pointer. */
@@ -68,20 +68,18 @@ bool BKE_lib_query_foreachid_iter_stop(const LibraryForeachIDData *data)
return (data->status & IDWALK_STOP) != 0;
}
void BKE_lib_query_foreachid_process(LibraryForeachIDData *data,
ID **id_pp,
LibraryForeachIDCallbackFlag cb_flag)
void BKE_lib_query_foreachid_process(LibraryForeachIDData *data, ID **id_pp, int cb_flag)
{
if (BKE_lib_query_foreachid_iter_stop(data)) {
return;
}
const LibraryForeachIDFlag flag = data->flag;
const int flag = data->flag;
ID *old_id = *id_pp;
/* Update the callback flags with the ones defined (or forbidden) in `data` by the generic
* caller code. */
cb_flag = LibraryForeachIDCallbackFlag((cb_flag | data->cb_flag) & ~data->cb_flag_clear);
cb_flag = ((cb_flag | data->cb_flag) & ~data->cb_flag_clear);
/* Update the callback flags with some extra information regarding overrides: all 'loopback',
* 'internal', 'embedded' etc. ID pointers are never overridable. */
@@ -119,7 +117,7 @@ void BKE_lib_query_foreachid_process(LibraryForeachIDData *data,
}
}
LibraryForeachIDFlag BKE_lib_query_foreachid_process_flags_get(const LibraryForeachIDData *data)
int BKE_lib_query_foreachid_process_flags_get(const LibraryForeachIDData *data)
{
return data->flag;
}
@@ -129,10 +127,11 @@ Main *BKE_lib_query_foreachid_process_main_get(const LibraryForeachIDData *data)
return data->bmain;
}
int BKE_lib_query_foreachid_process_callback_flag_override(
LibraryForeachIDData *data, const LibraryForeachIDCallbackFlag cb_flag, const bool do_replace)
int BKE_lib_query_foreachid_process_callback_flag_override(LibraryForeachIDData *data,
const int cb_flag,
const bool do_replace)
{
const LibraryForeachIDCallbackFlag cb_flag_backup = data->cb_flag;
const int cb_flag_backup = data->cb_flag;
if (do_replace) {
data->cb_flag = cb_flag;
}
@@ -147,7 +146,7 @@ static bool library_foreach_ID_link(Main *bmain,
ID *id,
blender::FunctionRef<LibraryIDLinkCallback> callback,
void *user_data,
LibraryForeachIDFlag flag,
int flag,
LibraryForeachIDData *inherit_data);
void BKE_lib_query_idpropertiesForeachIDLink_callback(IDProperty *id_prop, void *user_data)
@@ -155,10 +154,9 @@ void BKE_lib_query_idpropertiesForeachIDLink_callback(IDProperty *id_prop, void
BLI_assert(id_prop->type == IDP_ID);
LibraryForeachIDData *data = (LibraryForeachIDData *)user_data;
const LibraryForeachIDCallbackFlag cb_flag = IDWALK_CB_USER |
((id_prop->flag & IDP_FLAG_OVERRIDABLE_LIBRARY) ?
IDWALK_CB_NOP :
IDWALK_CB_OVERRIDE_LIBRARY_NOT_OVERRIDABLE);
const int cb_flag = IDWALK_CB_USER | ((id_prop->flag & IDP_FLAG_OVERRIDABLE_LIBRARY) ?
0 :
IDWALK_CB_OVERRIDE_LIBRARY_NOT_OVERRIDABLE);
BKE_LIB_FOREACHID_PROCESS_ID(data, id_prop->data.pointer, cb_flag);
}
@@ -166,7 +164,7 @@ void BKE_library_foreach_ID_embedded(LibraryForeachIDData *data, ID **id_pp)
{
/* Needed e.g. for callbacks handling relationships. This call should be absolutely read-only. */
ID *id = *id_pp;
const LibraryForeachIDFlag flag = data->flag;
const int flag = data->flag;
BKE_lib_query_foreachid_process(data, id_pp, IDWALK_CB_EMBEDDED);
if (BKE_lib_query_foreachid_iter_stop(data)) {
@@ -212,7 +210,7 @@ static bool library_foreach_ID_link(Main *bmain,
ID *id,
blender::FunctionRef<LibraryIDLinkCallback> callback,
void *user_data,
LibraryForeachIDFlag flag,
int flag,
LibraryForeachIDData *inherit_data)
{
LibraryForeachIDData data{};
@@ -306,11 +304,11 @@ static bool library_foreach_ID_link(Main *bmain,
* In that case, we do not want to generate those 'generic flags' from our current sub-data ID
* (the node tree), but re-use those generated for the 'owner' ID (the material). */
if (inherit_data == nullptr) {
data.cb_flag = ID_IS_LINKED(id) ? IDWALK_CB_INDIRECT_USAGE : IDWALK_CB_NOP;
data.cb_flag = ID_IS_LINKED(id) ? IDWALK_CB_INDIRECT_USAGE : 0;
/* When an ID is defined as not reference-counting its ID usages, it should never do it. */
data.cb_flag_clear = (id->tag & ID_TAG_NO_USER_REFCOUNT) ?
IDWALK_CB_USER | IDWALK_CB_USER_ONE :
IDWALK_CB_NOP;
0;
}
else {
data.cb_flag = inherit_data->cb_flag;
@@ -417,7 +415,7 @@ void BKE_library_foreach_ID_link(Main *bmain,
ID *id,
blender::FunctionRef<LibraryIDLinkCallback> callback,
void *user_data,
const LibraryForeachIDFlag flag)
int flag)
{
library_foreach_ID_link(bmain, nullptr, id, callback, user_data, flag, nullptr);
}
@@ -440,7 +438,7 @@ void BKE_library_foreach_subdata_id(
blender::FunctionRef<void(LibraryForeachIDData *data)> subdata_foreach_id,
blender::FunctionRef<LibraryIDLinkCallback> callback,
void *user_data,
const LibraryForeachIDFlag flag)
const int flag)
{
BLI_assert((flag & (IDWALK_RECURSE | IDWALK_DO_INTERNAL_RUNTIME_POINTERS |
IDWALK_DO_LIBRARY_POINTER | IDWALK_INCLUDE_UI)) == 0);
@@ -521,7 +519,7 @@ struct IDUsersIter {
static int foreach_libblock_id_users_callback(LibraryIDLinkCallbackData *cb_data)
{
ID **id_p = cb_data->id_pointer;
const LibraryForeachIDCallbackFlag cb_flag = cb_data->cb_flag;
const int cb_flag = cb_data->cb_flag;
IDUsersIter *iter = static_cast<IDUsersIter *>(cb_data->user_data);
if (*id_p) {
@@ -982,7 +980,7 @@ static int foreach_libblock_used_linked_data_tag_clear_cb(LibraryIDLinkCallbackD
{
ID *self_id = cb_data->self_id;
ID **id_p = cb_data->id_pointer;
const LibraryForeachIDCallbackFlag cb_flag = cb_data->cb_flag;
const int cb_flag = cb_data->cb_flag;
bool *is_changed = static_cast<bool *>(cb_data->user_data);
if (*id_p) {

View File

@@ -173,7 +173,7 @@ static void foreach_libblock_remap_callback_apply(ID *id_owner,
static int foreach_libblock_remap_callback(LibraryIDLinkCallbackData *cb_data)
{
const LibraryForeachIDCallbackFlag cb_flag = cb_data->cb_flag;
const int cb_flag = cb_data->cb_flag;
/* NOTE: Support remapping of `IDWALK_CB_EMBEDDED_NON_OWNING` pointers, this is necessary in some
* complex low-level ID manipulation cases (e.g. in ID swapping, see #BKE_lib_id_swap & co).
@@ -496,16 +496,17 @@ static void libblock_remap_data(
};
const bool include_ui = (remap_flags & ID_REMAP_FORCE_UI_POINTERS) != 0;
const LibraryForeachIDFlag foreach_id_flags =
(((remap_flags & ID_REMAP_FORCE_INTERNAL_RUNTIME_POINTERS) != 0 ?
IDWALK_DO_INTERNAL_RUNTIME_POINTERS :
IDWALK_NOP) |
(include_ui ? IDWALK_INCLUDE_UI : IDWALK_NOP) |
const int foreach_id_flags = (((remap_flags & ID_REMAP_FORCE_INTERNAL_RUNTIME_POINTERS) != 0 ?
IDWALK_DO_INTERNAL_RUNTIME_POINTERS :
IDWALK_NOP) |
(include_ui ? IDWALK_INCLUDE_UI : IDWALK_NOP) |
((remap_flags & ID_REMAP_NO_ORIG_POINTERS_ACCESS) != 0 ? IDWALK_NO_ORIG_POINTERS_ACCESS :
IDWALK_NOP) |
((remap_flags & ID_REMAP_DO_LIBRARY_POINTERS) != 0 ? IDWALK_DO_LIBRARY_POINTER :
IDWALK_NOP));
((remap_flags & ID_REMAP_NO_ORIG_POINTERS_ACCESS) != 0 ?
IDWALK_NO_ORIG_POINTERS_ACCESS :
IDWALK_NOP) |
((remap_flags & ID_REMAP_DO_LIBRARY_POINTERS) != 0 ?
IDWALK_DO_LIBRARY_POINTER :
IDWALK_NOP));
id_remapper.iter(libblock_remap_reset_remapping_status_fn);
@@ -880,7 +881,7 @@ static void libblock_relink_to_newid_prepare_data(Main *bmain,
RelinkToNewIDData *relink_data);
static int id_relink_to_newid_looper(LibraryIDLinkCallbackData *cb_data)
{
const LibraryForeachIDCallbackFlag cb_flag = cb_data->cb_flag;
const int cb_flag = cb_data->cb_flag;
/* NOTE: For now, support remapping `IDWALK_CB_EMBEDDED_NON_OWNING` pointers. */
if (cb_flag & (IDWALK_CB_EMBEDDED | IDWALK_CB_OVERRIDE_LIBRARY_REFERENCE)) {
return IDWALK_RET_NOP;
@@ -914,7 +915,7 @@ static void libblock_relink_to_newid_prepare_data(Main *bmain,
id->tag &= ~ID_TAG_NEW;
relink_data->ids.append(id);
BKE_library_foreach_ID_link(bmain, id, id_relink_to_newid_looper, relink_data, IDWALK_NOP);
BKE_library_foreach_ID_link(bmain, id, id_relink_to_newid_looper, relink_data, 0);
}
void BKE_libblock_relink_to_newid(Main *bmain, ID *id, const int remap_flag)

View File

@@ -491,7 +491,7 @@ static int main_relations_create_idlink_cb(LibraryIDLinkCallbackData *cb_data)
MainIDRelations *bmain_relations = static_cast<MainIDRelations *>(cb_data->user_data);
ID *self_id = cb_data->self_id;
ID **id_pointer = cb_data->id_pointer;
const LibraryForeachIDCallbackFlag cb_flag = cb_data->cb_flag;
const int cb_flag = cb_data->cb_flag;
if (*id_pointer) {
MainIDRelationsEntry **entry_p;
@@ -558,10 +558,8 @@ void BKE_main_relations_create(Main *bmain, const short flag)
ID *id;
FOREACH_MAIN_ID_BEGIN (bmain, id) {
const LibraryForeachIDFlag idwalk_flag = IDWALK_READONLY |
((flag & MAINIDRELATIONS_INCLUDE_UI) != 0 ?
IDWALK_INCLUDE_UI :
IDWALK_NOP);
const int idwalk_flag = IDWALK_READONLY |
((flag & MAINIDRELATIONS_INCLUDE_UI) != 0 ? IDWALK_INCLUDE_UI : 0);
/* Ensure all IDs do have an entry, even if they are not connected to any other. */
MainIDRelationsEntry **entry_p;

View File

@@ -905,7 +905,7 @@ static int foreach_libblock_make_usercounts_callback(LibraryIDLinkCallbackData *
return IDWALK_RET_NOP;
}
const LibraryForeachIDCallbackFlag cb_flag = cb_data->cb_flag;
const int cb_flag = cb_data->cb_flag;
if (cb_flag & IDWALK_CB_USER) {
id_us_plus(*id_p);
}

View File

@@ -167,7 +167,7 @@ ModifierData *BKE_modifier_new(int type)
static void modifier_free_data_id_us_cb(void * /*user_data*/,
Object * /*ob*/,
ID **idpoin,
const LibraryForeachIDCallbackFlag cb_flag)
int cb_flag)
{
ID *id = *idpoin;
if (id != nullptr && (cb_flag & IDWALK_CB_USER) != 0) {
@@ -335,7 +335,7 @@ void BKE_modifier_copydata_generic(const ModifierData *md_src,
static void modifier_copy_data_id_us_cb(void * /*user_data*/,
Object * /*ob*/,
ID **idpoin,
const LibraryForeachIDCallbackFlag cb_flag)
int cb_flag)
{
ID *id = *idpoin;
if (id != nullptr && (cb_flag & IDWALK_CB_USER) != 0) {

View File

@@ -350,18 +350,17 @@ static void object_free_data(ID *id)
static void library_foreach_modifiersForeachIDLink(void *user_data,
Object * /*object*/,
ID **id_pointer,
const LibraryForeachIDCallbackFlag cb_flag)
int cb_flag)
{
LibraryForeachIDData *data = (LibraryForeachIDData *)user_data;
BKE_LIB_FOREACHID_PROCESS_FUNCTION_CALL(
data, BKE_lib_query_foreachid_process(data, id_pointer, cb_flag));
}
static void library_foreach_gpencil_modifiersForeachIDLink(
void *user_data,
Object * /*object*/,
ID **id_pointer,
const LibraryForeachIDCallbackFlag cb_flag)
static void library_foreach_gpencil_modifiersForeachIDLink(void *user_data,
Object * /*object*/,
ID **id_pointer,
int cb_flag)
{
LibraryForeachIDData *data = (LibraryForeachIDData *)user_data;
BKE_LIB_FOREACHID_PROCESS_FUNCTION_CALL(
@@ -371,7 +370,7 @@ static void library_foreach_gpencil_modifiersForeachIDLink(
static void library_foreach_shaderfxForeachIDLink(void *user_data,
Object * /*object*/,
ID **id_pointer,
const LibraryForeachIDCallbackFlag cb_flag)
int cb_flag)
{
LibraryForeachIDData *data = (LibraryForeachIDData *)user_data;
BKE_LIB_FOREACHID_PROCESS_FUNCTION_CALL(
@@ -384,7 +383,7 @@ static void library_foreach_constraintObjectLooper(bConstraint * /*con*/,
void *user_data)
{
LibraryForeachIDData *data = (LibraryForeachIDData *)user_data;
const LibraryForeachIDCallbackFlag cb_flag = is_reference ? IDWALK_CB_USER : IDWALK_CB_NOP;
const int cb_flag = is_reference ? IDWALK_CB_USER : IDWALK_CB_NOP;
BKE_LIB_FOREACHID_PROCESS_FUNCTION_CALL(
data, BKE_lib_query_foreachid_process(data, id_pointer, cb_flag));
}
@@ -392,7 +391,7 @@ static void library_foreach_constraintObjectLooper(bConstraint * /*con*/,
static void library_foreach_particlesystemsObjectLooper(ParticleSystem * /*psys*/,
ID **id_pointer,
void *user_data,
const LibraryForeachIDCallbackFlag cb_flag)
int cb_flag)
{
LibraryForeachIDData *data = (LibraryForeachIDData *)user_data;
BKE_LIB_FOREACHID_PROCESS_FUNCTION_CALL(

View File

@@ -5020,7 +5020,7 @@ struct ParticleSystemIDLoopForModifier {
static void particlesystem_modifiersForeachIDLink(void *user_data,
Object * /*object*/,
ID **id_pointer,
const LibraryForeachIDCallbackFlag cb_flag)
int cb_flag)
{
ParticleSystemIDLoopForModifier *data = (ParticleSystemIDLoopForModifier *)user_data;
data->func(data->psys, id_pointer, data->userdata, cb_flag);

View File

@@ -468,7 +468,7 @@ static void scene_free_data(ID *id)
static void scene_foreach_rigidbodyworldSceneLooper(RigidBodyWorld * /*rbw*/,
ID **id_pointer,
void *user_data,
const LibraryForeachIDCallbackFlag cb_flag)
int cb_flag)
{
LibraryForeachIDData *data = (LibraryForeachIDData *)user_data;
BKE_LIB_FOREACHID_PROCESS_FUNCTION_CALL(
@@ -787,8 +787,7 @@ static void scene_foreach_layer_collection(LibraryForeachIDData *data,
if ((data_flags & IDWALK_NO_ORIG_POINTERS_ACCESS) == 0 && lc->collection != nullptr) {
BLI_assert(is_master == ((lc->collection->id.flag & ID_FLAG_EMBEDDED_DATA) != 0));
}
const LibraryForeachIDCallbackFlag cb_flag = is_master ? IDWALK_CB_EMBEDDED_NOT_OWNING :
IDWALK_CB_NOP;
const int cb_flag = is_master ? IDWALK_CB_EMBEDDED_NOT_OWNING : IDWALK_CB_NOP;
BKE_LIB_FOREACHID_PROCESS_IDSUPER(data, lc->collection, cb_flag | IDWALK_CB_DIRECT_WEAK_LINK);
scene_foreach_layer_collection(data, &lc->layer_collections, false);
}

View File

@@ -79,7 +79,7 @@ ShaderFxData *BKE_shaderfx_new(int type)
static void shaderfx_free_data_id_us_cb(void * /*user_data*/,
Object * /*ob*/,
ID **idpoin,
const LibraryForeachIDCallbackFlag cb_flag)
int cb_flag)
{
ID *id = *idpoin;
if (id != nullptr && (cb_flag & IDWALK_CB_USER) != 0) {
@@ -175,7 +175,7 @@ void BKE_shaderfx_copydata_generic(const ShaderFxData *fx_src, ShaderFxData *fx_
static void shaderfx_copy_data_id_us_cb(void * /*user_data*/,
Object * /*ob*/,
ID **idpoin,
const LibraryForeachIDCallbackFlag cb_flag)
int cb_flag)
{
ID *id = *idpoin;
if (id != nullptr && (cb_flag & IDWALK_CB_USER) != 0) {

View File

@@ -3334,10 +3334,8 @@ static void lib_link_all(FileData *fd, Main *bmain)
if ((id->tag & ID_TAG_NEED_LINK) != 0) {
/* Not all original pointer values can be considered as valid.
* Handling of DNA deprecated data should never be needed in undo case. */
const LibraryForeachIDFlag flag = IDWALK_NO_ORIG_POINTERS_ACCESS | IDWALK_INCLUDE_UI |
((fd->flags & FD_FLAGS_IS_MEMFILE) ?
IDWALK_NOP :
IDWALK_DO_DEPRECATED_POINTERS);
const int flag = IDWALK_NO_ORIG_POINTERS_ACCESS | IDWALK_INCLUDE_UI |
((fd->flags & FD_FLAGS_IS_MEMFILE) ? 0 : IDWALK_DO_DEPRECATED_POINTERS);
BKE_library_foreach_ID_link(bmain, id, lib_link_cb, &reader, flag);
after_liblink_id_process(&reader, id);
@@ -4250,10 +4248,10 @@ void BLO_expand_main(void *fdhandle, Main *mainvar, BLOExpandDoitCallback callba
* Expanding should _not_ require processing of UI ID pointers.
* Expanding should never modify ID pointers themselves.
* Handling of DNA deprecated data should never be needed in undo case. */
const LibraryForeachIDFlag flag = IDWALK_READONLY | IDWALK_NO_ORIG_POINTERS_ACCESS |
((!fd || (fd->flags & FD_FLAGS_IS_MEMFILE)) ?
IDWALK_NOP :
IDWALK_DO_DEPRECATED_POINTERS);
const int flag = IDWALK_READONLY | IDWALK_NO_ORIG_POINTERS_ACCESS |
((!fd || (fd->flags & FD_FLAGS_IS_MEMFILE)) ?
0 :
IDWALK_DO_DEPRECATED_POINTERS);
BKE_library_foreach_ID_link(nullptr, id_iter, expand_cb, &expander, flag);
do_it = true;

View File

@@ -1244,7 +1244,7 @@ static int write_id_direct_linked_data_process_cb(LibraryIDLinkCallbackData *cb_
{
ID *self_id = cb_data->self_id;
ID *id = *cb_data->id_pointer;
const LibraryForeachIDCallbackFlag cb_flag = cb_data->cb_flag;
const int cb_flag = cb_data->cb_flag;
if (id == nullptr || !ID_IS_LINKED(id)) {
return IDWALK_RET_NOP;

View File

@@ -2316,7 +2316,7 @@ void DepsgraphNodeBuilder::build_scene_speakers(Scene *scene, ViewLayer *view_la
void DepsgraphNodeBuilder::modifier_walk(void *user_data,
Object * /*object*/,
ID **idpoin,
LibraryForeachIDCallbackFlag /*cb_flag*/)
int /*cb_flag*/)
{
BuilderWalkUserData *data = (BuilderWalkUserData *)user_data;
ID *id = *idpoin;

View File

@@ -10,8 +10,6 @@
#include "BLI_span.hh"
#include "BKE_lib_query.hh" /* For LibraryForeachIDCallbackFlag enum. */
#include "intern/builder/deg_builder.h"
#include "intern/builder/deg_builder_key.h"
#include "intern/builder/deg_builder_map.h"
@@ -313,7 +311,7 @@ class DepsgraphNodeBuilder : public DepsgraphBuilder {
static void modifier_walk(void *user_data,
struct Object *object,
struct ID **idpoin,
LibraryForeachIDCallbackFlag cb_flag);
int cb_flag);
static void constraint_walk(bConstraint *constraint,
ID **idpoin,
bool is_reference,

View File

@@ -3633,7 +3633,7 @@ void DepsgraphRelationBuilder::build_copy_on_write_relations(IDNode *id_node)
void DepsgraphRelationBuilder::modifier_walk(void *user_data,
Object * /*object*/,
ID **idpoin,
LibraryForeachIDCallbackFlag /*cb_flag*/)
int /*cb_flag*/)
{
BuilderWalkUserData *data = (BuilderWalkUserData *)user_data;
ID *id = *idpoin;

View File

@@ -21,8 +21,6 @@
#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "BKE_lib_query.hh" /* For LibraryForeachIDCallbackFlag enum. */
#include "intern/builder/deg_builder.h"
#include "intern/builder/deg_builder_key.h"
#include "intern/builder/deg_builder_map.h"
@@ -338,7 +336,7 @@ class DepsgraphRelationBuilder : public DepsgraphBuilder {
static void modifier_walk(void *user_data,
struct Object *object,
struct ID **idpoin,
LibraryForeachIDCallbackFlag cb_flag);
int cb_flag);
static void constraint_walk(bConstraint *con, ID **idpoin, bool is_reference, void *user_data);

View File

@@ -2770,10 +2770,7 @@ struct tAnimFilterModifiersContext {
};
/* dependency walker callback for modifier dependencies */
static void animfilter_modifier_idpoin_cb(void *afm_ptr,
Object *ob,
ID **idpoin,
LibraryForeachIDCallbackFlag /*cb_flag*/)
static void animfilter_modifier_idpoin_cb(void *afm_ptr, Object *ob, ID **idpoin, int /*cb_flag*/)
{
tAnimFilterModifiersContext *afm = (tAnimFilterModifiersContext *)afm_ptr;
ID *owner_id = &ob->id;

View File

@@ -571,7 +571,7 @@ static int gather_frames_to_render_for_id(LibraryIDLinkCallbackData *cb_data)
ID *id = *id_p;
ID *self_id = cb_data->self_id;
const LibraryForeachIDCallbackFlag cb_flag = cb_data->cb_flag;
const int cb_flag = cb_data->cb_flag;
if (cb_flag == IDWALK_CB_LOOPBACK || id == self_id) {
/* IDs may end up referencing themselves one way or the other, and those
* (the self_id ones) have always already been processed. */

View File

@@ -503,12 +503,10 @@ static void outliner_foreach_id(SpaceLink *space_link, LibraryForeachIDData *dat
if (TSE_IS_REAL_ID(tselem)) {
/* NOTE: Outliner ID pointers are never `IDWALK_CB_DIRECT_WEAK_LINK`, they should never
* enforce keeping a reference to some linked data. */
const LibraryForeachIDCallbackFlag cb_flag = (tselem->id != nullptr &&
allow_pointer_access &&
(tselem->id->flag & ID_FLAG_EMBEDDED_DATA) !=
IDWALK_CB_NOP) ?
IDWALK_CB_EMBEDDED_NOT_OWNING :
IDWALK_CB_NOP;
const int cb_flag = (tselem->id != nullptr && allow_pointer_access &&
(tselem->id->flag & ID_FLAG_EMBEDDED_DATA) != 0) ?
IDWALK_CB_EMBEDDED_NOT_OWNING :
IDWALK_CB_NOP;
BKE_LIB_FOREACHID_PROCESS_ID(data, tselem->id, cb_flag);
}
else if (!is_readonly) {

View File

@@ -261,7 +261,7 @@ static void foreach_ID_link(ModifierData *md, Object *ob, IDWalkFunc walk, void
{
SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md;
walk(user_data, ob, (ID **)&smd->target, IDWALK_CB_NOP);
walk(user_data, ob, (ID **)&smd->target, IDWALK_NOP);
}
static void update_depsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)

View File

@@ -68,7 +68,7 @@ static int foreach_libblock_id_user_map_callback(LibraryIDLinkCallbackData *cb_d
if (*id_p) {
IDUserMapData *data = static_cast<IDUserMapData *>(cb_data->user_data);
const LibraryForeachIDCallbackFlag cb_flag = cb_data->cb_flag;
const int cb_flag = cb_data->cb_flag;
if (data->types_bitmap) {
if (!id_check_type(*id_p, data->types_bitmap)) {
@@ -247,7 +247,7 @@ static PyObject *bpy_user_map(PyObject * /*self*/, PyObject *args, PyObject *kwd
data_cb.id_curr = id;
BKE_library_foreach_ID_link(
nullptr, id, foreach_libblock_id_user_map_callback, &data_cb, IDWALK_NOP);
nullptr, id, foreach_libblock_id_user_map_callback, &data_cb, IDWALK_CB_NOP);
if (data_cb.py_id_curr) {
Py_DECREF(data_cb.py_id_curr);

View File

@@ -3794,7 +3794,7 @@ static void previews_id_ensure(bContext *C, Scene *scene, ID *id)
static int previews_id_ensure_callback(LibraryIDLinkCallbackData *cb_data)
{
const LibraryForeachIDCallbackFlag cb_flag = cb_data->cb_flag;
const int cb_flag = cb_data->cb_flag;
if (cb_flag & (IDWALK_CB_EMBEDDED | IDWALK_CB_EMBEDDED_NOT_OWNING)) {
return IDWALK_RET_NOP;