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