/* * Copyright 2017 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkVptr_DEFINED #define SkVptr_DEFINED #include <string.h> #include <type_traits> // Experimentally, see if we can get at the vptr of objects with one. template <typename T> static inline void* SkVptr(const T& object) { static_assert(std::has_virtual_destructor<T>::value, ""); void* vptr; memcpy(&vptr, (const void*)&object, sizeof(vptr)); return vptr; } #endif//SkVptr_DEFINED