public override HeronValue Apply(VM vm, HeronValue[] args) { Object[] os = HeronDotNet.ObjectsToDotNetArray(args); Object o = self.GetSystemType().InvokeMember(name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod, null, self.Unmarshal(), os); return(DotNetObject.Marshal(o)); }
public override HeronValue Invoke(VM vm, HeronValue self, HeronValue[] args) { Trace.Assert(self == null); Object[] os = HeronDotNet.ObjectsToDotNetArray(args); Object o = this.self.GetSystemType().InvokeMember(name, BindingFlags.Public | BindingFlags.Static | BindingFlags.InvokeMethod, null, null, os); return(DotNetObject.Marshal(o)); }
public ListToIterValue(IEnumerable iter, HeronType elementType) { list = new List <HeronValue>(); foreach (Object o in iter) { list.Add(HeronDotNet.Marshal(o)); } current = 0; this.elementType = elementType; }
public override HeronValue Instantiate(VM vm, HeronValue[] args, ModuleInstance m) { Object[] objs = HeronDotNet.ObjectsToDotNetArray(args); Object o = GetSystemType().InvokeMember(null, BindingFlags.Instance | BindingFlags.Public | BindingFlags.Default | BindingFlags.CreateInstance, null, null, objs); if (o == null) { throw new Exception("Unable to construct " + name); } return(DotNetObject.Marshal(o)); }
/// <summary> /// Creates a Heron object from a System (.NET) object /// If it is a primitive, this will convert to the Heron primitives /// </summary> /// <param name="o"></param> /// <returns></returns> public static HeronValue Marshal(Object o) { return(HeronDotNet.Marshal(o)); }