OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_INTERNAL_H_ | 5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_INTERNAL_H_ |
6 #define MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_INTERNAL_H_ | 6 #define MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_INTERNAL_H_ |
7 | 7 |
8 #include <new> | 8 #include <new> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "mojo/public/cpp/bindings/lib/bindings_internal.h" | 11 #include "mojo/public/cpp/bindings/lib/bindings_internal.h" |
12 #include "mojo/public/cpp/bindings/lib/bindings_serialization.h" | 12 #include "mojo/public/cpp/bindings/lib/bindings_serialization.h" |
13 #include "mojo/public/cpp/bindings/lib/bounds_checker.h" | 13 #include "mojo/public/cpp/bindings/lib/bounds_checker.h" |
14 #include "mojo/public/cpp/bindings/lib/buffer.h" | 14 #include "mojo/public/cpp/bindings/lib/buffer.h" |
15 #include "mojo/public/cpp/bindings/lib/validation_errors.h" | 15 #include "mojo/public/cpp/bindings/lib/validation_errors.h" |
| 16 #include "mojo/public/cpp/environment/logging.h" |
16 | 17 |
17 namespace mojo { | 18 namespace mojo { |
18 template <typename T> class Array; | 19 template <typename T> class Array; |
19 class String; | 20 class String; |
20 | 21 |
21 namespace internal { | 22 namespace internal { |
22 | 23 |
23 template <typename T> | 24 template <typename T> |
24 struct ArrayDataTraits { | 25 struct ArrayDataTraits { |
25 typedef T StorageType; | 26 typedef T StorageType; |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 } | 261 } |
261 | 262 |
262 const Array_Data<T>* object = static_cast<const Array_Data<T>*>(data); | 263 const Array_Data<T>* object = static_cast<const Array_Data<T>*>(data); |
263 return Helper::ValidateElements(&object->header_, object->storage(), | 264 return Helper::ValidateElements(&object->header_, object->storage(), |
264 bounds_checker); | 265 bounds_checker); |
265 } | 266 } |
266 | 267 |
267 size_t size() const { return header_.num_elements; } | 268 size_t size() const { return header_.num_elements; } |
268 | 269 |
269 Ref at(size_t offset) { | 270 Ref at(size_t offset) { |
270 assert(offset < static_cast<size_t>(header_.num_elements)); | 271 MOJO_DCHECK(offset < static_cast<size_t>(header_.num_elements)); |
271 return Traits::ToRef(storage(), offset); | 272 return Traits::ToRef(storage(), offset); |
272 } | 273 } |
273 | 274 |
274 ConstRef at(size_t offset) const { | 275 ConstRef at(size_t offset) const { |
275 assert(offset < static_cast<size_t>(header_.num_elements)); | 276 MOJO_DCHECK(offset < static_cast<size_t>(header_.num_elements)); |
276 return Traits::ToConstRef(storage(), offset); | 277 return Traits::ToConstRef(storage(), offset); |
277 } | 278 } |
278 | 279 |
279 StorageType* storage() { | 280 StorageType* storage() { |
280 return reinterpret_cast<StorageType*>( | 281 return reinterpret_cast<StorageType*>( |
281 reinterpret_cast<char*>(this) + sizeof(*this)); | 282 reinterpret_cast<char*>(this) + sizeof(*this)); |
282 } | 283 } |
283 | 284 |
284 const StorageType* storage() const { | 285 const StorageType* storage() const { |
285 return reinterpret_cast<const StorageType*>( | 286 return reinterpret_cast<const StorageType*>( |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 }; | 385 }; |
385 | 386 |
386 template <> struct WrapperTraits<String, false> { | 387 template <> struct WrapperTraits<String, false> { |
387 typedef String_Data* DataType; | 388 typedef String_Data* DataType; |
388 }; | 389 }; |
389 | 390 |
390 } // namespace internal | 391 } // namespace internal |
391 } // namespace mojo | 392 } // namespace mojo |
392 | 393 |
393 #endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_INTERNAL_H_ | 394 #endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_ARRAY_INTERNAL_H_ |
OLD | NEW |