// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "mojo/public/cpp/bindings/lib/array_internal.h" #include <stddef.h> #include <stdint.h> #include <sstream> namespace mojo { namespace internal { std::string MakeMessageWithArrayIndex(const char* message, size_t size, size_t index) { std::ostringstream stream; stream << message << ": array size - " << size << "; index - " << index; return stream.str(); } std::string MakeMessageWithExpectedArraySize(const char* message, size_t size, size_t expected_size) { std::ostringstream stream; stream << message << ": array size - " << size << "; expected size - " << expected_size; return stream.str(); } ArrayDataTraits<bool>::BitRef::~BitRef() { } ArrayDataTraits<bool>::BitRef::BitRef(uint8_t* storage, uint8_t mask) : storage_(storage), mask_(mask) { } ArrayDataTraits<bool>::BitRef& ArrayDataTraits<bool>::BitRef::operator=( bool value) { if (value) { *storage_ |= mask_; } else { *storage_ &= ~mask_; } return *this; } ArrayDataTraits<bool>::BitRef& ArrayDataTraits<bool>::BitRef::operator=( const BitRef& value) { return (*this) = static_cast<bool>(value); } ArrayDataTraits<bool>::BitRef::operator bool() const { return (*storage_ & mask_) != 0; } } // namespace internal } // namespace mojo