83 std::optional<Library *> owner_library,
103#define MAIN_ID_SESSION_UID_UNSET 0
140 std::optional<Library *> owner_library,
237 std::optional<Library *> owner_library,
239 const ID *new_owner_id,
340 const std::optional<Library *>
lib = std::nullopt)
346 const char *lib_name);
350 const char *lib_filepath_abs);
549 Main *bmain,
ID *
id,
int flags,
bool *r_force_local,
bool *r_force_copy);
611 std::optional<Library *> owner_library,
613 const ID *new_owner_id,
660 Main *bmain,
ID *id_a,
ID *id_b,
const bool do_self_remap,
const int self_remap_flags);
668 Main *bmain,
ID *id_a,
ID *id_b,
const bool do_self_remap,
const int self_remap_flags);
705 bool do_linked_data);
753#define MAX_ID_FULL_NAME (64 + 64 + 3 + 1)
754#define MAX_ID_FULL_NAME_UI (MAX_ID_FULL_NAME + 3)
818 GHash *old_to_new_ids,
821 bool clear_asset_data);
873#define IS_TAGGED(_id) ((_id) && (((ID *)_id)->tag & ID_TAG_DOIT))
void BKE_id_newptr_and_tag_clear(ID *id)
ID * BKE_id_copy_for_duplicate(Main *bmain, ID *id, eDupli_ID_Flags duplicate_flags, int copy_flags)
ID * BKE_libblock_find_session_uid(Main *bmain, short type, uint32_t session_uid)
void id_lib_extern(ID *id)
void BKE_id_delete(Main *bmain, void *idv) ATTR_NONNULL()
IDNewNameResult BKE_id_new_name_validate(Main &bmain, ListBase &lb, ID &id, const char *newname, IDNewNameMode mode, bool do_linked_data)
void BKE_main_id_repair_duplicate_names_listbase(Main *bmain, ListBase *lb)
ID * BKE_id_copy_for_use_in_bmain(Main *bmain, const ID *id)
void BKE_id_tag_clear_atomic(ID *id, int tag)
ID * BKE_libblock_find_name(Main *bmain, short type, const char *name, const std::optional< Library * > lib=std::nullopt) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
bool id_single_user(bContext *C, ID *id, PointerRNA *ptr, PropertyRNA *prop)
void BKE_lib_id_make_local_generic(Main *bmain, ID *id, int flags)
void size_t BKE_id_multi_tagged_delete(Main *bmain) ATTR_NONNULL()
void BKE_lib_id_expand_local(Main *bmain, ID *id, int flags)
void BKE_main_id_tag_idcode(Main *mainvar, short type, int tag, bool value)
void BKE_id_free_us(Main *bmain, void *idv) ATTR_NONNULL()
void BKE_id_full_name_get(char name[MAX_ID_FULL_NAME], const ID *id, char separator_char)
void BKE_libblock_free_data_py(ID *id)
void BKE_libblock_free_datablock(ID *id, int flag) ATTR_NONNULL()
void * BKE_libblock_alloc(Main *bmain, short type, const char *name, int flag) ATTR_WARN_UNUSED_RESULT
bool BKE_id_is_editable(const Main *bmain, const ID *id)
size_t BKE_id_multi_delete(Main *bmain, blender::Set< ID * > &ids_to_delete)
char * BKE_id_to_unique_string_key(const ID *id)
@ LIB_ID_CREATE_NO_ALLOCATE
@ LIB_ID_COPY_ASSET_METADATA
@ LIB_ID_COPY_NODETREE_LOCALIZE
@ LIB_ID_COPY_NO_LIB_OVERRIDE
@ LIB_ID_COPY_SET_COPIED_ON_WRITE
@ LIB_ID_COPY_NO_LIB_OVERRIDE_LOCAL_DATA_FLAG
@ LIB_ID_CREATE_NO_USER_REFCOUNT
@ LIB_ID_COPY_NO_ANIMDATA
@ LIB_ID_CREATE_NO_DEG_TAG
@ LIB_ID_COPY_RIGID_BODY_NO_COLLECTION_HANDLING
void BKE_id_free(Main *bmain, void *idv)
void id_sort_by_name(ListBase *lb, ID *id, ID *id_sorting_hint)
bool BKE_id_copy_is_allowed(const ID *id)
void BKE_libblock_management_main_remove(Main *bmain, void *idv)
ID * BKE_libblock_find_name_and_library_filepath(Main *bmain, short type, const char *name, const char *lib_filepath_abs)
void BKE_libblock_copy_ex(Main *bmain, const ID *id, ID **new_id_p, int orig_flag)
void * BKE_id_new_in_lib(Main *bmain, std::optional< Library * > owner_library, short type, const char *name)
#define MAX_ID_FULL_NAME_UI
void BKE_library_make_local(Main *bmain, const Library *lib, GHash *old_to_new_ids, bool untagged_only, bool set_fake, bool clear_asset_data)
void BKE_main_id_flag_all(Main *bmain, int flag, bool value)
void BKE_id_tag_set_atomic(ID *id, int tag)
void BKE_id_full_name_ui_prefix_get(char name[MAX_ID_FULL_NAME_UI], const ID *id, bool add_lib_hint, char separator_char, int *r_prefix_len)
ID * BKE_libblock_find_name_and_library(Main *bmain, short type, const char *name, const char *lib_name)
void BKE_id_move_to_same_lib(Main &bmain, ID &id, const ID &owner_id)
bool BKE_id_can_use_id(const ID &id_from, const ID &id_to)
void BKE_libblock_free_data(ID *id, bool do_id_user) ATTR_NONNULL()
void id_fake_user_set(ID *id)
void BKE_lib_id_swap(Main *bmain, ID *id_a, ID *id_b, const bool do_self_remap, const int self_remap_flags)
IDNewNameResult BKE_id_rename(Main &bmain, ID &id, blender::StringRefNull name, const IDNewNameMode mode=IDNewNameMode::RenameExistingNever)
void BKE_id_reorder(const ListBase *lb, ID *id, ID *relative, bool after)
blender::Vector< ID * > BKE_id_ordered_list(const ListBase *lb)
IDNewNameResult BKE_libblock_rename(Main &bmain, ID &id, blender::StringRefNull name, const IDNewNameMode mode=IDNewNameMode::RenameExistingNever)
void BKE_libblock_init_empty(ID *id) ATTR_NONNULL(1)
void BKE_libblock_copy_in_lib(Main *bmain, std::optional< Library * > owner_library, const ID *id, const ID *new_owner_id, ID **new_id_p, int orig_flag)
bool BKE_id_is_in_main(Main *bmain, ID *id)
void BKE_main_id_newptr_and_tag_clear(Main *bmain)
ID * BKE_id_owner_get(ID *id, const bool debug_relationship_assert=true)
void BKE_lib_libblock_session_uid_ensure(ID *id)
struct ID * BKE_id_copy_in_lib(Main *bmain, std::optional< Library * > owner_library, const ID *id, const ID *new_owner_id, ID **new_id_p, int flag)
bool BKE_lib_id_make_local(Main *bmain, ID *id, int flags)
void id_us_ensure_real(ID *id)
void * BKE_libblock_copy(Main *bmain, const ID *id) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void id_fake_user_clear(ID *id)
ID * BKE_id_copy_ex(Main *bmain, const ID *id, ID **new_id_p, int flag)
void id_us_clear_real(ID *id)
void BKE_lib_id_swap_full(Main *bmain, ID *id_a, ID *id_b, const bool do_self_remap, const int self_remap_flags)
void BKE_libblock_management_usercounts_set(Main *bmain, void *idv)
void BKE_lib_id_make_local_generic_action_define(Main *bmain, ID *id, int flags, bool *r_force_local, bool *r_force_copy)
void BKE_main_lib_objects_recalc_all(Main *bmain)
ID * BKE_id_copy(Main *bmain, const ID *id)
@ LIB_ID_FREE_NOT_ALLOCATED
@ LIB_ID_FREE_NO_USER_REFCOUNT
@ LIB_ID_FREE_NO_NAMEMAP_REMOVE
void * BKE_id_new(Main *bmain, short type, const char *name)
void id_us_plus_no_lib(ID *id)
void BKE_id_eval_properties_copy(ID *id_cow, ID *id)
void BKE_libblock_runtime_reset_remapping_status(ID *id) ATTR_NONNULL(1)
void BKE_id_delete_ex(Main *bmain, void *idv, const int extra_remapping_flags) ATTR_NONNULL(1
void id_lib_indirect_weak_link(ID *id)
const char * BKE_id_name(const ID &id)
@ LIB_ID_MAKELOCAL_INDIRECT
@ LIB_ID_MAKELOCAL_FORCE_LOCAL
@ LIB_ID_MAKELOCAL_LIBOVERRIDE_CLEAR
@ LIB_ID_MAKELOCAL_ASSET_DATA_CLEAR
@ LIB_ID_MAKELOCAL_FULL_LIBRARY
@ LIB_ID_MAKELOCAL_FORCE_COPY
void * BKE_libblock_alloc_in_lib(Main *bmain, std::optional< Library * > owner_library, short type, const char *name, int flag) ATTR_WARN_UNUSED_RESULT
void BKE_main_id_tag_listbase(ListBase *lb, int tag, bool value)
void BKE_lib_id_clear_library_data(Main *bmain, ID *id, int flags)
@ LIB_ID_DUPLICATE_IS_ROOT_ID
@ LIB_ID_DUPLICATE_IS_SUBPROCESS
void * BKE_id_new_nomain(short type, const char *name)
void * BKE_libblock_alloc_notest(short type) ATTR_WARN_UNUSED_RESULT
void BKE_id_blend_write(BlendWriter *writer, ID *id)
void BKE_id_free_ex(Main *bmain, void *idv, int flag_orig, bool use_flag_from_idtag)
void BKE_libblock_management_main_add(Main *bmain, void *idv)
void BKE_main_id_refcount_recompute(Main *bmain, bool do_linked_only)
void BKE_main_id_flag_listbase(ListBase *lb, int flag, bool value)
void BKE_libblock_management_usercounts_clear(Main *bmain, void *idv)
void BKE_main_id_tag_all(Main *mainvar, int tag, bool value)
size_t BKE_libblock_get_alloc_info(short type, const char **r_name)
bool BKE_id_can_be_asset(const ID *id)
bool BKE_id_is_in_global_main(ID *id)
void BKE_lib_libblock_session_uid_renew(ID *id)
#define ATTR_WARN_UNUSED_RESULT
#define ATTR_NONNULL(...)
#define ENUM_OPERATORS(_type, _max)
ID and Library types, which are fundamental for SDNA.
@ RENAMED_COLLISION_FORCED
@ RENAMED_COLLISION_ADJUSTED
enum IDNewNameResult::Action action
static DynamicLibrary lib