diff --git a/source/blender/asset_system/AS_asset_library.hh b/source/blender/asset_system/AS_asset_library.hh index 4a76cdf3bac..df175d46755 100644 --- a/source/blender/asset_system/AS_asset_library.hh +++ b/source/blender/asset_system/AS_asset_library.hh @@ -140,7 +140,7 @@ class AssetLibrary { bool remove_asset(AssetRepresentation &asset); /** - * Remap ID pointers for local ID assets, see #BKE_lib_remap.h. When an ID pointer would be + * Remap ID pointers for local ID assets, see #BKE_lib_remap.hh. When an ID pointer would be * mapped to null (typically when an ID gets removed), the asset is removed, because we don't * support such empty/null assets. */ diff --git a/source/blender/asset_system/intern/asset_storage.cc b/source/blender/asset_system/intern/asset_storage.cc index 4693ed7c27f..ecf33f72c95 100644 --- a/source/blender/asset_system/intern/asset_storage.cc +++ b/source/blender/asset_system/intern/asset_storage.cc @@ -11,7 +11,7 @@ #include "DNA_ID.h" #include "DNA_asset_types.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "asset_storage.hh" diff --git a/source/blender/blenkernel/BKE_lib_id.h b/source/blender/blenkernel/BKE_lib_id.h index 9760b452777..ce69838b7c6 100644 --- a/source/blender/blenkernel/BKE_lib_id.h +++ b/source/blender/blenkernel/BKE_lib_id.h @@ -481,7 +481,7 @@ struct ID *BKE_id_copy_for_use_in_bmain(struct Main *bmain, const struct ID *id) * \param bmain: May be NULL, in which case there is no guarantee that internal remapping of ID * pointers to themselves will be complete (regarding depsgraph and/or runtime data updates). * \param do_self_remap: Whether to remap internal pointers to itself or not. - * \param self_remap_flags: Flags controlling self remapping, see BKE_lib_remap.h. + * \param self_remap_flags: Flags controlling self remapping, see BKE_lib_remap.hh. */ void BKE_lib_id_swap(struct Main *bmain, struct ID *id_a, diff --git a/source/blender/blenkernel/BKE_lib_remap.h b/source/blender/blenkernel/BKE_lib_remap.hh similarity index 76% rename from source/blender/blenkernel/BKE_lib_remap.h rename to source/blender/blenkernel/BKE_lib_remap.hh index f18d2acc974..375e467ceca 100644 --- a/source/blender/blenkernel/BKE_lib_remap.h +++ b/source/blender/blenkernel/BKE_lib_remap.hh @@ -23,13 +23,10 @@ #include "BLI_compiler_attrs.h" #include "BLI_utildefines.h" -#ifdef __cplusplus -extern "C" { -#endif - struct ID; struct IDRemapper; struct LinkNode; +struct Main; /* BKE_libblock_free, delete are declared in BKE_lib_id.h for convenience. */ @@ -120,13 +117,9 @@ typedef enum eIDRemapType { * * \note Is preferred over BKE_libblock_remap_locked due to performance. */ -void BKE_libblock_remap_multiple_locked(struct Main *bmain, - struct IDRemapper *mappings, - const int remap_flags); +void BKE_libblock_remap_multiple_locked(Main *bmain, IDRemapper *mappings, const int remap_flags); -void BKE_libblock_remap_multiple(struct Main *bmain, - struct IDRemapper *mappings, - const int remap_flags); +void BKE_libblock_remap_multiple(Main *bmain, IDRemapper *mappings, const int remap_flags); /** * Bare raw remapping of IDs, with no other processing than actually updating the ID pointers. @@ -137,9 +130,7 @@ void BKE_libblock_remap_multiple(struct Main *bmain, * case e.g. in read-file process. * * WARNING: This call will likely leave the given BMain in invalid state in many aspects. */ -void BKE_libblock_remap_multiple_raw(struct Main *bmain, - struct IDRemapper *mappings, - const int remap_flags); +void BKE_libblock_remap_multiple_raw(Main *bmain, IDRemapper *mappings, const int remap_flags); /** * Replace all references in given Main to \a old_id by \a new_id * (if \a new_id is NULL, it unlinks \a old_id). @@ -147,9 +138,9 @@ void BKE_libblock_remap_multiple_raw(struct Main *bmain, * \note Requiring new_id to be non-null, this *may* not be the case ultimately, * but makes things simpler for now. */ -void BKE_libblock_remap_locked(struct Main *bmain, void *old_idv, void *new_idv, int remap_flags) +void BKE_libblock_remap_locked(Main *bmain, void *old_idv, void *new_idv, int remap_flags) ATTR_NONNULL(1, 2); -void BKE_libblock_remap(struct Main *bmain, void *old_idv, void *new_idv, int remap_flags) +void BKE_libblock_remap(Main *bmain, void *old_idv, void *new_idv, int remap_flags) ATTR_NONNULL(1, 2); /** @@ -159,10 +150,8 @@ void BKE_libblock_remap(struct Main *bmain, void *old_idv, void *new_idv, int re * \param do_flag_never_null: If true, all IDs using \a idv in a 'non-NULL' way are flagged by * #LIB_TAG_DOIT flag (quite obviously, 'non-NULL' usages can never be unlinked by this function). */ -void BKE_libblock_unlink(struct Main *bmain, - void *idv, - bool do_flag_never_null, - bool do_skip_indirect) ATTR_NONNULL(); +void BKE_libblock_unlink(Main *bmain, void *idv, bool do_flag_never_null, bool do_skip_indirect) + ATTR_NONNULL(); /** * Similar to libblock_remap, but only affects IDs used by given \a idv ID. @@ -173,17 +162,14 @@ void BKE_libblock_unlink(struct Main *bmain, * \param bmain: May be NULL, in which case there won't be depsgraph updates nor post-processing on * some ID types (like collections or objects) to ensure their runtime data is valid. */ -void BKE_libblock_relink_ex( - struct Main *bmain, void *idv, void *old_idv, void *new_idv, int remap_flags) ATTR_NONNULL(2); +void BKE_libblock_relink_ex(Main *bmain, void *idv, void *old_idv, void *new_idv, int remap_flags) + ATTR_NONNULL(2); /** * Same as #BKE_libblock_relink_ex, but applies all rules defined in \a id_remapper to \a ids (or * does cleanup if `ID_REMAP_TYPE_CLEANUP` is specified as \a remap_type). */ -void BKE_libblock_relink_multiple(struct Main *bmain, - struct LinkNode *ids, - eIDRemapType remap_type, - struct IDRemapper *id_remapper, - int remap_flags); +void BKE_libblock_relink_multiple( + Main *bmain, LinkNode *ids, eIDRemapType remap_type, IDRemapper *id_remapper, int remap_flags); /** * Remaps ID usages of given ID to their `id->newid` pointer if not None, and proceeds recursively @@ -194,18 +180,16 @@ void BKE_libblock_relink_multiple(struct Main *bmain, * Very specific usage, not sure we'll keep it on the long run, * currently only used in Object/Collection duplication code. */ -void BKE_libblock_relink_to_newid(struct Main *bmain, struct ID *id, int remap_flag) - ATTR_NONNULL(); +void BKE_libblock_relink_to_newid(Main *bmain, ID *id, int remap_flag) ATTR_NONNULL(); typedef void (*BKE_library_free_notifier_reference_cb)(const void *); -typedef void (*BKE_library_remap_editor_id_reference_cb)(const struct IDRemapper *mappings); +typedef void (*BKE_library_remap_editor_id_reference_cb)(const IDRemapper *mappings); void BKE_library_callback_free_notifier_reference_set(BKE_library_free_notifier_reference_cb func); void BKE_library_callback_remap_editor_id_reference_set( BKE_library_remap_editor_id_reference_cb func); /* IDRemapper */ -struct IDRemapper; typedef enum IDRemapperApplyResult { /** No remapping rules available for the source. */ ID_REMAP_RESULT_SOURCE_UNAVAILABLE, @@ -249,33 +233,31 @@ typedef enum IDRemapperApplyOptions { } IDRemapperApplyOptions; ENUM_OPERATORS(IDRemapperApplyOptions, ID_REMAP_APPLY_UNMAP_WHEN_REMAPPING_TO_SELF) -typedef void (*IDRemapperIterFunction)(struct ID *old_id, struct ID *new_id, void *user_data); +typedef void (*IDRemapperIterFunction)(ID *old_id, ID *new_id, void *user_data); /** * Create a new ID Remapper. * * An ID remapper stores multiple remapping rules. */ -struct IDRemapper *BKE_id_remapper_create(void); +IDRemapper *BKE_id_remapper_create(void); -void BKE_id_remapper_clear(struct IDRemapper *id_remapper); -bool BKE_id_remapper_is_empty(const struct IDRemapper *id_remapper); +void BKE_id_remapper_clear(IDRemapper *id_remapper); +bool BKE_id_remapper_is_empty(const IDRemapper *id_remapper); /** Free the given ID Remapper. */ -void BKE_id_remapper_free(struct IDRemapper *id_remapper); +void BKE_id_remapper_free(IDRemapper *id_remapper); /** Add a new remapping. Does not replace an existing mapping for `old_id`, if any. */ -void BKE_id_remapper_add(struct IDRemapper *id_remapper, struct ID *old_id, struct ID *new_id); +void BKE_id_remapper_add(IDRemapper *id_remapper, ID *old_id, ID *new_id); /** Add a new remapping, replacing a potential already existing mapping of `old_id`. */ -void BKE_id_remapper_add_overwrite(struct IDRemapper *id_remapper, - struct ID *old_id, - struct ID *new_id); +void BKE_id_remapper_add_overwrite(IDRemapper *id_remapper, ID *old_id, ID *new_id); /** * Apply a remapping. * * Update the id pointer stored in the given r_id_ptr if a remapping rule exists. */ -IDRemapperApplyResult BKE_id_remapper_apply(const struct IDRemapper *id_remapper, - struct ID **r_id_ptr, +IDRemapperApplyResult BKE_id_remapper_apply(const IDRemapper *id_remapper, + ID **r_id_ptr, IDRemapperApplyOptions options); /** * Apply a remapping. @@ -286,28 +268,24 @@ IDRemapperApplyResult BKE_id_remapper_apply(const struct IDRemapper *id_remapper * \param id_self: required for ID_REMAP_APPLY_UNMAP_WHEN_REMAPPING_TO_SELF. * When remapping to id_self it will then be remapped to NULL. */ -IDRemapperApplyResult BKE_id_remapper_apply_ex(const struct IDRemapper *id_remapper, - struct ID **r_id_ptr, +IDRemapperApplyResult BKE_id_remapper_apply_ex(const IDRemapper *id_remapper, + ID **r_id_ptr, IDRemapperApplyOptions options, - struct ID *id_self); -bool BKE_id_remapper_has_mapping_for(const struct IDRemapper *id_remapper, uint64_t type_filter); + ID *id_self); +bool BKE_id_remapper_has_mapping_for(const IDRemapper *id_remapper, uint64_t type_filter); /** * Determine the mapping result, without applying the mapping. */ -IDRemapperApplyResult BKE_id_remapper_get_mapping_result(const struct IDRemapper *id_remapper, - struct ID *id, +IDRemapperApplyResult BKE_id_remapper_get_mapping_result(const IDRemapper *id_remapper, + ID *id, IDRemapperApplyOptions options, - const struct ID *id_self); -void BKE_id_remapper_iter(const struct IDRemapper *id_remapper, + const ID *id_self); +void BKE_id_remapper_iter(const 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 +void BKE_id_remapper_print(const IDRemapper *id_remapper); diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt index 428638ddff9..8c1326665e0 100644 --- a/source/blender/blenkernel/CMakeLists.txt +++ b/source/blender/blenkernel/CMakeLists.txt @@ -416,7 +416,7 @@ set(SRC BKE_lib_id.h BKE_lib_override.hh BKE_lib_query.h - BKE_lib_remap.h + BKE_lib_remap.hh BKE_library.h BKE_light.h BKE_light_linking.h @@ -522,7 +522,7 @@ set(SRC intern/CCGSubSurf_intern.h intern/attribute_access_intern.hh intern/data_transfer_intern.h - intern/lib_intern.h + intern/lib_intern.hh intern/multires_inline.hh intern/multires_reshape.hh intern/multires_unsubdivide.hh diff --git a/source/blender/blenkernel/intern/blendfile.cc b/source/blender/blenkernel/intern/blendfile.cc index 58d0e341b84..fd411259168 100644 --- a/source/blender/blenkernel/intern/blendfile.cc +++ b/source/blender/blenkernel/intern/blendfile.cc @@ -46,7 +46,7 @@ #include "BKE_lib_id.h" #include "BKE_lib_override.hh" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_main_idmap.hh" #include "BKE_main_namemap.hh" diff --git a/source/blender/blenkernel/intern/blendfile_link_append.cc b/source/blender/blenkernel/intern/blendfile_link_append.cc index 588caa17474..f743d5cfbc5 100644 --- a/source/blender/blenkernel/intern/blendfile_link_append.cc +++ b/source/blender/blenkernel/intern/blendfile_link_append.cc @@ -41,7 +41,7 @@ #include "BKE_lib_id.h" #include "BKE_lib_override.hh" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_main_namemap.hh" #include "BKE_material.h" diff --git a/source/blender/blenkernel/intern/brush.cc b/source/blender/blenkernel/intern/brush.cc index ce2bbb3dc1d..1e841748a59 100644 --- a/source/blender/blenkernel/intern/brush.cc +++ b/source/blender/blenkernel/intern/brush.cc @@ -29,7 +29,7 @@ #include "BKE_idtype.h" #include "BKE_lib_id.h" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_material.h" #include "BKE_paint.hh" diff --git a/source/blender/blenkernel/intern/collection.cc b/source/blender/blenkernel/intern/collection.cc index 10ccd642170..20ab71e3697 100644 --- a/source/blender/blenkernel/intern/collection.cc +++ b/source/blender/blenkernel/intern/collection.cc @@ -27,7 +27,7 @@ #include "BKE_layer.h" #include "BKE_lib_id.h" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_object.hh" #include "BKE_preview_image.hh" diff --git a/source/blender/blenkernel/intern/curves.cc b/source/blender/blenkernel/intern/curves.cc index 11d73806ecd..49e09983480 100644 --- a/source/blender/blenkernel/intern/curves.cc +++ b/source/blender/blenkernel/intern/curves.cc @@ -35,7 +35,7 @@ #include "BKE_idtype.h" #include "BKE_lib_id.h" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_modifier.hh" #include "BKE_object.hh" diff --git a/source/blender/blenkernel/intern/lib_id.cc b/source/blender/blenkernel/intern/lib_id.cc index e80926ad174..529eeb68f8f 100644 --- a/source/blender/blenkernel/intern/lib_id.cc +++ b/source/blender/blenkernel/intern/lib_id.cc @@ -52,7 +52,7 @@ #include "BKE_lib_id.h" #include "BKE_lib_override.hh" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_main_namemap.hh" #include "BKE_node.h" @@ -68,7 +68,7 @@ #include "atomic_ops.h" -#include "lib_intern.h" +#include "lib_intern.hh" //#define DEBUG_TIME diff --git a/source/blender/blenkernel/intern/lib_id_delete.cc b/source/blender/blenkernel/intern/lib_id_delete.cc index dac7b281ad5..c707993095b 100644 --- a/source/blender/blenkernel/intern/lib_id_delete.cc +++ b/source/blender/blenkernel/intern/lib_id_delete.cc @@ -29,11 +29,11 @@ #include "BKE_layer.h" #include "BKE_lib_id.h" #include "BKE_lib_override.hh" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_main_namemap.hh" -#include "lib_intern.h" +#include "lib_intern.hh" #include "DEG_depsgraph.hh" diff --git a/source/blender/blenkernel/intern/lib_id_remapper.cc b/source/blender/blenkernel/intern/lib_id_remapper.cc index 97d0eeb604e..b553e77a40b 100644 --- a/source/blender/blenkernel/intern/lib_id_remapper.cc +++ b/source/blender/blenkernel/intern/lib_id_remapper.cc @@ -6,7 +6,7 @@ #include "BKE_idtype.h" #include "BKE_lib_id.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "MEM_guardedalloc.h" @@ -136,8 +136,6 @@ static const blender::bke::id::remapper::IDRemapper *unwrap(const IDRemapper *re static_cast(remapper)); } -extern "C" { - IDRemapper *BKE_id_remapper_create() { blender::bke::id::remapper::IDRemapper *remapper = @@ -251,4 +249,3 @@ void BKE_id_remapper_print(const IDRemapper *id_remapper) { BKE_id_remapper_iter(id_remapper, id_remapper_print_item_cb, nullptr); } -} diff --git a/source/blender/blenkernel/intern/lib_id_remapper_test.cc b/source/blender/blenkernel/intern/lib_id_remapper_test.cc index 8e02a28ab03..b4928fafd6b 100644 --- a/source/blender/blenkernel/intern/lib_id_remapper_test.cc +++ b/source/blender/blenkernel/intern/lib_id_remapper_test.cc @@ -4,7 +4,7 @@ #include "testing/testing.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BLI_string.h" diff --git a/source/blender/blenkernel/intern/lib_intern.h b/source/blender/blenkernel/intern/lib_intern.hh similarity index 52% rename from source/blender/blenkernel/intern/lib_intern.h rename to source/blender/blenkernel/intern/lib_intern.hh index 2c7da331355..06436437c55 100644 --- a/source/blender/blenkernel/intern/lib_intern.h +++ b/source/blender/blenkernel/intern/lib_intern.hh @@ -8,11 +8,7 @@ #pragma once -#include "BKE_lib_remap.h" - -#ifdef __cplusplus -extern "C" { -#endif +#include "BKE_lib_remap.hh" extern BKE_library_free_notifier_reference_cb free_notifier_reference_cb; @@ -21,11 +17,4 @@ extern BKE_library_remap_editor_id_reference_cb remap_editor_id_reference_cb; struct ID; struct Main; -void lib_id_copy_ensure_local(struct Main *bmain, - const struct ID *old_id, - struct ID *new_id, - const int flags); - -#ifdef __cplusplus -} -#endif +void lib_id_copy_ensure_local(Main *bmain, const ID *old_id, ID *new_id, const int flags); diff --git a/source/blender/blenkernel/intern/lib_override.cc b/source/blender/blenkernel/intern/lib_override.cc index 1a607bccf24..1a099fc0de0 100644 --- a/source/blender/blenkernel/intern/lib_override.cc +++ b/source/blender/blenkernel/intern/lib_override.cc @@ -37,7 +37,7 @@ #include "BKE_lib_id.h" #include "BKE_lib_override.hh" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_main_namemap.hh" #include "BKE_node.hh" @@ -64,7 +64,7 @@ #include "atomic_ops.h" -#include "lib_intern.h" +#include "lib_intern.hh" #define OVERRIDE_AUTO_CHECK_DELAY 0.2 /* 200ms between auto-override checks. */ //#define DEBUG_OVERRIDE_TIMEIT diff --git a/source/blender/blenkernel/intern/lib_remap.cc b/source/blender/blenkernel/intern/lib_remap.cc index b269175561d..2134687adea 100644 --- a/source/blender/blenkernel/intern/lib_remap.cc +++ b/source/blender/blenkernel/intern/lib_remap.cc @@ -22,7 +22,7 @@ #include "BKE_layer.h" #include "BKE_lib_id.h" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_material.h" #include "BKE_mball.h" @@ -35,7 +35,7 @@ #include "DEG_depsgraph.hh" #include "DEG_depsgraph_build.hh" -#include "lib_intern.h" /* own include */ +#include "lib_intern.hh" /* own include */ static CLG_LogRef LOG = {"bke.lib_remap"}; diff --git a/source/blender/blenkernel/intern/lib_remap_test.cc b/source/blender/blenkernel/intern/lib_remap_test.cc index 9c3630fbbcf..0c7339f8dfa 100644 --- a/source/blender/blenkernel/intern/lib_remap_test.cc +++ b/source/blender/blenkernel/intern/lib_remap_test.cc @@ -19,7 +19,7 @@ #include "BKE_global.h" #include "BKE_idtype.h" #include "BKE_lib_id.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_mesh.hh" #include "BKE_node.hh" diff --git a/source/blender/blenkernel/intern/main_test.cc b/source/blender/blenkernel/intern/main_test.cc new file mode 100644 index 00000000000..7df618003de --- /dev/null +++ b/source/blender/blenkernel/intern/main_test.cc @@ -0,0 +1,256 @@ +/* SPDX-FileCopyrightText: 2020 Blender Authors + * + * SPDX-License-Identifier: GPL-2.0-or-later */ +#include "testing/testing.h" + +#include "MEM_guardedalloc.h" + +#include "CLG_log.h" + +#include "BLI_listbase.h" +#include "BLI_string.h" + +#include "BKE_collection.h" +#include "BKE_idtype.h" +#include "BKE_lib_id.h" +#include "BKE_library.h" +#include "BKE_main.h" +#include "BKE_main_namemap.hh" + +#include "DNA_ID.h" +#include "DNA_collection_types.h" +#include "DNA_object_types.h" + +namespace blender::bke::tests { + +class BMainTest : public testing::Test { + public: + static void SetUpTestSuite() + { + CLG_init(); + BKE_idtype_init(); + } + static void TearDownTestSuite() + { + CLG_exit(); + } +}; + +class BMainMergeTest : public BMainTest { + public: + void SetUp() override + { + bmain_src = BKE_main_new(); + bmain_dst = BKE_main_new(); + } + + void TearDown() override + { + if (bmain_src) { + BKE_main_free(bmain_src); + } + if (bmain_dst) { + BKE_main_free(bmain_dst); + } + } + + Main *bmain_src; + Main *bmain_dst; +}; + +TEST_F(BMainMergeTest, basics) +{ + EXPECT_TRUE(BLI_listbase_is_empty(&bmain_dst->libraries)); + EXPECT_TRUE(BLI_listbase_is_empty(&bmain_dst->collections)); + EXPECT_TRUE(BLI_listbase_is_empty(&bmain_dst->objects)); + + EXPECT_TRUE(BLI_listbase_is_empty(&bmain_src->libraries)); + EXPECT_TRUE(BLI_listbase_is_empty(&bmain_src->collections)); + EXPECT_TRUE(BLI_listbase_is_empty(&bmain_src->objects)); + + BKE_id_new(bmain_dst, ID_GR, "Coll_dst"); + Collection *coll = static_cast(BKE_id_new(bmain_src, ID_GR, "Coll_src")); + Object *ob = static_cast(BKE_id_new(bmain_src, ID_OB, "Ob_src")); + BKE_collection_object_add(bmain_src, coll, ob); + + EXPECT_EQ(1, BLI_listbase_count(&bmain_dst->collections)); + EXPECT_EQ(0, BLI_listbase_count(&bmain_dst->objects)); + EXPECT_EQ(1, BLI_listbase_count(&bmain_src->collections)); + EXPECT_EQ(1, BLI_listbase_count(&bmain_src->objects)); + + BKE_main_merge(bmain_dst, &bmain_src, nullptr); + + EXPECT_EQ(2, BLI_listbase_count(&bmain_dst->collections)); + EXPECT_EQ(1, BLI_listbase_count(&bmain_dst->objects)); + EXPECT_EQ(nullptr, bmain_src); + + bmain_src = BKE_main_new(); + Collection *coll_2 = static_cast(BKE_id_new(bmain_src, ID_GR, "Coll_src_2")); + Object *ob_2 = static_cast(BKE_id_new(bmain_src, ID_OB, "Ob_src")); + BKE_collection_object_add(bmain_src, coll_2, ob_2); + + EXPECT_EQ(2, BLI_listbase_count(&bmain_dst->collections)); + EXPECT_EQ(1, BLI_listbase_count(&bmain_dst->objects)); + EXPECT_EQ(1, BLI_listbase_count(&bmain_src->collections)); + EXPECT_EQ(1, BLI_listbase_count(&bmain_src->objects)); + + BKE_main_merge(bmain_dst, &bmain_src, nullptr); + + /* The second `Ob_src` object in `bmain_src` cannot be merged in `bmain_dst`, since its name + * would collide with the first object. */ + EXPECT_EQ(3, BLI_listbase_count(&bmain_dst->collections)); + EXPECT_EQ(1, BLI_listbase_count(&bmain_dst->objects)); + EXPECT_EQ(nullptr, bmain_src); + + /* `Coll_src_2` should have been remapped to using `Ob_src` in `bmain_dst`, instead of `Ob_src` + * in `bmain_src`. */ + EXPECT_EQ(1, BLI_listbase_count(&coll_2->gobject)); + EXPECT_EQ(ob, static_cast(coll_2->gobject.first)->ob); +} + +TEST_F(BMainMergeTest, linked_data) +{ + constexpr char *DST_PATH = "/tmp/dst/dst.blend"; + constexpr char *SRC_PATH = "/tmp/src/src.blend"; + constexpr char *LIB_PATH = "/tmp/lib/lib.blend"; + + constexpr char *LIB_PATH_RELATIVE = "//lib/lib.blend"; + constexpr char *LIB_PATH_RELATIVE_ABS_SRC = "/tmp/src/lib/lib.blend"; + + EXPECT_TRUE(BLI_listbase_is_empty(&bmain_dst->libraries)); + EXPECT_TRUE(BLI_listbase_is_empty(&bmain_dst->collections)); + EXPECT_TRUE(BLI_listbase_is_empty(&bmain_dst->objects)); + + EXPECT_TRUE(BLI_listbase_is_empty(&bmain_src->libraries)); + EXPECT_TRUE(BLI_listbase_is_empty(&bmain_src->collections)); + EXPECT_TRUE(BLI_listbase_is_empty(&bmain_src->objects)); + + BLI_strncpy(bmain_dst->filepath, DST_PATH, sizeof(bmain_dst->filepath)); + BLI_strncpy(bmain_src->filepath, SRC_PATH, sizeof(bmain_dst->filepath)); + + BKE_id_new(bmain_dst, ID_GR, "Coll_dst"); + + Collection *coll_1 = static_cast(BKE_id_new(bmain_src, ID_GR, "Coll_src")); + Object *ob_1 = static_cast(BKE_id_new(bmain_src, ID_OB, "Ob_src")); + BKE_collection_object_add(bmain_src, coll_1, ob_1); + Library *lib_src_1 = static_cast(BKE_id_new(bmain_src, ID_LI, LIB_PATH)); + BKE_library_filepath_set(bmain_src, lib_src_1, LIB_PATH); + ob_1->id.lib = lib_src_1; + + EXPECT_EQ(1, BLI_listbase_count(&bmain_dst->collections)); + EXPECT_EQ(0, BLI_listbase_count(&bmain_dst->objects)); + EXPECT_EQ(0, BLI_listbase_count(&bmain_dst->libraries)); + EXPECT_EQ(1, BLI_listbase_count(&bmain_src->collections)); + EXPECT_EQ(1, BLI_listbase_count(&bmain_src->objects)); + EXPECT_EQ(1, BLI_listbase_count(&bmain_src->libraries)); + + BKE_main_merge(bmain_dst, &bmain_src, nullptr); + + EXPECT_EQ(2, BLI_listbase_count(&bmain_dst->collections)); + EXPECT_EQ(1, BLI_listbase_count(&bmain_dst->objects)); + EXPECT_EQ(1, BLI_listbase_count(&bmain_dst->libraries)); + EXPECT_EQ(ob_1, bmain_dst->objects.first); + EXPECT_EQ(lib_src_1, bmain_dst->libraries.first); + EXPECT_EQ(ob_1->id.lib, lib_src_1); + EXPECT_EQ(nullptr, bmain_src); + + /* Try another merge, with the same library path - second library should be skipped, destination + * merge should still have only one library ID.*/ + bmain_src = BKE_main_new(); + BLI_strncpy(bmain_src->filepath, SRC_PATH, sizeof(bmain_dst->filepath)); + + Collection *coll_2 = static_cast(BKE_id_new(bmain_src, ID_GR, "Coll_src_2")); + Object *ob_2 = static_cast(BKE_id_new(bmain_src, ID_OB, "Ob_src_2")); + BKE_collection_object_add(bmain_src, coll_2, ob_2); + Library *lib_src_2 = static_cast(BKE_id_new(bmain_src, ID_LI, LIB_PATH)); + BKE_library_filepath_set(bmain_src, lib_src_2, LIB_PATH); + std::cout << lib_src_1->filepath_abs << "\n"; + std::cout << lib_src_2->filepath_abs << "\n"; + ob_2->id.lib = lib_src_2; + + EXPECT_EQ(1, BLI_listbase_count(&bmain_src->collections)); + EXPECT_EQ(1, BLI_listbase_count(&bmain_src->objects)); + EXPECT_EQ(1, BLI_listbase_count(&bmain_src->libraries)); + + BKE_main_merge(bmain_dst, &bmain_src, nullptr); + + EXPECT_EQ(3, BLI_listbase_count(&bmain_dst->collections)); + EXPECT_EQ(2, BLI_listbase_count(&bmain_dst->objects)); + EXPECT_EQ(1, BLI_listbase_count(&bmain_dst->libraries)); + EXPECT_EQ(ob_1, bmain_dst->objects.first); + EXPECT_EQ(ob_2, bmain_dst->objects.last); + EXPECT_EQ(lib_src_1, bmain_dst->libraries.first); + EXPECT_EQ(ob_1->id.lib, lib_src_1); + EXPECT_EQ(ob_2->id.lib, lib_src_1); + EXPECT_EQ(nullptr, bmain_src); + + /* Use a relative library path. Since this is a different library, even though the object re-use + * the same name, it should still be moved into `bmain_dst`. The library filepath should also be + * updated and become relative the the path of bmain_dst too. */ + bmain_src = BKE_main_new(); + BLI_strncpy(bmain_src->filepath, SRC_PATH, sizeof(bmain_dst->filepath)); + + Collection *coll_3 = static_cast(BKE_id_new(bmain_src, ID_GR, "Coll_src_3")); + Object *ob_3 = static_cast(BKE_id_new(bmain_src, ID_OB, "Ob_src")); + BKE_collection_object_add(bmain_src, coll_3, ob_3); + Library *lib_src_3 = static_cast(BKE_id_new(bmain_src, ID_LI, LIB_PATH_RELATIVE)); + BKE_library_filepath_set(bmain_src, lib_src_3, LIB_PATH_RELATIVE); + ob_3->id.lib = lib_src_3; + + EXPECT_EQ(1, BLI_listbase_count(&bmain_src->collections)); + EXPECT_EQ(1, BLI_listbase_count(&bmain_src->objects)); + EXPECT_EQ(1, BLI_listbase_count(&bmain_src->libraries)); + EXPECT_TRUE(STREQ(lib_src_3->filepath, LIB_PATH_RELATIVE)); + EXPECT_TRUE(STREQ(lib_src_3->filepath_abs, LIB_PATH_RELATIVE_ABS_SRC)); + + BKE_main_merge(bmain_dst, &bmain_src, nullptr); + + EXPECT_EQ(4, BLI_listbase_count(&bmain_dst->collections)); + EXPECT_EQ(3, BLI_listbase_count(&bmain_dst->objects)); + EXPECT_EQ(2, BLI_listbase_count(&bmain_dst->libraries)); + EXPECT_EQ(ob_1, bmain_dst->objects.first); + EXPECT_EQ(ob_3, bmain_dst->objects.last); + EXPECT_EQ(lib_src_3, bmain_dst->libraries.first); + EXPECT_EQ(lib_src_1, bmain_dst->libraries.last); + EXPECT_EQ(ob_1->id.lib, lib_src_1); + EXPECT_EQ(ob_2->id.lib, lib_src_1); + EXPECT_EQ(ob_3->id.lib, lib_src_3); + EXPECT_FALSE(STREQ(lib_src_3->filepath, LIB_PATH_RELATIVE)); + EXPECT_TRUE(STREQ(lib_src_3->filepath_abs, LIB_PATH_RELATIVE_ABS_SRC)); + EXPECT_EQ(nullptr, bmain_src); + + /* Try another merge, with the library path set to the path of the destination bmain. That source + * library should also be skipped, and the 'linked' object in source bmain should become a local + * object in destination bmain. */ + bmain_src = BKE_main_new(); + BLI_strncpy(bmain_src->filepath, SRC_PATH, sizeof(bmain_dst->filepath)); + + Collection *coll_4 = static_cast(BKE_id_new(bmain_src, ID_GR, "Coll_src_4")); + Object *ob_4 = static_cast(BKE_id_new(bmain_src, ID_OB, "Ob_src_4")); + BKE_collection_object_add(bmain_src, coll_4, ob_4); + Library *lib_src_4 = static_cast(BKE_id_new(bmain_src, ID_LI, DST_PATH)); + BKE_library_filepath_set(bmain_src, lib_src_4, DST_PATH); + ob_4->id.lib = lib_src_4; + + EXPECT_EQ(1, BLI_listbase_count(&bmain_src->collections)); + EXPECT_EQ(1, BLI_listbase_count(&bmain_src->objects)); + EXPECT_EQ(1, BLI_listbase_count(&bmain_src->libraries)); + + BKE_main_merge(bmain_dst, &bmain_src, nullptr); + + EXPECT_EQ(5, BLI_listbase_count(&bmain_dst->collections)); + EXPECT_EQ(4, BLI_listbase_count(&bmain_dst->objects)); + EXPECT_EQ(2, BLI_listbase_count(&bmain_dst->libraries)); + EXPECT_EQ(ob_1, bmain_dst->objects.first); + /* `ob_4` is now local in `bmain_dst`, so should come before linked ones. */ + EXPECT_EQ(ob_4, ob_1->id.prev); + EXPECT_EQ(lib_src_3, bmain_dst->libraries.first); + EXPECT_EQ(lib_src_1, bmain_dst->libraries.last); + EXPECT_EQ(ob_1->id.lib, lib_src_1); + EXPECT_EQ(ob_2->id.lib, lib_src_1); + EXPECT_EQ(ob_3->id.lib, lib_src_3); + EXPECT_EQ(ob_4->id.lib, nullptr); + EXPECT_EQ(nullptr, bmain_src); +} + +} // namespace blender::bke::tests diff --git a/source/blender/blenkernel/intern/object.cc b/source/blender/blenkernel/intern/object.cc index a39bd8b8928..98cfe9c3b8e 100644 --- a/source/blender/blenkernel/intern/object.cc +++ b/source/blender/blenkernel/intern/object.cc @@ -102,7 +102,7 @@ #include "BKE_layer.h" #include "BKE_lib_id.h" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_light.h" #include "BKE_lightprobe.h" #include "BKE_linestyle.h" diff --git a/source/blender/blenkernel/intern/pointcloud.cc b/source/blender/blenkernel/intern/pointcloud.cc index 6a1097828a0..7cee340a14f 100644 --- a/source/blender/blenkernel/intern/pointcloud.cc +++ b/source/blender/blenkernel/intern/pointcloud.cc @@ -31,7 +31,7 @@ #include "BKE_idtype.h" #include "BKE_lib_id.h" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_mesh_wrapper.hh" #include "BKE_modifier.hh" diff --git a/source/blender/blenkernel/intern/scene.cc b/source/blender/blenkernel/intern/scene.cc index 70af7feb9f0..3b04c6875b2 100644 --- a/source/blender/blenkernel/intern/scene.cc +++ b/source/blender/blenkernel/intern/scene.cc @@ -74,7 +74,7 @@ #include "BKE_layer.h" #include "BKE_lib_id.h" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_linestyle.h" #include "BKE_main.h" #include "BKE_mask.h" diff --git a/source/blender/blenkernel/intern/viewer_path.cc b/source/blender/blenkernel/intern/viewer_path.cc index 14da4e5b919..267986f9b70 100644 --- a/source/blender/blenkernel/intern/viewer_path.cc +++ b/source/blender/blenkernel/intern/viewer_path.cc @@ -3,7 +3,7 @@ * SPDX-License-Identifier: GPL-2.0-or-later */ #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_viewer_path.hh" #include "BLI_index_range.hh" diff --git a/source/blender/blenkernel/intern/volume.cc b/source/blender/blenkernel/intern/volume.cc index 7a3cb7f5a3a..d0ec7c31c87 100644 --- a/source/blender/blenkernel/intern/volume.cc +++ b/source/blender/blenkernel/intern/volume.cc @@ -36,7 +36,7 @@ #include "BKE_idtype.h" #include "BKE_lib_id.h" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_modifier.hh" #include "BKE_object.hh" diff --git a/source/blender/blenloader/intern/blend_validate.cc b/source/blender/blenloader/intern/blend_validate.cc index fe1a7e7b6b9..51fb0fa3cb9 100644 --- a/source/blender/blenloader/intern/blend_validate.cc +++ b/source/blender/blenloader/intern/blend_validate.cc @@ -26,7 +26,7 @@ #include "BKE_key.h" #include "BKE_lib_id.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_library.h" #include "BKE_main.h" #include "BKE_report.h" diff --git a/source/blender/blenloader/intern/readfile.cc b/source/blender/blenloader/intern/readfile.cc index 0cc7f2d0229..29efa34e1c5 100644 --- a/source/blender/blenloader/intern/readfile.cc +++ b/source/blender/blenloader/intern/readfile.cc @@ -73,7 +73,7 @@ #include "BKE_lib_id.h" #include "BKE_lib_override.hh" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" /* for Main */ #include "BKE_main_idmap.hh" #include "BKE_main_namemap.hh" diff --git a/source/blender/editors/interface/interface_ops.cc b/source/blender/editors/interface/interface_ops.cc index 90c698c0c3c..dc07454a883 100644 --- a/source/blender/editors/interface/interface_ops.cc +++ b/source/blender/editors/interface/interface_ops.cc @@ -31,7 +31,7 @@ #include "BKE_layer.h" #include "BKE_lib_id.h" #include "BKE_lib_override.hh" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_material.h" #include "BKE_node.hh" #include "BKE_report.h" diff --git a/source/blender/editors/object/object_add.cc b/source/blender/editors/object/object_add.cc index 9101a2e5ae7..5bb2ac7b967 100644 --- a/source/blender/editors/object/object_add.cc +++ b/source/blender/editors/object/object_add.cc @@ -70,7 +70,7 @@ #include "BKE_lib_id.h" #include "BKE_lib_override.hh" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_light.h" #include "BKE_lightprobe.h" #include "BKE_main.h" diff --git a/source/blender/editors/object/object_relations.cc b/source/blender/editors/object/object_relations.cc index 1515341e6a8..0c334231b7e 100644 --- a/source/blender/editors/object/object_relations.cc +++ b/source/blender/editors/object/object_relations.cc @@ -62,7 +62,7 @@ #include "BKE_lib_id.h" #include "BKE_lib_override.hh" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_light.h" #include "BKE_lightprobe.h" #include "BKE_main.h" diff --git a/source/blender/editors/render/render_shading.cc b/source/blender/editors/render/render_shading.cc index 76395807179..784d7c3a931 100644 --- a/source/blender/editors/render/render_shading.cc +++ b/source/blender/editors/render/render_shading.cc @@ -45,7 +45,7 @@ #include "BKE_layer.h" #include "BKE_lib_id.h" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_lightprobe.h" #include "BKE_linestyle.h" #include "BKE_main.h" diff --git a/source/blender/editors/space_action/space_action.cc b/source/blender/editors/space_action/space_action.cc index a6ef3cbcfef..62cc44cb22b 100644 --- a/source/blender/editors/space_action/space_action.cc +++ b/source/blender/editors/space_action/space_action.cc @@ -22,7 +22,7 @@ #include "BKE_context.hh" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_nla.h" #include "BKE_screen.hh" diff --git a/source/blender/editors/space_buttons/space_buttons.cc b/source/blender/editors/space_buttons/space_buttons.cc index 8fd00e5e8e2..f76aae3aa9d 100644 --- a/source/blender/editors/space_buttons/space_buttons.cc +++ b/source/blender/editors/space_buttons/space_buttons.cc @@ -18,7 +18,7 @@ #include "BKE_context.hh" #include "BKE_gpencil_modifier_legacy.h" /* Types for registering panels. */ #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_modifier.hh" #include "BKE_screen.hh" #include "BKE_shader_fx.h" diff --git a/source/blender/editors/space_clip/space_clip.cc b/source/blender/editors/space_clip/space_clip.cc index 165c311f647..fff564cc7ac 100644 --- a/source/blender/editors/space_clip/space_clip.cc +++ b/source/blender/editors/space_clip/space_clip.cc @@ -24,7 +24,7 @@ #include "BKE_context.hh" #include "BKE_lib_id.h" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_movieclip.h" #include "BKE_screen.hh" #include "BKE_tracking.h" diff --git a/source/blender/editors/space_file/space_file.cc b/source/blender/editors/space_file/space_file.cc index f3682f4fbd3..94cffc8aa68 100644 --- a/source/blender/editors/space_file/space_file.cc +++ b/source/blender/editors/space_file/space_file.cc @@ -19,7 +19,7 @@ #include "BKE_context.hh" #include "BKE_global.h" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_report.h" #include "BKE_screen.hh" diff --git a/source/blender/editors/space_graph/space_graph.cc b/source/blender/editors/space_graph/space_graph.cc index 96f0ba37684..839bde3c687 100644 --- a/source/blender/editors/space_graph/space_graph.cc +++ b/source/blender/editors/space_graph/space_graph.cc @@ -22,7 +22,7 @@ #include "BKE_context.hh" #include "BKE_fcurve.h" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_screen.hh" #include "ED_anim_api.hh" diff --git a/source/blender/editors/space_image/space_image.cc b/source/blender/editors/space_image/space_image.cc index ca44b22cca5..64cc8b79774 100644 --- a/source/blender/editors/space_image/space_image.cc +++ b/source/blender/editors/space_image/space_image.cc @@ -24,7 +24,7 @@ #include "BKE_layer.h" #include "BKE_lib_id.h" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_screen.hh" #include "RNA_access.hh" diff --git a/source/blender/editors/space_nla/space_nla.cc b/source/blender/editors/space_nla/space_nla.cc index f8b26ec4ba2..64be957ec71 100644 --- a/source/blender/editors/space_nla/space_nla.cc +++ b/source/blender/editors/space_nla/space_nla.cc @@ -19,7 +19,7 @@ #include "BKE_context.hh" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_screen.hh" #include "ED_anim_api.hh" diff --git a/source/blender/editors/space_node/space_node.cc b/source/blender/editors/space_node/space_node.cc index 90ca8c2093a..84c2a8a3490 100644 --- a/source/blender/editors/space_node/space_node.cc +++ b/source/blender/editors/space_node/space_node.cc @@ -28,7 +28,7 @@ #include "BKE_idprop.h" #include "BKE_lib_id.h" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_node.hh" #include "BKE_node_runtime.hh" #include "BKE_node_tree_zones.hh" diff --git a/source/blender/editors/space_outliner/outliner_edit.cc b/source/blender/editors/space_outliner/outliner_edit.cc index 5fdd6c82d85..66be650c238 100644 --- a/source/blender/editors/space_outliner/outliner_edit.cc +++ b/source/blender/editors/space_outliner/outliner_edit.cc @@ -34,7 +34,7 @@ #include "BKE_lib_id.h" #include "BKE_lib_override.hh" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_object.hh" #include "BKE_report.h" diff --git a/source/blender/editors/space_outliner/outliner_tools.cc b/source/blender/editors/space_outliner/outliner_tools.cc index c444421cdf2..baf0e5504f4 100644 --- a/source/blender/editors/space_outliner/outliner_tools.cc +++ b/source/blender/editors/space_outliner/outliner_tools.cc @@ -51,7 +51,7 @@ #include "BKE_lib_id.h" #include "BKE_lib_override.hh" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_object.hh" #include "BKE_report.h" diff --git a/source/blender/editors/space_outliner/space_outliner.cc b/source/blender/editors/space_outliner/space_outliner.cc index 74d7f333d7c..381eb0321ab 100644 --- a/source/blender/editors/space_outliner/space_outliner.cc +++ b/source/blender/editors/space_outliner/space_outliner.cc @@ -20,7 +20,7 @@ #include "BKE_context.hh" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_outliner_treehash.hh" #include "BKE_screen.hh" diff --git a/source/blender/editors/space_sequencer/space_sequencer.cc b/source/blender/editors/space_sequencer/space_sequencer.cc index 96edd77d9e0..161679797a4 100644 --- a/source/blender/editors/space_sequencer/space_sequencer.cc +++ b/source/blender/editors/space_sequencer/space_sequencer.cc @@ -22,7 +22,7 @@ #include "BKE_global.h" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_screen.hh" #include "BKE_sequencer_offscreen.h" diff --git a/source/blender/editors/space_spreadsheet/space_spreadsheet.cc b/source/blender/editors/space_spreadsheet/space_spreadsheet.cc index 83dbd8f9727..3bf2424cafe 100644 --- a/source/blender/editors/space_spreadsheet/space_spreadsheet.cc +++ b/source/blender/editors/space_spreadsheet/space_spreadsheet.cc @@ -8,7 +8,7 @@ #include "BLI_string.h" #include "BKE_global.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_screen.hh" #include "ED_screen.hh" diff --git a/source/blender/editors/space_text/space_text.cc b/source/blender/editors/space_text/space_text.cc index 0a9535c3d38..938ac4bd5d2 100644 --- a/source/blender/editors/space_text/space_text.cc +++ b/source/blender/editors/space_text/space_text.cc @@ -18,7 +18,7 @@ #include "BKE_global.h" #include "BKE_lib_id.h" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_screen.hh" #include "ED_screen.hh" diff --git a/source/blender/editors/space_view3d/space_view3d.cc b/source/blender/editors/space_view3d/space_view3d.cc index 6efe73be3f5..054e5ab9c80 100644 --- a/source/blender/editors/space_view3d/space_view3d.cc +++ b/source/blender/editors/space_view3d/space_view3d.cc @@ -44,7 +44,7 @@ #include "BKE_layer.h" #include "BKE_lib_id.h" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_mball.h" #include "BKE_mesh.hh" diff --git a/source/blender/editors/util/ed_util.cc b/source/blender/editors/util/ed_util.cc index 54b84685098..492e1565287 100644 --- a/source/blender/editors/util/ed_util.cc +++ b/source/blender/editors/util/ed_util.cc @@ -22,7 +22,7 @@ #include "BKE_global.h" #include "BKE_layer.h" #include "BKE_lib_id.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_material.h" #include "BKE_multires.hh" diff --git a/source/blender/makesrna/intern/rna_ID.cc b/source/blender/makesrna/intern/rna_ID.cc index 1fd80617fcb..bac93b594c6 100644 --- a/source/blender/makesrna/intern/rna_ID.cc +++ b/source/blender/makesrna/intern/rna_ID.cc @@ -221,7 +221,7 @@ const IDFilterEnumPropertyItem rna_enum_id_type_filter_items[] = { # include "BKE_idtype.h" # include "BKE_lib_override.hh" # include "BKE_lib_query.h" -# include "BKE_lib_remap.h" +# include "BKE_lib_remap.hh" # include "BKE_library.h" # include "BKE_material.h" # include "BKE_preview_image.hh" diff --git a/source/blender/makesrna/intern/rna_main_api.cc b/source/blender/makesrna/intern/rna_main_api.cc index 0caffe52971..907365cc3e7 100644 --- a/source/blender/makesrna/intern/rna_main_api.cc +++ b/source/blender/makesrna/intern/rna_main_api.cc @@ -38,7 +38,7 @@ # include "BKE_idtype.h" # include "BKE_image.h" # include "BKE_lattice.hh" -# include "BKE_lib_remap.h" +# include "BKE_lib_remap.hh" # include "BKE_light.h" # include "BKE_lightprobe.h" # include "BKE_linestyle.h" diff --git a/source/blender/render/intern/pipeline.cc b/source/blender/render/intern/pipeline.cc index 6af09557810..14565b9bcfc 100644 --- a/source/blender/render/intern/pipeline.cc +++ b/source/blender/render/intern/pipeline.cc @@ -51,7 +51,7 @@ #include "BKE_image_save.h" #include "BKE_layer.h" #include "BKE_lib_id.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_mask.h" #include "BKE_modifier.hh" diff --git a/source/blender/windowmanager/intern/wm_event_system.cc b/source/blender/windowmanager/intern/wm_event_system.cc index b809a87e627..c96e4a8436c 100644 --- a/source/blender/windowmanager/intern/wm_event_system.cc +++ b/source/blender/windowmanager/intern/wm_event_system.cc @@ -37,7 +37,7 @@ #include "BKE_customdata.hh" #include "BKE_global.h" #include "BKE_idprop.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_report.h" #include "BKE_scene.h" diff --git a/source/blender/windowmanager/intern/wm_files.cc b/source/blender/windowmanager/intern/wm_files.cc index 404a56910ae..286c8e897e6 100644 --- a/source/blender/windowmanager/intern/wm_files.cc +++ b/source/blender/windowmanager/intern/wm_files.cc @@ -73,7 +73,7 @@ #include "BKE_idprop.h" #include "BKE_lib_id.h" #include "BKE_lib_override.hh" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_main_namemap.hh" #include "BKE_packedFile.h" diff --git a/source/blender/windowmanager/intern/wm_files_link.cc b/source/blender/windowmanager/intern/wm_files_link.cc index 0fce67ae41b..70052cc3d69 100644 --- a/source/blender/windowmanager/intern/wm_files_link.cc +++ b/source/blender/windowmanager/intern/wm_files_link.cc @@ -46,7 +46,7 @@ #include "BKE_lib_id.h" #include "BKE_lib_override.hh" #include "BKE_lib_query.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_material.h" #include "BKE_object.hh" diff --git a/source/blender/windowmanager/intern/wm_init_exit.cc b/source/blender/windowmanager/intern/wm_init_exit.cc index e9f1d222e4c..e5af420966f 100644 --- a/source/blender/windowmanager/intern/wm_init_exit.cc +++ b/source/blender/windowmanager/intern/wm_init_exit.cc @@ -41,7 +41,7 @@ #include "BKE_icons.h" #include "BKE_image.h" #include "BKE_keyconfig.h" -#include "BKE_lib_remap.h" +#include "BKE_lib_remap.hh" #include "BKE_main.h" #include "BKE_mball_tessellate.h" #include "BKE_node.hh"