line |
true |
false |
branch |
16
|
0 |
0 |
if (!map) { |
17
|
0 |
0 |
thread_local DynCastCacheMap _map; |
32
|
0 |
0 |
if (!obj) return NULL; |
34
|
0 |
0 |
intptr_t key = (intptr_t)typeid(*obj).name(); |
37
|
0 |
0 |
DynCastCacheMap::iterator it = map.find(key); |
38
|
0 |
0 |
if (it != map.end()) |
39
|
0 |
0 |
return it->second != INCORRECT_PTRDIFF ? reinterpret_cast((char*)obj - it->second) : NULL; |
40
|
0 |
0 |
DERIVED* ret = dynamic_cast(obj); |
41
|
0 |
0 |
if (ret) map[key] = (char*)obj - (char*)ret; |
|
0 |
0 |
if (ret) map[key] = (char*)obj - (char*)ret; |
42
|
0 |
0 |
else map[key] = INCORRECT_PTRDIFF; |