diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-01-31 14:56:40 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-01-31 16:31:41 +0300 |
commit | c1da8e3b28f95188f9e9152383856c95f29586b4 (patch) | |
tree | 611acd206bfb126f076e78caa047b14bcd3673b6 /source/blender/depsgraph/intern/depsgraph_intern.h | |
parent | 7ccef23c4d010d4b4f83efe2cd6c82ff26824a10 (diff) |
Depsgraph: Comb code to a better state all over
Some summary of changes:
- Don't use DEG prefix for types and enumerator values:
the code is already inside DEG namespace.
- Put code where it locally belongs to: avoid having one
single header file with all sort of definitions in it.
- Take advantage of modern C++11 enabled by default.
Diffstat (limited to 'source/blender/depsgraph/intern/depsgraph_intern.h')
-rw-r--r-- | source/blender/depsgraph/intern/depsgraph_intern.h | 155 |
1 files changed, 0 insertions, 155 deletions
diff --git a/source/blender/depsgraph/intern/depsgraph_intern.h b/source/blender/depsgraph/intern/depsgraph_intern.h deleted file mode 100644 index 730e853363f..00000000000 --- a/source/blender/depsgraph/intern/depsgraph_intern.h +++ /dev/null @@ -1,155 +0,0 @@ -/* - * ***** BEGIN GPL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * The Original Code is Copyright (C) 2013 Blender Foundation. - * All rights reserved. - * - * Original Author: Joshua Leung - * Contributor(s): None Yet - * - * ***** END GPL LICENSE BLOCK ***** - */ - -/** \file blender/depsgraph/intern/depsgraph_intern.h - * \ingroup depsgraph - * - * API's for internal use in the Depsgraph - * - Also, defines for "Node Type Info" - */ - -#pragma once - -#include <cstdlib> - -#include "MEM_guardedalloc.h" - -extern "C" { -#include "BKE_global.h" -} - -#include "intern/nodes/deg_node.h" -#include "intern/nodes/deg_node_component.h" -#include "intern/nodes/deg_node_operation.h" -#include "intern/depsgraph.h" - -#include "DEG_depsgraph_debug.h" - -struct Collection; -struct DEGEditorUpdateContext; -struct ListBase; -struct Main; -struct Scene; - -namespace DEG { - -/* Node Types Handling ================================================= */ - -/* "Typeinfo" for Node Types ------------------------------------------- */ - -/* Typeinfo Struct (nti) */ -struct DepsNodeFactory { - virtual eDepsNode_Type type() const = 0; - virtual const char *tname() const = 0; - virtual int id_recalc_tag() const = 0; - - virtual DepsNode *create_node(const ID *id, - const char *subdata, - const char *name) const = 0; -}; - -template <class NodeType> -struct DepsNodeFactoryImpl : public DepsNodeFactory { - eDepsNode_Type type() const { return NodeType::typeinfo.type; } - const char *tname() const { return NodeType::typeinfo.tname; } - int id_recalc_tag() const { return NodeType::typeinfo.id_recalc_tag; } - - DepsNode *create_node(const ID *id, const char *subdata, const char *name) const - { - DepsNode *node = OBJECT_GUARDED_NEW(NodeType); - - /* populate base node settings */ - node->type = type(); - - if (name[0] != '\0') { - /* set name if provided ... */ - node->name = name; - } - else { - /* ... otherwise use default type name */ - node->name = tname(); - } - - node->init(id, subdata); - - return node; - } -}; - -/* Typeinfo Management -------------------------------------------------- */ - -/* Register typeinfo */ -void deg_register_node_typeinfo(DepsNodeFactory *factory); - -/* Get typeinfo for specified type */ -DepsNodeFactory *deg_type_get_factory(const eDepsNode_Type type); - -/* Editors Integration -------------------------------------------------- */ - -void deg_editors_id_update(const DEGEditorUpdateContext *update_ctx, - struct ID *id); - -void deg_editors_scene_update(const DEGEditorUpdateContext *update_ctx, - bool updated); - -#define DEG_DEBUG_PRINTF(depsgraph, type, ...) \ - do { \ - if (DEG_debug_flags_get(depsgraph) & G_DEBUG_DEPSGRAPH_ ## type) { \ - DEG_debug_print_begin(depsgraph); \ - fprintf(stdout, __VA_ARGS__); \ - } \ - } while (0) - -#define DEG_GLOBAL_DEBUG_PRINTF(type, ...) \ - do { \ - if (G.debug & G_DEBUG_DEPSGRAPH_ ## type) { \ - fprintf(stdout, __VA_ARGS__); \ - } \ - } while (0) - -#define DEG_ERROR_PRINTF(...) \ - do { \ - fprintf(stderr, __VA_ARGS__); \ - fflush(stderr); \ - } while (0) - -bool deg_terminal_do_color(void); -string deg_color_for_pointer(const void *pointer); -string deg_color_end(void); - -/* Physics Utilities -------------------------------------------------- */ - -struct ListBase *deg_build_effector_relations(Depsgraph *graph, struct Collection *collection); -struct ListBase *deg_build_collision_relations(Depsgraph *graph, struct Collection *collection, unsigned int modifier_type); -void deg_clear_physics_relations(Depsgraph *graph); - -/* Tagging Utilities -------------------------------------------------------- */ - -eDepsNode_Type deg_geometry_tag_to_component(const ID *id); -void deg_id_tag_update(Main *bmain, ID *id, int flag, eUpdateSource update_source); -void deg_graph_id_tag_update(Main *bmain, Depsgraph *graph, ID *id, int flag, eUpdateSource update_source); - -} // namespace DEG |