261#define BKE_LIB_FOREACHID_PROCESS_ID_NOCHECK(data_, id_, cb_flag_) \
263 BKE_lib_query_foreachid_process((data_), (ID **)&(id_), (cb_flag_)); \
264 if (BKE_lib_query_foreachid_iter_stop((data_))) { \
270#define BKE_LIB_FOREACHID_PROCESS_ID(data_, id_, cb_flag_) \
272 CHECK_TYPE_ANY((id_), ID *, void *); \
273 BKE_LIB_FOREACHID_PROCESS_ID_NOCHECK(data_, id_, cb_flag_); \
277#define BKE_LIB_FOREACHID_PROCESS_IDSUPER_P(data_, id_super_p_, cb_flag_) \
279 CHECK_TYPE(&((*(id_super_p_))->id), ID *); \
280 BKE_lib_query_foreachid_process((data_), (ID **)(id_super_p_), (cb_flag_)); \
281 if (BKE_lib_query_foreachid_iter_stop((data_))) { \
287#define BKE_LIB_FOREACHID_PROCESS_IDSUPER(data_, id_super_, cb_flag_) \
289 BKE_LIB_FOREACHID_PROCESS_IDSUPER_P(data_, &(id_super_), cb_flag_); \
293#define BKE_LIB_FOREACHID_PROCESS_FUNCTION_CALL(data_, func_call_) \
296 if (BKE_lib_query_foreachid_iter_stop((data_))) { \
394 const bool include_ui,
411 bool *r_is_used_local,
412 bool *r_is_used_linked);
void BKE_library_ID_test_usages(Main *bmain, void *idv, bool *r_is_used_local, bool *r_is_used_linked)
@ IDWALK_RET_STOP_RECURSION
void BKE_lib_query_unused_ids_tag(Main *bmain, int tag, LibQueryUnusedIDsData ¶meters)
void BKE_lib_query_foreachid_process(LibraryForeachIDData *data, ID **id_pp, LibraryForeachIDCallbackFlag cb_flag)
void BKE_library_update_ID_link_user(ID *id_dst, ID *id_src, int cb_flag)
bool BKE_library_ID_is_indirectly_used(Main *bmain, void *idv)
void BKE_library_foreach_ID_embedded(LibraryForeachIDData *data, ID **id_pp)
LibraryForeachIDCallbackFlag
@ IDWALK_CB_OVERRIDE_LIBRARY_NOT_OVERRIDABLE
@ IDWALK_CB_WRITEFILE_IGNORE
@ IDWALK_CB_EMBEDDED_NOT_OWNING
@ IDWALK_CB_DIRECT_WEAK_LINK
@ IDWALK_CB_OVERRIDE_LIBRARY_HIERARCHY_DEFAULT
@ IDWALK_CB_READFILE_IGNORE
@ IDWALK_CB_OVERRIDE_LIBRARY_REFERENCE
@ IDWALK_CB_INDIRECT_USAGE
int(LibraryIDLinkCallbackData *cb_data) LibraryIDLinkCallback
Main * BKE_lib_query_foreachid_process_main_get(const LibraryForeachIDData *data)
void BKE_lib_query_unused_ids_amounts(Main *bmain, LibQueryUnusedIDsData ¶meters)
bool BKE_library_id_can_use_idtype(ID *owner_id, short id_type_used)
int BKE_library_ID_use_ID(ID *id_user, ID *id_used)
void BKE_library_foreach_subdata_id(Main *bmain, ID *owner_id, ID *self_id, blender::FunctionRef< void(LibraryForeachIDData *data)> subdata_foreach_id, blender::FunctionRef< LibraryIDLinkCallback > callback, void *user_data, const LibraryForeachIDFlag flag)
void BKE_lib_query_idpropertiesForeachIDLink_callback(IDProperty *id_prop, void *user_data)
LibraryForeachIDFlag BKE_lib_query_foreachid_process_flags_get(const LibraryForeachIDData *data)
bool BKE_lib_query_foreachid_iter_stop(const LibraryForeachIDData *data)
void BKE_library_unused_linked_data_set_tag(Main *bmain, bool do_init_tag)
void BKE_library_foreach_ID_link(Main *bmain, ID *id, blender::FunctionRef< LibraryIDLinkCallback > callback, void *user_data, LibraryForeachIDFlag flag)
int BKE_lib_query_foreachid_process_callback_flag_override(LibraryForeachIDData *data, LibraryForeachIDCallbackFlag cb_flag, bool do_replace)
void BKE_library_indirectly_used_data_tag_clear(Main *bmain)
uint64_t BKE_library_id_can_use_filter_id(const ID *owner_id, const bool include_ui, const IDTypeInfo *owner_id_type=nullptr)
bool BKE_library_ID_is_locally_used(Main *bmain, void *idv)
@ IDWALK_DO_DEPRECATED_POINTERS
@ IDWALK_IGNORE_MISSING_OWNER_ID
@ IDWALK_DO_LIBRARY_POINTER
@ IDWALK_DO_INTERNAL_RUNTIME_POINTERS
@ IDWALK_NO_ORIG_POINTERS_ACCESS
@ IDWALK_IGNORE_EMBEDDED_ID
#define ENUM_OPERATORS(_type, _max)
ID and Library types, which are fundamental for SDNA.
BMesh const char void * data
unsigned long long int uint64_t
std::array< int, INDEX_ID_MAX > num_total
std::array< int, INDEX_ID_MAX > num_linked
std::array< int, INDEX_ID_MAX > num_local
blender::FunctionRef< bool(ID *id)> filter_fn
LibraryForeachIDCallbackFlag cb_flag