[Bf-blender-cvs] [811cbb6c0a4] master: Helper functions for IDRemapper.
Jeroen Bakker
noreply at git.blender.org
Fri Feb 11 14:49:49 CET 2022
Commit: 811cbb6c0a426243d957fa00f7ddec15b1d4ae62
Author: Jeroen Bakker
Date: Fri Feb 11 14:46:23 2022 +0100
Branches: master
https://developer.blender.org/rB811cbb6c0a426243d957fa00f7ddec15b1d4ae62
Helper functions for IDRemapper.
Adds helper functions to debug IDRemapper data structure.
`BKE_id_remapper_result_string` converst a given IDRemapperApplyResult
to a readable form for logging purposes.
`BKE_id_remapper_print` prints out the rules inside a IDRemapper struct.
===================================================================
M source/blender/blenkernel/BKE_lib_remap.h
M source/blender/blenkernel/intern/lib_id_remapper.cc
===================================================================
diff --git a/source/blender/blenkernel/BKE_lib_remap.h b/source/blender/blenkernel/BKE_lib_remap.h
index 5fa524e3fc6..f4136ed5cda 100644
--- a/source/blender/blenkernel/BKE_lib_remap.h
+++ b/source/blender/blenkernel/BKE_lib_remap.h
@@ -204,6 +204,11 @@ void BKE_id_remapper_iter(const struct IDRemapper *id_remapper,
IDRemapperIterFunction func,
void *user_data);
+/** Returns a readable string for the given result. Can be used for debugging purposes. */
+const char *BKE_id_remapper_result_string(const IDRemapperApplyResult result);
+/** Prints out the rules inside the given id_remapper. Can be used for debugging purposes. */
+void BKE_id_remapper_print(const struct IDRemapper *id_remapper);
+
#ifdef __cplusplus
}
#endif
diff --git a/source/blender/blenkernel/intern/lib_id_remapper.cc b/source/blender/blenkernel/intern/lib_id_remapper.cc
index 7347ccc258d..5af482ac088 100644
--- a/source/blender/blenkernel/intern/lib_id_remapper.cc
+++ b/source/blender/blenkernel/intern/lib_id_remapper.cc
@@ -157,4 +157,36 @@ void BKE_id_remapper_iter(const struct IDRemapper *id_remapper,
const blender::bke::id::remapper::IDRemapper *remapper = unwrap(id_remapper);
remapper->iter(func, user_data);
}
+
+const char *BKE_id_remapper_result_string(const IDRemapperApplyResult result)
+{
+ switch (result) {
+ case ID_REMAP_RESULT_SOURCE_NOT_MAPPABLE:
+ return "not_mappable";
+ case ID_REMAP_RESULT_SOURCE_UNAVAILABLE:
+ return "unavailable";
+ case ID_REMAP_RESULT_SOURCE_UNASSIGNED:
+ return "unassigned";
+ case ID_REMAP_RESULT_SOURCE_REMAPPED:
+ return "remapped";
+ default:
+ BLI_assert_unreachable();
+ }
+ return "";
+}
+
+static void id_remapper_print_item_cb(ID *old_id, ID *new_id, void *UNUSED(user_data))
+{
+ if (old_id != nullptr && new_id != nullptr) {
+ printf("Remap %s(%p) to %s(%p)\n", old_id->name, old_id, new_id->name, new_id);
+ }
+ if (old_id != nullptr && new_id == nullptr) {
+ printf("Unassign %s(%p)\n", old_id->name, old_id);
+ }
+}
+
+void BKE_id_remapper_print(const struct IDRemapper *id_remapper)
+{
+ BKE_id_remapper_iter(id_remapper, id_remapper_print_item_cb, nullptr);
+}
}
More information about the Bf-blender-cvs
mailing list