Changeset View
Changeset View
Standalone View
Standalone View
source/blender/depsgraph/util/deg_util_function.h
| Show All 24 Lines | |||||
| */ | */ | ||||
| /** \file blender/depsgraph/util/deg_util_function.h | /** \file blender/depsgraph/util/deg_util_function.h | ||||
| * \ingroup depsgraph | * \ingroup depsgraph | ||||
| */ | */ | ||||
| #pragma once | #pragma once | ||||
| #if (__cplusplus > 199711L) || (defined(_MSC_VER) && _MSC_VER >= 1900) | |||||
| #include <functional> | #include <functional> | ||||
| using std::function; | using std::function; | ||||
| using namespace std::placeholders; | using namespace std::placeholders; | ||||
| #define function_bind std::bind | #define function_bind std::bind | ||||
| #elif defined(HAVE_BOOST_FUNCTION_BINDINGS) | |||||
| #include <boost/bind.hpp> | |||||
| #include <boost/function.hpp> | |||||
| using boost::function; | |||||
| #define function_bind boost::bind | |||||
| #else | |||||
| #pragma message("No available function binding implementation. Using stub instead, disabling new depsgraph") | |||||
| #ifndef WITH_LEGACY_DEPSGRAPH | |||||
| # error "Unable to build new depsgraph and legacy one is disabled." | |||||
| #endif | |||||
| #define DISABLE_NEW_DEPSGRAPH | |||||
| #include "BLI_utildefines.h" | |||||
| #include <cstdlib> | |||||
| template<typename T> | |||||
| class function { | |||||
| public: | |||||
| function() {}; | |||||
| function(void *) {} | |||||
| operator bool() const { return false; } | |||||
| bool operator== (void *) { return false; } | |||||
| template<typename T1> | |||||
| void operator() (T1) { | |||||
| BLI_assert(!"Should not be used"); | |||||
| } | |||||
| }; | |||||
| class Wrap { | |||||
| public: | |||||
| Wrap() {} | |||||
| template <typename T> | |||||
| Wrap(T /*arg*/) {} | |||||
| }; | |||||
| template <typename T> | |||||
| void *function_bind(T func, | |||||
| Wrap arg1 = Wrap(), | |||||
| Wrap arg2 = Wrap(), | |||||
| Wrap arg3 = Wrap(), | |||||
| Wrap arg4 = Wrap(), | |||||
| Wrap arg5 = Wrap(), | |||||
| Wrap arg6 = Wrap(), | |||||
| Wrap arg7 = Wrap()) | |||||
| { | |||||
| BLI_assert(!"Should not be used"); | |||||
| (void)func; | |||||
| (void)arg1; | |||||
| (void)arg2; | |||||
| (void)arg3; | |||||
| (void)arg4; | |||||
| (void)arg5; | |||||
| (void)arg6; | |||||
| (void)arg7; | |||||
| return NULL; | |||||
| } | |||||
| #define _1 Wrap() | |||||
| #define _2 Wrap() | |||||
| #define _3 Wrap() | |||||
| #define _4 Wrap() | |||||
| #endif | |||||