Commit: a746cef82526528e6037ba205b49ad8c883a0b91
Author: Hans Goudey
Date:   Tue May 31 16:16:45 2022 +0200
Branches: master
https://developer.blender.org/rBa746cef82526528e6037ba205b49ad8c883a0b91

Cleanup: Move lib_override.c to C++

This will allow easier const correctness and use of
nicer data structures like `Vector` and `Map`.

===================================================================

M       source/blender/blenkernel/CMakeLists.txt
R084    source/blender/blenkernel/intern/lib_override.c 
source/blender/blenkernel/intern/lib_override.cc

===================================================================

diff --git a/source/blender/blenkernel/CMakeLists.txt 
b/source/blender/blenkernel/CMakeLists.txt
index 8399bc6c144..8dc6f711fae 100644
--- a/source/blender/blenkernel/CMakeLists.txt
+++ b/source/blender/blenkernel/CMakeLists.txt
@@ -174,7 +174,7 @@ set(SRC
   intern/lib_id_delete.c
   intern/lib_id_eval.c
   intern/lib_id_remapper.cc
-  intern/lib_override.c
+  intern/lib_override.cc
   intern/lib_override_proxy_conversion.c
   intern/lib_query.c
   intern/lib_remap.c
diff --git a/source/blender/blenkernel/intern/lib_override.c 
b/source/blender/blenkernel/intern/lib_override.cc
similarity index 84%
rename from source/blender/blenkernel/intern/lib_override.c
rename to source/blender/blenkernel/intern/lib_override.cc
index 50c9514e810..fb538eea415 100644
--- a/source/blender/blenkernel/intern/lib_override.c
+++ b/source/blender/blenkernel/intern/lib_override.cc
@@ -5,8 +5,8 @@
  * \ingroup bke
  */
 
-#include <stdlib.h>
-#include <string.h>
+#include <cstdlib>
+#include <cstring>
 
 #include "CLG_log.h"
 
@@ -90,14 +90,14 @@ BLI_INLINE void lib_override_object_posemode_transfer(ID 
*id_dst, ID *id_src)
 /** Get override data for a given ID. Needed because of our beloved shape keys 
snowflake. */
 BLI_INLINE IDOverrideLibrary *lib_override_get(Main *bmain, ID *id, ID 
**r_owner_id)
 {
-  if (r_owner_id != NULL) {
+  if (r_owner_id != nullptr) {
     *r_owner_id = id;
   }
   if (id->flag & LIB_EMBEDDED_DATA_LIB_OVERRIDE) {
     const IDTypeInfo *id_type = BKE_idtype_get_info_from_id(id);
-    if (id_type->owner_get != NULL) {
+    if (id_type->owner_get != nullptr) {
       ID *owner_id = id_type->owner_get(bmain, id);
-      if (r_owner_id != NULL) {
+      if (r_owner_id != nullptr) {
         *r_owner_id = owner_id;
       }
       return owner_id->override_library;
@@ -109,19 +109,20 @@ BLI_INLINE IDOverrideLibrary *lib_override_get(Main 
*bmain, ID *id, ID **r_owner
 
 IDOverrideLibrary *BKE_lib_override_library_init(ID *local_id, ID 
*reference_id)
 {
-  /* If reference_id is NULL, we are creating an override template for purely 
local data.
+  /* If reference_id is nullptr, we are creating an override template for 
purely local data.
    * Else, reference *must* be linked data. */
-  BLI_assert(reference_id == NULL || ID_IS_LINKED(reference_id));
-  BLI_assert(local_id->override_library == NULL);
+  BLI_assert(reference_id == nullptr || ID_IS_LINKED(reference_id));
+  BLI_assert(local_id->override_library == nullptr);
 
   ID *ancestor_id;
-  for (ancestor_id = reference_id; ancestor_id != NULL && 
ancestor_id->override_library != NULL &&
-                                   ancestor_id->override_library->reference != 
NULL;
+  for (ancestor_id = reference_id;
+       ancestor_id != nullptr && ancestor_id->override_library != nullptr &&
+       ancestor_id->override_library->reference != nullptr;
        ancestor_id = ancestor_id->override_library->reference) {
     /* pass */
   }
 
-  if (ancestor_id != NULL && ancestor_id->override_library != NULL) {
+  if (ancestor_id != nullptr && ancestor_id->override_library != nullptr) {
     /* Original ID has a template, use it! */
     BKE_lib_override_library_copy(local_id, ancestor_id, true);
     if (local_id->override_library->reference != reference_id) {
@@ -133,7 +134,7 @@ IDOverrideLibrary *BKE_lib_override_library_init(ID 
*local_id, ID *reference_id)
   }
 
   /* Else, generate new empty override. */
-  local_id->override_library = 
MEM_callocN(sizeof(*local_id->override_library), __func__);
+  local_id->override_library = MEM_cnew<IDOverrideLibrary>(__func__);
   local_id->override_library->reference = reference_id;
   id_us_plus(local_id->override_library->reference);
   local_id->tag &= ~LIB_TAG_OVERRIDE_LIBRARY_REFOK;
@@ -148,20 +149,20 @@ void BKE_lib_override_library_copy(ID *dst_id, const ID 
*src_id, const bool do_f
 {
   BLI_assert(ID_IS_OVERRIDE_LIBRARY(src_id) || 
ID_IS_OVERRIDE_LIBRARY_TEMPLATE(src_id));
 
-  if (dst_id->override_library != NULL) {
-    if (src_id->override_library == NULL) {
+  if (dst_id->override_library != nullptr) {
+    if (src_id->override_library == nullptr) {
       BKE_lib_override_library_free(&dst_id->override_library, true);
       return;
     }
 
     BKE_lib_override_library_clear(dst_id->override_library, true);
   }
-  else if (src_id->override_library == NULL) {
+  else if (src_id->override_library == nullptr) {
     /* Virtual overrides of embedded data does not require any extra work. */
     return;
   }
   else {
-    BKE_lib_override_library_init(dst_id, NULL);
+    BKE_lib_override_library_init(dst_id, nullptr);
   }
 
   /* If source is already overriding data, we copy it but reuse its reference 
for dest ID.
@@ -177,8 +178,10 @@ void BKE_lib_override_library_copy(ID *dst_id, const ID 
*src_id, const bool do_f
   if (do_full_copy) {
     BLI_duplicatelist(&dst_id->override_library->properties,
                       &src_id->override_library->properties);
-    for (IDOverrideLibraryProperty *op_dst = 
dst_id->override_library->properties.first,
-                                   *op_src = 
src_id->override_library->properties.first;
+    for (IDOverrideLibraryProperty *op_dst = 
static_cast<IDOverrideLibraryProperty *>(
+                                       
dst_id->override_library->properties.first),
+                                   *op_src = 
static_cast<IDOverrideLibraryProperty *>(
+                                       
src_id->override_library->properties.first);
          op_dst;
          op_dst = op_dst->next, op_src = op_src->next) {
       lib_override_library_property_copy(op_dst, op_src);
@@ -190,10 +193,10 @@ void BKE_lib_override_library_copy(ID *dst_id, const ID 
*src_id, const bool do_f
 
 void BKE_lib_override_library_clear(IDOverrideLibrary *override, const bool 
do_id_user)
 {
-  BLI_assert(override != NULL);
+  BLI_assert(override != nullptr);
 
-  if (!ELEM(NULL, override->runtime, 
override->runtime->rna_path_to_override_properties)) {
-    BLI_ghash_clear(override->runtime->rna_path_to_override_properties, NULL, 
NULL);
+  if (!ELEM(nullptr, override->runtime, 
override->runtime->rna_path_to_override_properties)) {
+    BLI_ghash_clear(override->runtime->rna_path_to_override_properties, 
nullptr, nullptr);
   }
 
   LISTBASE_FOREACH (IDOverrideLibraryProperty *, op, &override->properties) {
@@ -207,20 +210,20 @@ void BKE_lib_override_library_clear(IDOverrideLibrary 
*override, const bool do_i
   }
 }
 
-void BKE_lib_override_library_free(struct IDOverrideLibrary **override, const 
bool do_id_user)
+void BKE_lib_override_library_free(IDOverrideLibrary **override, const bool 
do_id_user)
 {
-  BLI_assert(*override != NULL);
+  BLI_assert(*override != nullptr);
 
-  if ((*override)->runtime != NULL) {
-    if ((*override)->runtime->rna_path_to_override_properties != NULL) {
-      BLI_ghash_free((*override)->runtime->rna_path_to_override_properties, 
NULL, NULL);
+  if ((*override)->runtime != nullptr) {
+    if ((*override)->runtime->rna_path_to_override_properties != nullptr) {
+      BLI_ghash_free((*override)->runtime->rna_path_to_override_properties, 
nullptr, nullptr);
     }
     MEM_SAFE_FREE((*override)->runtime);
   }
 
   BKE_lib_override_library_clear(*override, do_id_user);
   MEM_freeN(*override);
-  *override = NULL;
+  *override = nullptr;
 }
 
 static ID *lib_override_library_create_from(Main *bmain,
@@ -232,12 +235,12 @@ static ID *lib_override_library_create_from(Main *bmain,
    * override template, or already an override of some other ref data). */
   ID *local_id = BKE_id_copy_ex(bmain,
                                 reference_id,
-                                NULL,
+                                nullptr,
                                 LIB_ID_COPY_DEFAULT | 
LIB_ID_COPY_NO_LIB_OVERRIDE |
                                     lib_id_copy_flags);
 
-  if (local_id == NULL) {
-    return NULL;
+  if (local_id == nullptr) {
+    return nullptr;
   }
   id_us_min(local_id);
 
@@ -253,9 +256,9 @@ static ID *lib_override_library_create_from(Main *bmain,
    * data-blocks, just like root node trees or master collections. Therefore, 
we never need to
    * create overrides for them. We need a way to mark them as overrides 
though. */
   Key *reference_key;
-  if ((reference_key = BKE_key_from_id(reference_id)) != NULL) {
+  if ((reference_key = BKE_key_from_id(reference_id)) != nullptr) {
     Key *local_key = BKE_key_from_id(local_id);
-    BLI_assert(local_key != NULL);
+    BLI_assert(local_key != nullptr);
     local_key->id.flag |= LIB_EMBEDDED_DATA_LIB_OVERRIDE;
   }
 
@@ -264,7 +267,7 @@ static ID *lib_override_library_create_from(Main *bmain,
 
 /* TODO: This could be simplified by storing a flag in #IDOverrideLibrary
  * during the diffing process? */
-bool BKE_lib_override_library_is_user_edited(struct ID *id)
+bool BKE_lib_override_library_is_user_edited(ID *id)
 {
 
   if (!ID_IS_OVERRIDE_LIBRARY(id)) {
@@ -310,9 +313,9 @@ static int 
foreachid_is_hierarchy_leaf_fn(LibraryIDLinkCallbackData *cb_data)
 {
   ID *id_owner = cb_data->id_owner;
   ID *id = *cb_data->id_pointer;
-  bool *is_leaf = cb_data->user_data;
+  bool *is_leaf = static_cast<bool *>(cb_data->user_data);
 
-  if (id != NULL && ID_IS_OVERRIDE_LIBRARY_REAL(id) &&
+  if (id != nullptr && ID_IS_OVERRIDE_LIBRARY_REAL(id) &&
       id->override_library->hierarchy_root == 
id_owner->override_library->hierarchy_root) {
     *is_leaf = false;
     return IDWALK_RET_STOP_ITER;
@@ -336,10 +339,10 @@ ID *BKE_lib_override_library_create_from_id(Main *bmain,
                                             ID *reference_id,
                                             const bool do_tagged_remap)
 {
-  BLI_assert(reference_id != NULL);
+  BLI_assert(reference_id != nullptr);
   BLI_assert(ID_IS_LINKED(reference_id));
 
-  ID *local_id = lib_override_library_create_from(bmain, NULL, reference_id, 
0);
+  ID *local_id = lib_override_library_create_from(bmain, nullptr, 
reference_id, 0);
   /* We cannot allow automatic hierarchy resync on this ID, it is highly 
likely to generate a giant
    * mess in case there are a lot of hidden, non-instantiated, non-properly 
organized dependencies.
    * Ref T94650. */
@@ -348,10 +351,10 @@ ID *BKE_lib_override_library_create_fro

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to