/* | |
* 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 |