20 mappings_.add(old_id, new_id);
31 mappings_.add_overwrite(old_id, new_id);
37 const ID *id_self)
const
39 if (!mappings_.contains(
id)) {
42 const ID *new_id = mappings_.lookup(
id);
46 if (new_id ==
nullptr) {
60 "ID_REMAP_APPLY_WHEN_REMAPPING_TO_SELF requires a non-null `id_self` parameter.");
62 if (*r_id_ptr ==
nullptr) {
66 ID *
const *new_id = mappings_.lookup_ptr(*r_id_ptr);
67 if (new_id ==
nullptr) {
79 if (*r_id_ptr ==
nullptr) {
98 return "not_mappable";
100 return "unavailable";
112 this->
iter([](
ID *old_id,
ID *new_id) {
113 if (old_id !=
nullptr && new_id !=
nullptr) {
114 printf(
"Remap %s(%p) to %s(%p)\n", old_id->
name, old_id, new_id->
name, new_id);
116 if (old_id !=
nullptr && new_id ==
nullptr) {
117 printf(
"Unassign %s(%p)\n", old_id->
name, old_id);
uint64_t BKE_idtype_idcode_to_idfilter(short idcode)
void id_us_ensure_real(ID *id)
void id_us_plus_no_lib(ID *id)
@ ID_REMAP_RESULT_SOURCE_REMAPPED
@ ID_REMAP_RESULT_SOURCE_UNASSIGNED
@ ID_REMAP_RESULT_SOURCE_NOT_MAPPABLE
@ ID_REMAP_RESULT_SOURCE_UNAVAILABLE
@ ID_REMAP_APPLY_UPDATE_REFCOUNT
@ ID_REMAP_APPLY_UNMAP_WHEN_REMAPPING_TO_SELF
@ ID_REMAP_APPLY_ENSURE_REAL
#define BLI_assert_unreachable()
#define BLI_assert_msg(a, msg)
ID and Library types, which are fundamental for SDNA.
IDRemapperApplyResult get_mapping_result(ID *id, IDRemapperApplyOptions options, const ID *id_self) const
bool allow_idtype_mismatch
IDRemapperApplyResult apply(ID **r_id_ptr, IDRemapperApplyOptions options, ID *id_self=nullptr) const
static StringRefNull result_to_string(const IDRemapperApplyResult result)
void iter(FunctionRef< void(ID *old_id, ID *new_id)> func) const
void add(ID *old_id, ID *new_id)
void add_overwrite(ID *old_id, ID *new_id)
CCL_NAMESPACE_BEGIN struct Options options