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