Depsgraph: Cleanup, make naming more understandable
[blender.git] / source / blender / depsgraph / intern / depsgraph_type_defines.cc
index 4ce91516c84a924d4046a75a279082115338c281..f51bfaff06e7d3b0c7256c5e3b4181b1e08323b5 100644 (file)
 
 #include <cstdlib>  // for BLI_assert()
 
-extern "C" {
+
 #include "BLI_utildefines.h"
 #include "BLI_ghash.h"
 
 #include "DEG_depsgraph.h"
-} /* extern "C" */
 
 #include "intern/nodes/deg_node.h"
 #include "intern/nodes/deg_node_component.h"
@@ -52,14 +51,7 @@ namespace DEG {
 
 /* Global type registry */
 
-/**
- * \note For now, this is a hashtable not array, since the core node types
- * currently do not have contiguous ID values. Using a hash here gives us
- * more flexibility, albeit using more memory and also sacrificing a little
- * speed. Later on, when things stabilise we may turn this back to an array
- * since there are only just a few node types that an array would cope fine...
- */
-static GHash *_depsnode_typeinfo_registry = NULL;
+static DepsNodeFactory *depsnode_typeinfo_registry[NUM_DEG_NODE_TYPES] = {NULL};
 
 /* Registration ------------------------------------------- */
 
@@ -67,16 +59,16 @@ static GHash *_depsnode_typeinfo_registry = NULL;
 void deg_register_node_typeinfo(DepsNodeFactory *factory)
 {
        BLI_assert(factory != NULL);
-       BLI_ghash_insert(_depsnode_typeinfo_registry, SET_INT_IN_POINTER(factory->type()), factory);
+       depsnode_typeinfo_registry[factory->type()] = factory;
 }
 
 /* Getters ------------------------------------------------- */
 
 /* Get typeinfo for specified type */
-DepsNodeFactory *deg_get_node_factory(const eDepsNode_Type type)
+DepsNodeFactory *deg_type_get_factory(const eDepsNode_Type type)
 {
        /* look up type - at worst, it doesn't exist in table yet, and we fail */
-       return (DepsNodeFactory *)BLI_ghash_lookup(_depsnode_typeinfo_registry, SET_INT_IN_POINTER(type));
+       return depsnode_typeinfo_registry[type];
 }
 
 /* Get typeinfo for provided node */
@@ -85,7 +77,7 @@ DepsNodeFactory *deg_node_get_factory(const DepsNode *node)
        if (node != NULL) {
                return NULL;
        }
-       return deg_get_node_factory(node->type);
+       return deg_type_get_factory(node->type);
 }
 
 /* Stringified opcodes ------------------------------------- */
@@ -96,39 +88,49 @@ static const char *stringify_opcode(eDepsOperation_Code opcode)
 {
        switch (opcode) {
 #define STRINGIFY_OPCODE(name) case DEG_OPCODE_##name: return #name
+               /* Generic Operations. */
                STRINGIFY_OPCODE(OPERATION);
+               STRINGIFY_OPCODE(PARAMETERS_EVAL);
                STRINGIFY_OPCODE(PLACEHOLDER);
-               STRINGIFY_OPCODE(NOOP);
+               /* Animation, Drivers, etc. */
                STRINGIFY_OPCODE(ANIMATION);
                STRINGIFY_OPCODE(DRIVER);
-               //STRINGIFY_OPCODE(PROXY);
+               /* Transform. */
                STRINGIFY_OPCODE(TRANSFORM_LOCAL);
                STRINGIFY_OPCODE(TRANSFORM_PARENT);
                STRINGIFY_OPCODE(TRANSFORM_CONSTRAINTS);
-               //STRINGIFY_OPCODE(TRANSFORM_CONSTRAINTS_INIT);
-               //STRINGIFY_OPCODE(TRANSFORM_CONSTRAINT);
-               //STRINGIFY_OPCODE(TRANSFORM_CONSTRAINTS_DONE);
+               STRINGIFY_OPCODE(TRANSFORM_FINAL);
+               STRINGIFY_OPCODE(TRANSFORM_OBJECT_UBEREVAL);
+               /* Rigid body. */
                STRINGIFY_OPCODE(RIGIDBODY_REBUILD);
                STRINGIFY_OPCODE(RIGIDBODY_SIM);
-               STRINGIFY_OPCODE(TRANSFORM_RIGIDBODY);
-               STRINGIFY_OPCODE(TRANSFORM_FINAL);
-               STRINGIFY_OPCODE(OBJECT_UBEREVAL);
+               STRINGIFY_OPCODE(RIGIDBODY_TRANSFORM_COPY);
+               /* Geometry. */
                STRINGIFY_OPCODE(GEOMETRY_UBEREVAL);
-               STRINGIFY_OPCODE(GEOMETRY_MODIFIER);
-               STRINGIFY_OPCODE(GEOMETRY_PATH);
+               STRINGIFY_OPCODE(GEOMETRY_CLOTH_MODIFIER);
+               STRINGIFY_OPCODE(GEOMETRY_SHAPEKEY);
+               /* Pose. */
                STRINGIFY_OPCODE(POSE_INIT);
+               STRINGIFY_OPCODE(POSE_INIT_IK);
                STRINGIFY_OPCODE(POSE_DONE);
                STRINGIFY_OPCODE(POSE_IK_SOLVER);
                STRINGIFY_OPCODE(POSE_SPLINE_IK_SOLVER);
+               /* Bone. */
                STRINGIFY_OPCODE(BONE_LOCAL);
                STRINGIFY_OPCODE(BONE_POSE_PARENT);
                STRINGIFY_OPCODE(BONE_CONSTRAINTS);
-               //STRINGIFY_OPCODE(BONE_CONSTRAINTS_INIT);
-               //STRINGIFY_OPCODE(BONE_CONSTRAINT);
-               //STRINGIFY_OPCODE(BONE_CONSTRAINTS_DONE);
                STRINGIFY_OPCODE(BONE_READY);
                STRINGIFY_OPCODE(BONE_DONE);
-               STRINGIFY_OPCODE(PSYS_EVAL);
+               /* Particles. */
+               STRINGIFY_OPCODE(PARTICLE_SYSTEM_EVAL_INIT);
+               STRINGIFY_OPCODE(PARTICLE_SYSTEM_EVAL);
+               /* Masks. */
+               STRINGIFY_OPCODE(MASK_ANIMATION);
+               STRINGIFY_OPCODE(MASK_EVAL);
+               /* Shading. */
+               STRINGIFY_OPCODE(SHADING);
+               /* Movie clip. */
+               STRINGIFY_OPCODE(MOVIECLIP_EVAL);
 
                case DEG_NUM_OPCODES: return "SpecialCase";
 #undef STRINGIFY_OPCODE
@@ -145,7 +147,7 @@ DepsOperationStringifier::DepsOperationStringifier()
 
 const char *DepsOperationStringifier::operator[](eDepsOperation_Code opcode)
 {
-       BLI_assert((opcode > 0) && (opcode < DEG_NUM_OPCODES));
+       BLI_assert((opcode >= 0) && (opcode < DEG_NUM_OPCODES));
        if (opcode >= 0 && opcode < DEG_NUM_OPCODES) {
                return names_[opcode];
        }
@@ -157,9 +159,6 @@ const char *DepsOperationStringifier::operator[](eDepsOperation_Code opcode)
 /* Register all node types */
 void DEG_register_node_types(void)
 {
-       /* initialise registry */
-       DEG::_depsnode_typeinfo_registry = BLI_ghash_int_new("Depsgraph Node Type Registry");
-
        /* register node types */
        DEG::deg_register_base_depsnodes();
        DEG::deg_register_component_depsnodes();
@@ -169,5 +168,4 @@ void DEG_register_node_types(void)
 /* Free registry on exit */
 void DEG_free_node_types(void)
 {
-       BLI_ghash_free(DEG::_depsnode_typeinfo_registry, NULL, NULL);
 }