Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(600)

Unified Diff: runtime/lib/mirrors_impl.dart

Issue 10704259: Added getField/setField to ObjectMirror. For InstanceMirrors, this get/sets (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: runtime/lib/mirrors_impl.dart
===================================================================
--- runtime/lib/mirrors_impl.dart (revision 9728)
+++ runtime/lib/mirrors_impl.dart (working copy)
@@ -125,8 +125,48 @@
return completer.future;
}
+ Future<InstanceMirror> getField(String fieldName)
+ {
+ Completer<InstanceMirror> completer = new Completer<InstanceMirror>();
+ try {
+ completer.complete(
turnidge 2012/07/17 23:59:33 Can this fit on one line?
+ _getField(this, fieldName));
+ } catch (var exception) {
+ completer.completeException(exception);
+ }
+ return completer.future;
+ }
+
+ Future<InstanceMirror> setField(String fieldName, Object arg)
+ {
+ if (arg is Mirror) {
+ if (arg is! InstanceMirror) {
+ throw new MirrorException(
+ 'argument ($arg) was not an InstanceMirror');
+ }
+ } else if (!isSimpleValue(arg)) {
+ throw new MirrorException(
+ 'argument ($arg) was not a simple value');
turnidge 2012/07/17 23:59:33 Maybe make a helper function for arg checking to a
+ }
+
+ Completer<InstanceMirror> completer = new Completer<InstanceMirror>();
+ try {
+ completer.complete(
turnidge 2012/07/17 23:59:33 Can this fit on one line?
+ _setField(this, fieldName, arg));
+ } catch (var exception) {
+ completer.completeException(exception);
+ }
+ return completer.future;
+ }
+
static _invoke(ref, memberName, positionalArguments)
native 'LocalObjectMirrorImpl_invoke';
+
+ static _getField(ref, fieldName)
+ native 'LocalObjectMirrorImpl_getField';
+
+ static _setField(ref, fieldName, value)
+ native 'LocalObjectMirrorImpl_setField';
}
// Prints a string as it might appear in dart program text.

Powered by Google App Engine
This is Rietveld 408576698