1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "mojo/public/bindings/lib/array_internal.h" 6 7 namespace mojo { 8 namespace internal { 9 10 ArrayDataTraits<bool>::BitRef::~BitRef() { 11 } 12 13 ArrayDataTraits<bool>::BitRef::BitRef(uint8_t* storage, uint8_t mask) 14 : storage_(storage), 15 mask_(mask) { 16 } 17 18 ArrayDataTraits<bool>::BitRef& 19 ArrayDataTraits<bool>::BitRef::operator=(bool value) { 20 if (value) { 21 *storage_ |= mask_; 22 } else { 23 *storage_ &= ~mask_; 24 } 25 return *this; 26 } 27 28 ArrayDataTraits<bool>::BitRef& 29 ArrayDataTraits<bool>::BitRef::operator=(const BitRef& value) { 30 return (*this) = static_cast<bool>(value); 31 } 32 33 ArrayDataTraits<bool>::BitRef::operator bool() const { 34 return (*storage_ & mask_) != 0; 35 } 36 37 } // namespace internal 38 } // namespace mojo 39