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/cpp/bindings/lib/array_internal.h" 6 7 #include <stddef.h> 8 #include <stdint.h> 9 10 #include <sstream> 11 12 namespace mojo { 13 namespace internal { 14 15 std::string MakeMessageWithArrayIndex(const char* message, 16 size_t size, 17 size_t index) { 18 std::ostringstream stream; 19 stream << message << ": array size - " << size << "; index - " << index; 20 return stream.str(); 21 } 22 23 std::string MakeMessageWithExpectedArraySize(const char* message, 24 size_t size, 25 size_t expected_size) { 26 std::ostringstream stream; 27 stream << message << ": array size - " << size << "; expected size - " 28 << expected_size; 29 return stream.str(); 30 } 31 32 ArrayDataTraits<bool>::BitRef::~BitRef() { 33 } 34 35 ArrayDataTraits<bool>::BitRef::BitRef(uint8_t* storage, uint8_t mask) 36 : storage_(storage), mask_(mask) { 37 } 38 39 ArrayDataTraits<bool>::BitRef& ArrayDataTraits<bool>::BitRef::operator=( 40 bool value) { 41 if (value) { 42 *storage_ |= mask_; 43 } else { 44 *storage_ &= ~mask_; 45 } 46 return *this; 47 } 48 49 ArrayDataTraits<bool>::BitRef& ArrayDataTraits<bool>::BitRef::operator=( 50 const BitRef& value) { 51 return (*this) = static_cast<bool>(value); 52 } 53 54 ArrayDataTraits<bool>::BitRef::operator bool() const { 55 return (*storage_ & mask_) != 0; 56 } 57 58 } // namespace internal 59 } // namespace mojo 60