/Users/deen/code/yugabyte-db/src/yb/util/cast.h
Line | Count | Source |
1 | | // Copyright (c) YugaByte, Inc. |
2 | | // |
3 | | // Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except |
4 | | // in compliance with the License. You may obtain a copy of the License at |
5 | | // |
6 | | // http://www.apache.org/licenses/LICENSE-2.0 |
7 | | // |
8 | | // Unless required by applicable law or agreed to in writing, software distributed under the License |
9 | | // is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express |
10 | | // or implied. See the License for the specific language governing permissions and limitations |
11 | | // under the License. |
12 | | // |
13 | | |
14 | | #ifndef YB_UTIL_CAST_H_ |
15 | | #define YB_UTIL_CAST_H_ |
16 | | |
17 | | #include <memory> |
18 | | |
19 | | namespace yb { |
20 | | |
21 | 3.60M | inline char* to_char_ptr(uint8_t* uptr) { |
22 | 3.60M | return reinterpret_cast<char *>(uptr); |
23 | 3.60M | } |
24 | | |
25 | 5.70G | inline const char* to_char_ptr(const uint8_t* uptr) { |
26 | 5.70G | return reinterpret_cast<const char *>(uptr); |
27 | 5.70G | } |
28 | | |
29 | 889M | inline uint8_t* to_uchar_ptr(char *ptr) { |
30 | 889M | return reinterpret_cast<uint8_t *>(ptr); |
31 | 889M | } |
32 | | |
33 | 41.6G | inline const uint8_t* to_uchar_ptr(const char *ptr) { |
34 | 41.6G | return reinterpret_cast<const uint8_t *>(ptr); |
35 | 41.6G | } |
36 | | |
37 | | template<class Out, class In> |
38 | 2.03G | Out pointer_cast(In* in) { |
39 | 2.03G | void* temp = in; |
40 | 2.03G | return static_cast<Out>(temp); |
41 | 2.03G | } _ZN2yb12pointer_castIPNSt3__16atomicIyEEyEET_PT0_ Line | Count | Source | 38 | 203M | Out pointer_cast(In* in) { | 39 | 203M | void* temp = in; | 40 | 203M | return static_cast<Out>(temp); | 41 | 203M | } |
_ZN2yb12pointer_castIPNSt3__16atomicIdEEdEET_PT0_ Line | Count | Source | 38 | 2.05M | Out pointer_cast(In* in) { | 39 | 2.05M | void* temp = in; | 40 | 2.05M | return static_cast<Out>(temp); | 41 | 2.05M | } |
_ZN2yb12pointer_castIPNSt3__16atomicIbEEbEET_PT0_ Line | Count | Source | 38 | 1.35G | Out pointer_cast(In* in) { | 39 | 1.35G | void* temp = in; | 40 | 1.35G | return static_cast<Out>(temp); | 41 | 1.35G | } |
_ZN2yb12pointer_castIPNSt3__16atomicIiEEiEET_PT0_ Line | Count | Source | 38 | 129M | Out pointer_cast(In* in) { | 39 | 129M | void* temp = in; | 40 | 129M | return static_cast<Out>(temp); | 41 | 129M | } |
_ZN2yb12pointer_castIPKchEET_PT0_ Line | Count | Source | 38 | 3.24M | Out pointer_cast(In* in) { | 39 | 3.24M | void* temp = in; | 40 | 3.24M | return static_cast<Out>(temp); | 41 | 3.24M | } |
Unexecuted instantiation: _ZN2yb12pointer_castIPN7rocksdb6DBImplENS1_2DBEEET_PT0_ Unexecuted instantiation: _ZN2yb12pointer_castIPN7rocksdb22ColumnFamilyHandleImplENS1_18ColumnFamilyHandleEEET_PT0_ _ZN2yb12pointer_castIPhcEET_PT0_ Line | Count | Source | 38 | 43.3M | Out pointer_cast(In* in) { | 39 | 43.3M | void* temp = in; | 40 | 43.3M | return static_cast<Out>(temp); | 41 | 43.3M | } |
_ZN2yb12pointer_castIPKcjEET_PT0_ Line | Count | Source | 38 | 6.04M | Out pointer_cast(In* in) { | 39 | 6.04M | void* temp = in; | 40 | 6.04M | return static_cast<Out>(temp); | 41 | 6.04M | } |
_ZN2yb12pointer_castIPNSt3__16atomicIxEExEET_PT0_ Line | Count | Source | 38 | 102M | Out pointer_cast(In* in) { | 39 | 102M | void* temp = in; | 40 | 102M | return static_cast<Out>(temp); | 41 | 102M | } |
Unexecuted instantiation: _ZN2yb12pointer_castIPcNS_7tserver17TServerSharedDataEEET_PT0_ Unexecuted instantiation: _ZN2yb12pointer_castIPKcmEET_PT0_ Unexecuted instantiation: _ZN2yb12pointer_castIPKcNS_5docdb17TransactionDumpOpEEET_PT0_ Unexecuted instantiation: _ZN2yb12pointer_castIPKcNS_7tserver17TServerSharedDataEEET_PT0_ _ZN2yb12pointer_castIPchEET_PT0_ Line | Count | Source | 38 | 2.61M | Out pointer_cast(In* in) { | 39 | 2.61M | void* temp = in; | 40 | 2.61M | return static_cast<Out>(temp); | 41 | 2.61M | } |
Unexecuted instantiation: _ZN2yb12pointer_castIPPvP10redisReplyEET_PT0_ Unexecuted instantiation: conflict_resolution.cc:_ZN2yb12pointer_castIPKhNS_5docdb12_GLOBAL__N_115TransactionDataEEET_PT0_ _ZN2yb12pointer_castIPcmEET_PT0_ Line | Count | Source | 38 | 27.9M | Out pointer_cast(In* in) { | 39 | 27.9M | void* temp = in; | 40 | 27.9M | return static_cast<Out>(temp); | 41 | 27.9M | } |
_ZN2yb12pointer_castIPhNS_8internal14ArenaComponentINS2_21ThreadSafeArenaTraitsEEEEET_PT0_ Line | Count | Source | 38 | 83.4M | Out pointer_cast(In* in) { | 39 | 83.4M | void* temp = in; | 40 | 83.4M | return static_cast<Out>(temp); | 41 | 83.4M | } |
_ZN2yb12pointer_castIPhNS_8internal14ArenaComponentINS2_11ArenaTraitsEEEEET_PT0_ Line | Count | Source | 38 | 6.41M | Out pointer_cast(In* in) { | 39 | 6.41M | void* temp = in; | 40 | 6.41M | return static_cast<Out>(temp); | 41 | 6.41M | } |
_ZN2yb12pointer_castIPNS_6Status5StateE15YBCStatusStructEET_PT0_ Line | Count | Source | 38 | 322k | Out pointer_cast(In* in) { | 39 | 322k | void* temp = in; | 40 | 322k | return static_cast<Out>(temp); | 41 | 322k | } |
_ZN2yb12pointer_castIP15YBCStatusStructNS_6Status5StateEEET_PT0_ Line | Count | Source | 38 | 77.2M | Out pointer_cast(In* in) { | 39 | 77.2M | void* temp = in; | 40 | 77.2M | return static_cast<Out>(temp); | 41 | 77.2M | } |
|
42 | | |
43 | | template<class Out, class In> |
44 | 57.4M | Out pointer_cast(const In* in) { |
45 | 57.4M | const void* temp = in; |
46 | 57.4M | return static_cast<Out>(temp); |
47 | 57.4M | } _ZN2yb12pointer_castIPKhcEET_PKT0_ Line | Count | Source | 44 | 36.9M | Out pointer_cast(const In* in) { | 45 | 36.9M | const void* temp = in; | 46 | 36.9M | return static_cast<Out>(temp); | 47 | 36.9M | } |
_ZN2yb12pointer_castIPKcPvEET_PKT0_ Line | Count | Source | 44 | 48 | Out pointer_cast(const In* in) { | 45 | 48 | const void* temp = in; | 46 | 48 | return static_cast<Out>(temp); | 47 | 48 | } |
_ZN2yb12pointer_castIPKchEET_PKT0_ Line | Count | Source | 44 | 6.07k | Out pointer_cast(const In* in) { | 45 | 6.07k | const void* temp = in; | 46 | 6.07k | return static_cast<Out>(temp); | 47 | 6.07k | } |
Unexecuted instantiation: _ZN2yb12pointer_castIPKcNS_10HybridTimeEEET_PKT0_ Unexecuted instantiation: _ZN2yb12pointer_castIPKciEET_PKT0_ Unexecuted instantiation: _ZN2yb12pointer_castIPKcNS_14ReadHybridTimeEEET_PKT0_ Unexecuted instantiation: _ZN2yb12pointer_castIPKcNS_13DocHybridTimeEEET_PKT0_ Unexecuted instantiation: _ZN2yb12pointer_castIPKcbEET_PKT0_ Unexecuted instantiation: _ZN2yb12pointer_castIPKcmEET_PKT0_ _ZN2yb12pointer_castIPKcjEET_PKT0_ Line | Count | Source | 44 | 20.4M | Out pointer_cast(const In* in) { | 45 | 20.4M | const void* temp = in; | 46 | 20.4M | return static_cast<Out>(temp); | 47 | 20.4M | } |
_ZN2yb12pointer_castIPKhhEET_PKT0_ Line | Count | Source | 44 | 10.1k | Out pointer_cast(const In* in) { | 45 | 10.1k | const void* temp = in; | 46 | 10.1k | return static_cast<Out>(temp); | 47 | 10.1k | } |
_ZN2yb12pointer_castIPKccEET_PKT0_ Line | Count | Source | 44 | 75 | Out pointer_cast(const In* in) { | 45 | 75 | const void* temp = in; | 46 | 75 | return static_cast<Out>(temp); | 47 | 75 | } |
|
48 | | |
49 | | template<class D, class S> |
50 | | std::unique_ptr<D> down_pointer_cast(std::unique_ptr<S> s) { |
51 | | auto* f = s.release(); |
52 | | assert(f == nullptr || dynamic_cast<D*>(f) != nullptr); |
53 | | return std::unique_ptr<D>(static_cast<D*>(f)); |
54 | | } |
55 | | |
56 | | } // namespace yb |
57 | | |
58 | | using yb::pointer_cast; |
59 | | |
60 | | #endif // YB_UTIL_CAST_H_ |