diff options
Diffstat (limited to 'chromium/third_party/nearby/src/internal/platform/implementation/ios/Source/Platform/atomic_boolean.h')
-rw-r--r-- | chromium/third_party/nearby/src/internal/platform/implementation/ios/Source/Platform/atomic_boolean.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/chromium/third_party/nearby/src/internal/platform/implementation/ios/Source/Platform/atomic_boolean.h b/chromium/third_party/nearby/src/internal/platform/implementation/ios/Source/Platform/atomic_boolean.h new file mode 100644 index 00000000000..ed3bbeebbf2 --- /dev/null +++ b/chromium/third_party/nearby/src/internal/platform/implementation/ios/Source/Platform/atomic_boolean.h @@ -0,0 +1,46 @@ +// Copyright 2020 Google LLC +// +// 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 PLATFORM_IMPL_IOS_ATOMIC_BOOLEAN_H_ +#define PLATFORM_IMPL_IOS_ATOMIC_BOOLEAN_H_ + +#include <atomic> + +#include "internal/platform/implementation/atomic_boolean.h" + +namespace location { +namespace nearby { +namespace ios { + +// Concrete AtomicBoolean implementation. +class AtomicBoolean : public api::AtomicBoolean { + public: + explicit AtomicBoolean(bool initial_value) : value_(initial_value) {} + ~AtomicBoolean() override = default; + + AtomicBoolean(const AtomicBoolean&) = delete; + AtomicBoolean& operator=(const AtomicBoolean&) = delete; + + bool Get() const override { return value_.load(); } + bool Set(bool value) override { return value_.exchange(value); } + + private: + std::atomic_bool value_; +}; + +} // namespace ios +} // namespace nearby +} // namespace location + +#endif // PLATFORM_IMPL_IOS_ATOMIC_BOOLEAN_H_ |