[Bf-blender-cvs] [6ba6e97407e] geometry-nodes: Geometry Nodes: Move GeometrySet classes to global namespace

Jacques Lucke noreply at git.blender.org
Mon Nov 16 12:15:34 CET 2020


Commit: 6ba6e97407e5b4d3feee6edf7b6b66caf8313491
Author: Jacques Lucke
Date:   Mon Nov 16 12:07:51 2020 +0100
Branches: geometry-nodes
https://developer.blender.org/rB6ba6e97407e5b4d3feee6edf7b6b66caf8313491

Geometry Nodes: Move GeometrySet classes to global namespace

Brecht and I decided to move the GeometrySet classes
to the global namespace for now. This way we can use
the same type in C and C++ and don't have to use
reinterpret_cast as often.

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

M	source/blender/blenkernel/BKE_geometry_set.h
M	source/blender/blenkernel/BKE_geometry_set.hh
M	source/blender/blenkernel/BKE_modifier.h
M	source/blender/blenkernel/intern/geometry_set.cc
M	source/blender/blenkernel/intern/pointcloud.cc
M	source/blender/depsgraph/intern/depsgraph_query_iter.cc
M	source/blender/makesdna/DNA_object_types.h
M	source/blender/modifiers/intern/MOD_nodes.cc
M	source/blender/nodes/NOD_geometry_exec.hh
M	source/blender/nodes/geometry/node_geometry_exec.cc
M	source/blender/nodes/geometry/nodes/node_geo_point_instance.cc
M	source/blender/nodes/intern/node_socket.cc

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

diff --git a/source/blender/blenkernel/BKE_geometry_set.h b/source/blender/blenkernel/BKE_geometry_set.h
index be36ab47f85..902995f6aa5 100644
--- a/source/blender/blenkernel/BKE_geometry_set.h
+++ b/source/blender/blenkernel/BKE_geometry_set.h
@@ -25,15 +25,14 @@ extern "C" {
 #endif
 
 struct Object;
+struct GeometrySet;
 
-typedef struct GeometrySetC GeometrySetC;
+void BKE_geometry_set_user_add(struct GeometrySet *geometry_set);
+void BKE_geometry_set_user_remove(struct GeometrySet *geometry_set);
 
-void BKE_geometry_set_user_add(GeometrySetC *geometry_set_c);
-void BKE_geometry_set_user_remove(GeometrySetC *geometry_set_c);
+bool BKE_geometry_set_has_instances(const struct GeometrySet *geometry_set);
 
-bool BKE_geometry_set_has_instances(const GeometrySetC *geometry_set_c);
-
-int BKE_geometry_set_instances(const GeometrySetC *geometry_set_c,
+int BKE_geometry_set_instances(const struct GeometrySet *geometry_set,
                                float (**r_positions)[3],
                                struct Object ***r_objects);
 
diff --git a/source/blender/blenkernel/BKE_geometry_set.hh b/source/blender/blenkernel/BKE_geometry_set.hh
index e2200d79cb8..0bc9352de37 100644
--- a/source/blender/blenkernel/BKE_geometry_set.hh
+++ b/source/blender/blenkernel/BKE_geometry_set.hh
@@ -34,10 +34,8 @@ struct Mesh;
 struct PointCloud;
 struct Object;
 
-namespace blender::bke {
-
 /* An automatically reference counted geometry set. */
-using GeometrySetPtr = UserCounter<class GeometrySet>;
+using GeometrySetPtr = blender::UserCounter<class GeometrySet>;
 
 /* Each geometry component has a specific type. The type determines what kind of data the component
  * stores. Functions modifying a geometry will usually just modify a subset of the component types.
@@ -57,20 +55,16 @@ enum class GeometryOwnershipType {
   ReadOnly = 2,
 };
 
-}  // namespace blender::bke
-
 /* Make it possible to use the component type as key in hash tables. */
 namespace blender {
-template<> struct DefaultHash<bke::GeometryComponentType> {
-  uint64_t operator()(const bke::GeometryComponentType &value) const
+template<> struct DefaultHash<GeometryComponentType> {
+  uint64_t operator()(const GeometryComponentType &value) const
   {
     return (uint64_t)value;
   }
 };
 }  // namespace blender
 
-namespace blender::bke {
-
 /**
  * This is the base class for specialized geometry component types.
  */
@@ -109,8 +103,8 @@ class GeometrySet {
    * it is above 1, the geometry set is immutable. */
   std::atomic<int> users_ = 1;
 
-  using GeometryComponentPtr = UserCounter<class GeometryComponent>;
-  Map<GeometryComponentType, GeometryComponentPtr> components_;
+  using GeometryComponentPtr = blender::UserCounter<class GeometryComponent>;
+  blender::Map<GeometryComponentType, GeometryComponentPtr> components_;
 
  public:
   GeometrySet() = default;
@@ -171,7 +165,7 @@ class MeshComponent : public GeometryComponent {
   /* Due to historical design choices, vertex group data is stored in the mesh, but the vertex
    * group names are stored on an object. Since we don't have an object here, we copy over the
    * names into this map. */
-  Map<std::string, int> vertex_group_names_;
+  blender::Map<std::string, int> vertex_group_names_;
 
  public:
   ~MeshComponent();
@@ -183,7 +177,7 @@ class MeshComponent : public GeometryComponent {
   Mesh *release();
 
   void copy_vertex_group_names_from_object(const struct Object &object);
-  int vertex_group_index(StringRef vertex_group_name) const;
+  int vertex_group_index(blender::StringRef vertex_group_name) const;
 
   const Mesh *get_for_read() const;
   Mesh *get_for_write();
@@ -216,42 +210,21 @@ class PointCloudComponent : public GeometryComponent {
 /** A geometry component that stores instances. */
 class InstancesComponent : public GeometryComponent {
  private:
-  Vector<float3> positions_;
-  Vector<const Object *> objects_;
+  blender::Vector<blender::float3> positions_;
+  blender::Vector<const Object *> objects_;
 
  public:
   ~InstancesComponent() = default;
   GeometryComponent *copy() const override;
 
-  void replace(Vector<float3> positions, Vector<const Object *> objects);
-  void replace(Vector<float3> positions, const Object *object);
+  void replace(blender::Vector<blender::float3> positions,
+               blender::Vector<const Object *> objects);
+  void replace(blender::Vector<blender::float3> positions, const Object *object);
 
-  Span<const Object *> objects() const;
-  Span<float3> positions() const;
-  MutableSpan<float3> positions();
+  blender::Span<const Object *> objects() const;
+  blender::Span<blender::float3> positions() const;
+  blender::MutableSpan<blender::float3> positions();
   int instances_amount() const;
 
   static constexpr inline GeometryComponentType type = GeometryComponentType::Instances;
 };
-
-inline GeometrySetC *wrap(blender::bke::GeometrySet *geometry_set)
-{
-  return reinterpret_cast<GeometrySetC *>(geometry_set);
-}
-
-inline const GeometrySetC *wrap(const blender::bke::GeometrySet *geometry_set)
-{
-  return reinterpret_cast<const GeometrySetC *>(geometry_set);
-}
-
-inline blender::bke::GeometrySet *unwrap(GeometrySetC *geometry_set_c)
-{
-  return reinterpret_cast<blender::bke::GeometrySet *>(geometry_set_c);
-}
-
-inline const blender::bke::GeometrySet *unwrap(const GeometrySetC *geometry_set_c)
-{
-  return reinterpret_cast<const blender::bke::GeometrySet *>(geometry_set_c);
-}
-
-}  // namespace blender::bke
diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h
index 868f13e3488..5032e1985c4 100644
--- a/source/blender/blenkernel/BKE_modifier.h
+++ b/source/blender/blenkernel/BKE_modifier.h
@@ -43,7 +43,7 @@ struct ModifierData;
 struct Object;
 struct Scene;
 struct bArmature;
-struct GeometrySetC;
+struct GeometrySet;
 
 typedef enum {
   /* Should not be used, only for None modifier type */
@@ -247,9 +247,9 @@ typedef struct ModifierTypeInfo {
   struct Hair *(*modifyHair)(struct ModifierData *md,
                              const struct ModifierEvalContext *ctx,
                              struct Hair *hair);
-  struct GeometrySetC *(*modifyPointCloud)(struct ModifierData *md,
-                                           const struct ModifierEvalContext *ctx,
-                                           struct GeometrySetC *geometry_set_c);
+  struct GeometrySet *(*modifyPointCloud)(struct ModifierData *md,
+                                          const struct ModifierEvalContext *ctx,
+                                          struct GeometrySet *geometry_set);
   struct Volume *(*modifyVolume)(struct ModifierData *md,
                                  const struct ModifierEvalContext *ctx,
                                  struct Volume *volume);
diff --git a/source/blender/blenkernel/intern/geometry_set.cc b/source/blender/blenkernel/intern/geometry_set.cc
index af07b66eb3c..6d7cce34e7e 100644
--- a/source/blender/blenkernel/intern/geometry_set.cc
+++ b/source/blender/blenkernel/intern/geometry_set.cc
@@ -23,7 +23,11 @@
 
 #include "MEM_guardedalloc.h"
 
-namespace blender::bke {
+using blender::float3;
+using blender::MutableSpan;
+using blender::Span;
+using blender::StringRef;
+using blender::Vector;
 
 /* -------------------------------------------------------------------- */
 /** \name Geometry Component
@@ -462,34 +466,29 @@ int InstancesComponent::instances_amount() const
 
 /** \} */
 
-}  // namespace blender::bke
-
 /* -------------------------------------------------------------------- */
 /** \name C API
  * \{ */
 
-void BKE_geometry_set_user_add(GeometrySetC *geometry_set_c)
+void BKE_geometry_set_user_add(GeometrySet *geometry_set)
 {
-  blender::bke::unwrap(geometry_set_c)->user_add();
+  geometry_set->user_add();
 }
 
-void BKE_geometry_set_user_remove(GeometrySetC *geometry_set_c)
+void BKE_geometry_set_user_remove(GeometrySet *geometry_set)
 {
-  blender::bke::unwrap(geometry_set_c)->user_remove();
+  geometry_set->user_remove();
 }
 
-bool BKE_geometry_set_has_instances(const GeometrySetC *geometry_set_c)
+bool BKE_geometry_set_has_instances(const GeometrySet *geometry_set)
 {
-  return blender::bke::unwrap(geometry_set_c)
-             ->get_component_for_read<blender::bke::InstancesComponent>() != nullptr;
+  return geometry_set->get_component_for_read<InstancesComponent>() != nullptr;
 }
 
-int BKE_geometry_set_instances(const GeometrySetC *geometry_set_c,
+int BKE_geometry_set_instances(const GeometrySet *geometry_set,
                                float (**r_positions)[3],
                                Object ***r_objects)
 {
-  using namespace blender::bke;
-  const GeometrySet *geometry_set = unwrap(geometry_set_c);
   const InstancesComponent *component = geometry_set->get_component_for_read<InstancesComponent>();
   if (component == nullptr) {
     return 0;
diff --git a/source/blender/blenkernel/intern/pointcloud.cc b/source/blender/blenkernel/intern/pointcloud.cc
index 1af9e8f84f0..677bd2e5201 100644
--- a/source/blender/blenkernel/intern/pointcloud.cc
+++ b/source/blender/blenkernel/intern/pointcloud.cc
@@ -332,14 +332,11 @@ PointCloud *BKE_pointcloud_copy_for_eval(struct PointCloud *pointcloud_src, bool
   return result;
 }
 
-static blender::bke::GeometrySetPtr pointcloud_evaluate_modifiers(
-    struct Depsgraph *depsgraph,
-    struct Scene *scene,
-    Object *object,
-    blender::bke::GeometrySetPtr geometry_set)
+static GeometrySetPtr pointcloud_evaluate_modifiers(struct Depsgraph *depsgraph,
+                                                    struct Scene *scene,
+                                                    Object *object,
+                                                    GeometrySetPtr geometry_set)
 {
-  using namespace blender::bke;
-
   /* Modifier evaluation modes. */
   const bool use_render = (DEG_get_mode(depsgraph) == DAG_EVAL_RENDER);
   const int required_mode = use_render ? eModifierMode_Render : eModifierMode_Realtime;
@@ -360,10 +357,10 @@ static blender::bke::GeometrySetPtr pointcloud_evaluate_modifiers(
     }
 
     if (mti->modifyPointCloud) {
-      GeometrySetC *modifier_input_geometry_set = wrap(geometry_set.release());
-      Geomet

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list