blob: 2a33ad06c76f1d55e02ae20e29c7e25461dff363 [file] [log] [blame]
* 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;