60 lines
1.6 KiB
C++
60 lines
1.6 KiB
C++
// 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
|