OLD | NEW |
---|---|
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 part of dart._internal; | 5 part of dart._internal; |
6 | 6 |
7 /** | 7 /** |
8 * Mixin that throws on the length changing operations of [List]. | 8 * Mixin that throws on the length changing operations of [List]. |
9 * | 9 * |
10 * Intended to mix-in on top of [ListMixin] for fixed-length lists. | 10 * Intended to mix-in on top of [ListMixin] for fixed-length lists. |
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
354 * | 354 * |
355 * For internal use only. | 355 * For internal use only. |
356 * Only works on growable lists as created by `[]` or `new List()`. | 356 * Only works on growable lists as created by `[]` or `new List()`. |
357 * May throw on any other list. | 357 * May throw on any other list. |
358 * | 358 * |
359 * The operation is efficient. It doesn't copy the elements, but converts | 359 * The operation is efficient. It doesn't copy the elements, but converts |
360 * the existing list directly to a fixed length list. | 360 * the existing list directly to a fixed length list. |
361 * That means that it is a destructive conversion. | 361 * That means that it is a destructive conversion. |
362 * The original list should not be used afterwards. | 362 * The original list should not be used afterwards. |
363 * | 363 * |
364 * The returned list may be the same list as the orginal, | 364 * The returned list may be the same list as the original, |
365 * or it may be a different list (according to [identical]). | 365 * or it may be a different list (according to [identical]). |
366 * The original list may have changed type to be a fixed list, | 366 * The original list may have changed type to be a fixed list, |
367 * or become empty or been otherwise modified. | 367 * or become empty or been otherwise modified. |
368 * It will still be a valid object, so references to it will not, e.g., crash | 368 * It will still be a valid object, so references to it will not, e.g., crash |
369 * the runtime if accessed, but no promises are made wrt. its contents. | 369 * the runtime if accessed, but no promises are made wrt. its contents. |
370 * | 370 * |
371 * This unspecified behavior is the reason the function is not exposed to | 371 * This unspecified behavior is the reason the function is not exposed to |
372 * users. We allow the underlying implementation to make the most efficient | 372 * users. We allow the underlying implementation to make the most efficient |
373 * conversion, at the cost of leaving the original list in an unspecified | 373 * conversion, at the cost of leaving the original list in an unspecified |
374 * state. | 374 * state. |
375 */ | 375 */ |
376 // TODO(sra): Find a way to declare this as (List<E>) -> List<E> without passing | |
377 // a type parameter. | |
376 external List makeListFixedLength(List growableList); | 378 external List makeListFixedLength(List growableList); |
vsm
2016/05/02 23:56:12
Make this generic?
List/*<T>*/ makeListFixedLength
| |
379 | |
380 /** | |
381 * Converts a fixed-length list to an unmodifiable list. | |
382 * | |
383 * For internal use only. | |
384 * Only works for core fixed-length lists as created by `new List(length)`, | |
385 * or as returned by [makeListFixedLength]. | |
386 * | |
387 * The operation is efficient. It doesn't copy the elements, but converts | |
388 * the existing list directly to a fixed length list. | |
389 * That means that it is a destructive conversion. | |
390 * The original list should not be used afterwards. | |
391 * | |
392 * The unmodifiable list type is similar to the one used by const lists. | |
393 */ | |
394 // TODO(sra): Find a way to declare this as (List<E>) -> List<E> without passing | |
395 // a type parameter. | |
396 external List makeFixedListUnmodifiable(List fixedLengthList); | |
vsm
2016/05/02 23:56:12
Ditto?
| |
OLD | NEW |