Depsgraph: Cleanup, make naming more understandable
[blender.git] / source / blender / depsgraph / intern / depsgraph_type_defines.cc
index 96d68f4e024c38d4cf59ff4bbee3b8b561662772..f51bfaff06e7d3b0c7256c5e3b4181b1e08323b5 100644 (file)
@@ -51,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 ------------------------------------------- */
 
@@ -66,19 +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 */
@@ -87,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 ------------------------------------- */
@@ -139,6 +129,8 @@ static const char *stringify_opcode(eDepsOperation_Code opcode)
                STRINGIFY_OPCODE(MASK_EVAL);
                /* Shading. */
                STRINGIFY_OPCODE(SHADING);
+               /* Movie clip. */
+               STRINGIFY_OPCODE(MOVIECLIP_EVAL);
 
                case DEG_NUM_OPCODES: return "SpecialCase";
 #undef STRINGIFY_OPCODE
@@ -167,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();
@@ -179,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);
 }