Home | History | Annotate | Download | only in lib
      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