1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| /*
| * 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
|
|