/usr/share/cagefs-skeleton/usr/include/absl/container/internal
// Copyright 2018 The Abseil Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // https://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #ifndef ABSL_CONTAINER_INTERNAL_TRACKED_H_ #define ABSL_CONTAINER_INTERNAL_TRACKED_H_ #include <stddef.h> #include <memory> #include <utility> #include "absl/base/config.h" namespace absl { ABSL_NAMESPACE_BEGIN namespace container_internal { // A class that tracks its copies and moves so that it can be queried in tests. template <class T> class Tracked { public: Tracked() {} // NOLINTNEXTLINE(runtime/explicit) Tracked(const T& val) : val_(val) {} Tracked(const Tracked& that) : val_(that.val_), num_moves_(that.num_moves_), num_copies_(that.num_copies_) { ++(*num_copies_); } Tracked(Tracked&& that) : val_(std::move(that.val_)), num_moves_(std::move(that.num_moves_)), num_copies_(std::move(that.num_copies_)) { ++(*num_moves_); } Tracked& operator=(const Tracked& that) { val_ = that.val_; num_moves_ = that.num_moves_; num_copies_ = that.num_copies_; ++(*num_copies_); } Tracked& operator=(Tracked&& that) { val_ = std::move(that.val_); num_moves_ = std::move(that.num_moves_); num_copies_ = std::move(that.num_copies_); ++(*num_moves_); } const T& val() const { return val_; } friend bool operator==(const Tracked& a, const Tracked& b) { return a.val_ == b.val_; } friend bool operator!=(const Tracked& a, const Tracked& b) { return !(a == b); } size_t num_copies() { return *num_copies_; } size_t num_moves() { return *num_moves_; } private: T val_; std::shared_ptr<size_t> num_moves_ = std::make_shared<size_t>(0); std::shared_ptr<size_t> num_copies_ = std::make_shared<size_t>(0); }; } // namespace container_internal ABSL_NAMESPACE_END } // namespace absl #endif // ABSL_CONTAINER_INTERNAL_TRACKED_H_
.
Edit
..
Edit
btree.h
Edit
btree_container.h
Edit
common.h
Edit
compressed_tuple.h
Edit
container_memory.h
Edit
counting_allocator.h
Edit
hash_function_defaults.h
Edit
hash_generator_testing.h
Edit
hash_policy_testing.h
Edit
hash_policy_traits.h
Edit
hashtable_debug.h
Edit
hashtable_debug_hooks.h
Edit
hashtablez_sampler.h
Edit
have_sse.h
Edit
inlined_vector.h
Edit
layout.h
Edit
node_hash_policy.h
Edit
raw_hash_map.h
Edit
raw_hash_set.h
Edit
test_instance_tracker.h
Edit
tracked.h
Edit
unordered_map_constructor_test.h
Edit
unordered_map_lookup_test.h
Edit
unordered_map_members_test.h
Edit
unordered_map_modifiers_test.h
Edit
unordered_set_constructor_test.h
Edit
unordered_set_lookup_test.h
Edit
unordered_set_members_test.h
Edit
unordered_set_modifiers_test.h
Edit