Index: runtime/vm/dart_api_impl.cc |
=================================================================== |
--- runtime/vm/dart_api_impl.cc (revision 23883) |
+++ runtime/vm/dart_api_impl.cc (working copy) |
@@ -4348,6 +4348,29 @@ |
} |
+// --- Metadata ---- |
+ |
+DART_EXPORT Dart_Handle Dart_GetMetadata(Dart_Handle object) { |
+ Isolate* isolate = Isolate::Current(); |
+ CHECK_ISOLATE(isolate); |
+ DARTSCOPE(isolate); |
+ Object& obj = Object::Handle(isolate, Api::UnwrapHandle(object)); |
+ Class& cls = Class::Handle(isolate); |
+ if (obj.IsClass()) { |
+ cls ^= obj.raw(); |
+ } else if (obj.IsFunction()) { |
+ cls = Function::Cast(obj).origin(); |
+ } else if (obj.IsField()) { |
+ cls = Field::Cast(obj).origin(); |
+ } else { |
+ return Api::NewHandle(isolate, Array::New(0)); |
siva
2013/06/12 00:16:52
return Api::NewHandle(isolate, Object::empty_array
hausner
2013/06/12 01:10:05
Done.
|
+ } |
+ const Library& lib = Library::Handle(cls.library()); |
+ obj = lib.GetMetadata(obj); |
+ return Api::NewHandle(isolate, obj.raw()); |
siva
2013/06/12 00:16:52
why not:
return Api::NewHandle(isolate, lib.GetMe
hausner
2013/06/12 01:10:05
Done.
|
+} |
+ |
+ |
// --- Scripts and Libraries --- |