Index: corelib/src/expando.dart |
diff --git a/corelib/src/expando.dart b/corelib/src/expando.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e21c5aaf071ba072d11417527eb83c37c9b4dbdf |
--- /dev/null |
+++ b/corelib/src/expando.dart |
@@ -0,0 +1,38 @@ |
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+/** |
+ * An [Expando] allows adding new properties to objects. |
sra1
2012/06/12 07:10:26
It does not look like adding properties to an obje
|
+ */ |
+interface Expando<T> default _Expando<T> { |
+ |
+ /** |
+ * The name of the this [Expando] as passed to the constructor. If |
+ * no name was passed to the constructor, the name is [null]. |
+ */ |
+ final String name; |
+ |
+ /** |
+ * Creates a new [Expando]. The optional name is only used for |
sra1
2012/06/12 07:10:26
'only used' - I'm confused.
If I create two const
|
+ * debugging purposes and creating two different (non-const) |
+ * [Expando]s with the same name yields two [Expando]s that work on |
+ * different properties of the objects they are used on. |
+ */ |
+ const Expando([String name]); |
+ |
+ /** |
+ * Gets the value of this [Expando]'s property on the given |
+ * object. If the object hasn't been expanded, the method returns |
+ * [null]. |
sra1
2012/06/12 07:10:26
Explain when the call will fail,
|
+ */ |
+ T operator [](Object object); |
+ |
+ /** |
+ * Sets the value of this [Expando]'s property on the given |
+ * object. Properties can effectively be removed again by setting |
+ * their value to null. |
+ */ |
+ void operator []=(Object object, T value); |
+ |
+} |