[Bf-blender-cvs] [b24e091c5a9] master: Cleanup: Move attribute.c to C++

Hans Goudey noreply at git.blender.org
Mon May 30 18:06:48 CEST 2022


Commit: b24e091c5a99388a584568271ddf3d3b2f1f4388
Author: Hans Goudey
Date:   Mon May 30 18:06:39 2022 +0200
Branches: master
https://developer.blender.org/rBb24e091c5a99388a584568271ddf3d3b2f1f4388

Cleanup: Move attribute.c to C++

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

M	source/blender/blenkernel/CMakeLists.txt
R090	source/blender/blenkernel/intern/attribute.c	source/blender/blenkernel/intern/attribute.cc

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

diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt
index 4edec268fe8..0b5f252b0d6 100644
--- a/source/blender/blenkernel/CMakeLists.txt
+++ b/source/blender/blenkernel/CMakeLists.txt
@@ -76,7 +76,7 @@ set(SRC
   intern/asset_catalog_path.cc
   intern/asset_library.cc
   intern/asset_library_service.cc
-  intern/attribute.c
+  intern/attribute.cc
   intern/attribute_access.cc
   intern/attribute_math.cc
   intern/autoexec.c
diff --git a/source/blender/blenkernel/intern/attribute.c b/source/blender/blenkernel/intern/attribute.cc
similarity index 90%
rename from source/blender/blenkernel/intern/attribute.c
rename to source/blender/blenkernel/intern/attribute.cc
index 7f93eb7b393..0007fea62cb 100644
--- a/source/blender/blenkernel/intern/attribute.c
+++ b/source/blender/blenkernel/intern/attribute.cc
@@ -7,7 +7,7 @@
  * on top of CustomData, which manages individual domains.
  */
 
-#include <string.h>
+#include <cstring>
 
 #include "MEM_guardedalloc.h"
 
@@ -18,6 +18,7 @@
 #include "DNA_meshdata_types.h"
 #include "DNA_pointcloud_types.h"
 
+#include "BLI_index_range.hh"
 #include "BLI_string_utf8.h"
 #include "BLI_string_utils.h"
 
@@ -30,10 +31,12 @@
 
 #include "RNA_access.h"
 
-typedef struct DomainInfo {
+using blender::IndexRange;
+
+struct DomainInfo {
   CustomData *customdata;
   int length;
-} DomainInfo;
+};
 
 static void get_domains(const ID *id, DomainInfo info[ATTR_DOMAIN_NUM])
 {
@@ -49,7 +52,7 @@ static void get_domains(const ID *id, DomainInfo info[ATTR_DOMAIN_NUM])
     case ID_ME: {
       Mesh *mesh = (Mesh *)id;
       BMEditMesh *em = mesh->edit_mesh;
-      if (em != NULL) {
+      if (em != nullptr) {
         BMesh *bm = em->bm;
         info[ATTR_DOMAIN_POINT].customdata = &bm->vdata;
         info[ATTR_DOMAIN_POINT].length = bm->totvert;
@@ -90,7 +93,7 @@ static CustomData *attribute_customdata_find(ID *id, CustomDataLayer *layer)
   DomainInfo info[ATTR_DOMAIN_NUM];
   get_domains(id, info);
 
-  for (AttributeDomain domain = 0; domain < ATTR_DOMAIN_NUM; domain++) {
+  for (const int domain : IndexRange(ATTR_DOMAIN_NUM)) {
     CustomData *customdata = info[domain].customdata;
     if (customdata &&
         ARRAY_HAS_ITEM((CustomDataLayer *)layer, customdata->layers, customdata->totlayer)) {
@@ -98,14 +101,14 @@ static CustomData *attribute_customdata_find(ID *id, CustomDataLayer *layer)
     }
   }
 
-  return NULL;
+  return nullptr;
 }
 
-bool BKE_id_attributes_supported(struct ID *id)
+bool BKE_id_attributes_supported(ID *id)
 {
   DomainInfo info[ATTR_DOMAIN_NUM];
   get_domains(id, info);
-  for (AttributeDomain domain = 0; domain < ATTR_DOMAIN_NUM; domain++) {
+  for (const int domain : IndexRange(ATTR_DOMAIN_NUM)) {
     if (info[domain].customdata) {
       return true;
     }
@@ -124,7 +127,7 @@ bool BKE_id_attribute_rename(ID *id,
   }
 
   CustomData *customdata = attribute_customdata_find(id, layer);
-  if (customdata == NULL) {
+  if (customdata == nullptr) {
     BKE_report(reports, RPT_ERROR, "Attribute is not part of this geometry");
     return false;
   }
@@ -134,9 +137,9 @@ bool BKE_id_attribute_rename(ID *id,
   return true;
 }
 
-typedef struct AttrUniqueData {
+struct AttrUniqueData {
   ID *id;
-} AttrUniqueData;
+};
 
 static bool unique_name_cb(void *arg, const char *name)
 {
@@ -145,7 +148,7 @@ static bool unique_name_cb(void *arg, const char *name)
   DomainInfo info[ATTR_DOMAIN_NUM];
   get_domains(data->id, info);
 
-  for (AttributeDomain domain = ATTR_DOMAIN_POINT; domain < ATTR_DOMAIN_NUM; domain++) {
+  for (const int domain : IndexRange(ATTR_DOMAIN_NUM)) {
     if (!info[domain].customdata) {
       continue;
     }
@@ -165,11 +168,12 @@ static bool unique_name_cb(void *arg, const char *name)
 
 bool BKE_id_attribute_calc_unique_name(ID *id, const char *name, char *outname)
 {
-  AttrUniqueData data = {.id = id};
+  AttrUniqueData data{id};
 
   BLI_strncpy_utf8(outname, name, MAX_CUSTOMDATA_LAYER_NAME);
 
-  return BLI_uniquename_cb(unique_name_cb, &data, NULL, '.', outname, MAX_CUSTOMDATA_LAYER_NAME);
+  return BLI_uniquename_cb(
+      unique_name_cb, &data, nullptr, '.', outname, MAX_CUSTOMDATA_LAYER_NAME);
 }
 
 CustomDataLayer *BKE_id_attribute_new(
@@ -179,9 +183,9 @@ CustomDataLayer *BKE_id_attribute_new(
   get_domains(id, info);
 
   CustomData *customdata = info[domain].customdata;
-  if (customdata == NULL) {
+  if (customdata == nullptr) {
     BKE_report(reports, RPT_ERROR, "Attribute domain not supported by this geometry type");
-    return NULL;
+    return nullptr;
   }
 
   char uniquename[MAX_CUSTOMDATA_LAYER_NAME];
@@ -191,24 +195,24 @@ CustomDataLayer *BKE_id_attribute_new(
     case ID_ME: {
       Mesh *me = (Mesh *)id;
       BMEditMesh *em = me->edit_mesh;
-      if (em != NULL) {
+      if (em != nullptr) {
         BM_data_layer_add_named(em->bm, customdata, type, uniquename);
       }
       else {
         CustomData_add_layer_named(
-            customdata, type, CD_DEFAULT, NULL, info[domain].length, uniquename);
+            customdata, type, CD_DEFAULT, nullptr, info[domain].length, uniquename);
       }
       break;
     }
     default: {
       CustomData_add_layer_named(
-          customdata, type, CD_DEFAULT, NULL, info[domain].length, uniquename);
+          customdata, type, CD_DEFAULT, nullptr, info[domain].length, uniquename);
       break;
     }
   }
 
   const int index = CustomData_get_named_layer_index(customdata, type, uniquename);
-  return (index == -1) ? NULL : &(customdata->layers[index]);
+  return (index == -1) ? nullptr : &(customdata->layers[index]);
 }
 
 bool BKE_id_attribute_remove(ID *id, CustomDataLayer *layer, ReportList *reports)
@@ -232,7 +236,7 @@ bool BKE_id_attribute_remove(ID *id, CustomDataLayer *layer, ReportList *reports
     case ID_ME: {
       Mesh *me = (Mesh *)id;
       BMEditMesh *em = me->edit_mesh;
-      if (em != NULL) {
+      if (em != nullptr) {
         BM_data_layer_free(em->bm, customdata, layer->type);
       }
       else {
@@ -260,8 +264,8 @@ CustomDataLayer *BKE_id_attribute_find(const ID *id,
   get_domains(id, info);
 
   CustomData *customdata = info[domain].customdata;
-  if (customdata == NULL) {
-    return NULL;
+  if (customdata == nullptr) {
+    return nullptr;
   }
 
   for (int i = 0; i < customdata->totlayer; i++) {
@@ -271,7 +275,7 @@ CustomDataLayer *BKE_id_attribute_find(const ID *id,
     }
   }
 
-  return NULL;
+  return nullptr;
 }
 
 int BKE_id_attributes_length(const ID *id, AttributeDomainMask domain_mask, CustomDataMask mask)
@@ -281,7 +285,7 @@ int BKE_id_attributes_length(const ID *id, AttributeDomainMask domain_mask, Cust
 
   int length = 0;
 
-  for (AttributeDomain domain = 0; domain < ATTR_DOMAIN_NUM; domain++) {
+  for (const int domain : IndexRange(ATTR_DOMAIN_NUM)) {
     CustomData *customdata = info[domain].customdata;
 
     if (customdata && ((1 << (int)domain) & domain_mask)) {
@@ -297,16 +301,16 @@ AttributeDomain BKE_id_attribute_domain(const ID *id, const CustomDataLayer *lay
   DomainInfo info[ATTR_DOMAIN_NUM];
   get_domains(id, info);
 
-  for (AttributeDomain domain = 0; domain < ATTR_DOMAIN_NUM; domain++) {
+  for (const int domain : IndexRange(ATTR_DOMAIN_NUM)) {
     CustomData *customdata = info[domain].customdata;
     if (customdata &&
         ARRAY_HAS_ITEM((CustomDataLayer *)layer, customdata->layers, customdata->totlayer)) {
-      return domain;
+      return static_cast<AttributeDomain>(domain);
     }
   }
 
   BLI_assert_msg(0, "Custom data layer not found in geometry");
-  return ATTR_DOMAIN_NUM;
+  return static_cast<AttributeDomain>(ATTR_DOMAIN_POINT);
 }
 
 int BKE_id_attribute_data_length(ID *id, CustomDataLayer *layer)
@@ -317,7 +321,7 @@ int BKE_id_attribute_data_length(ID *id, CustomDataLayer *layer)
   switch (GS(id->name)) {
     case ID_ME: {
       Mesh *mesh = (Mesh *)id;
-      if (mesh->edit_mesh != NULL) {
+      if (mesh->edit_mesh != nullptr) {
         return 0;
       }
     }
@@ -328,7 +332,7 @@ int BKE_id_attribute_data_length(ID *id, CustomDataLayer *layer)
   DomainInfo info[ATTR_DOMAIN_NUM];
   get_domains(id, info);
 
-  for (AttributeDomain domain = 0; domain < ATTR_DOMAIN_NUM; domain++) {
+  for (const int domain : IndexRange(ATTR_DOMAIN_NUM)) {
     CustomData *customdata = info[domain].customdata;
     if (customdata &&
         ARRAY_HAS_ITEM((CustomDataLayer *)layer, customdata->layers, customdata->totlayer)) {
@@ -366,7 +370,7 @@ CustomDataLayer *BKE_id_attributes_active_get(ID *id)
 
   int index = 0;
 
-  for (AttributeDomain domain = 0; domain < ATTR_DOMAIN_NUM; domain++) {
+  for (const int domain : IndexRange(ATTR_DOMAIN_NUM)) {
     CustomData *customdata = info[domain].customdata;
     if (customdata) {
       for (int i = 0; i < customdata->totlayer; i++) {
@@ -381,7 +385,7 @@ CustomDataLayer *BKE_id_attributes_active_get(ID *id)
     }
   }
 
-  return NULL;
+  return nullptr;
 }
 
 void BKE_id_attributes_active_set(ID *id, CustomDataLayer *active_layer)
@@ -391,7 +395,7 @@ void BKE_id_attributes_active_set(ID *id, CustomDataLayer *active_layer)
 
   int index = 0;
 
-  for (AttributeDomain domain = 0; domain < ATTR_DOMAIN_NUM; domain++) {
+  for (const int domain : IndexRange(ATTR_DOMAIN_NUM)) {
     CustomData *customdata = info[domain].customdata;
     if (customdata) {
       for (int i = 0; i < customdata->totlayer; i++) {
@@ -421,7 +425,7 @@ int *BKE_id_attributes_active_index_p(ID *id)
       return &((Curves *)id)->attributes_active_index;
     }
     default:
-      return NULL;
+      return nullptr;
   }
 }
 
@@ -430,9 +434,9 @@ CustomData *BKE_id_attributes_iterator_next_domain(ID *id, CustomDataLayer *laye
   DomainInfo info[ATTR_DOMAIN_NUM];
   get_domains(id, info);
 
-  bool use_next = (layers == NULL);
+  bool use_next = (layers == nullptr);
 
-  for (AttributeDomain domain = 0; domain < ATTR_DOMAIN_NUM; domain++) {
+  for (const int domain : IndexRange(ATTR_DOMAIN_NUM)) {
     CustomData *customdata = info[domain].customdata;
     if (customdata && customdata->layers && customdata->totlayer) {
       if (customdata->layers == layers) {
@@ -444,7 +448,7 @@ CustomData *BKE_id_attributes_iterator_next_domain(ID *id, CustomDataLayer

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list