private T getProperty <T>(FBXJSAPI api, string name) { fbxvariant jsvalue = new fbxvariant(); api.GetProperty(name, jsvalue); return(Converter.ToNet3 <T>(jsvalue)); }
public static void initialize(string entryInfo, FBXJSAPI jsapi, out FBXJSAPI context, out string options) { string[] args = entryInfo.Split(new char[] { '|' }, 3); // args = [0] IntPtr to FBXJSAPI* result, [1] IntPtr to FBXJSAPI* context, [2] passed options IntPtr result = (IntPtr)System.Convert.ToInt64(args[0], 16); Marshal.WriteIntPtr(result, FBXJSAPI.getCPtr(jsapi).Handle); IntPtr contextPtrPtr = (IntPtr)System.Convert.ToInt64(args[1], 16); IntPtr contextPtr = Marshal.ReadIntPtr(contextPtrPtr); context = new FBXJSAPI(contextPtr, false); options = args[2]; }
public JSObject(FBXJSAPI WrappedObject) { wrappedObject = WrappedObject; /*fbxvariant prototype = new fbxvariant(); * FBXResult jsresult = wrappedObject.GetProperty("prototype", prototype); * if (jsresult.success && prototype.get_type() == "object") * { * ObjectJSAPI api = prototype.get_object() as ObjectJSAPI; * if (api != null) * { * type = api.wrappedObject as Type; * } * }*/ }
public void testXMLHTTPRequest(FBXJSAPI xmlHttpClass) { // var req = new XMLHttpRequest(); fbxvariant jsxmlreq = new fbxvariant(); xmlHttpClass.Construct(new VariantVector(), jsxmlreq); FBXJSAPI req = Converter.ToNet3 <FBXJSAPI>(jsxmlreq); // req.open('GET', 'http://www.google.com', false); fbxvariant intermediateResult = new fbxvariant(); req.Invoke("open", Converter.FromNet2(new object[] { "GET", "./FBControl.htm", false }), intermediateResult); // req.send(null); req.Invoke("send", Converter.FromNet2(new object[] { null }), intermediateResult); // alert(req.responseText); MessageBox.Show(getProperty <string>(req, "responseText"), "content of http://www.google.com is..."); }
public static Object ToNet2(fbxvariant value, Type targetType) { switch (value.get_type()) { case "bool": if (targetType.IsAssignableFrom(typeof(bool))) { return(value.get_bool()); } break; case "int": if (targetType.IsAssignableFrom(typeof(int))) { return(value.get_int()); } break; case "uint": if (targetType.IsAssignableFrom(typeof(uint))) { return(value.get_uint()); } break; case "double": { Double v = value.get_double(); if (targetType.IsAssignableFrom(typeof(double))) { return(v); } if (targetType.IsAssignableFrom(typeof(int)) && (v == (int)v)) { return((int)v); } } break; case "float": if (targetType.IsAssignableFrom(typeof(float))) { return(value.get_float()); } break; case "wstring": if (targetType.IsAssignableFrom(typeof(string))) { return(value.get_wstring()); } break; case "short": if (targetType.IsAssignableFrom(typeof(short))) { return(value.get_short()); } break; case "ushort": if (targetType.IsAssignableFrom(typeof(ushort))) { return(value.get_ushort()); } break; case "char": if (targetType.IsAssignableFrom(typeof(char))) { return(value.get_char()); } break; case "uchar": if (targetType.IsAssignableFrom(typeof(byte))) { return(value.get_uchar()); } break; case "int64": if (targetType.IsAssignableFrom(typeof(Int64))) { return(value.get_int64()); } break; case "uint64": if (targetType.IsAssignableFrom(typeof(UInt64))) { return(value.get_uint64()); } break; case "null": if (targetType.IsAssignableFrom(typeof(Nullable))) { return(null); } break; case "empty": if (targetType.IsAssignableFrom(typeof(Nullable))) { return(null); } break; case "object": { FBXJSAPI v = value.get_object(); if (targetType.IsAssignableFrom(typeof(FBXJSAPI))) { return(v); } else { dynamic jsObj = new JSObject(v); int testInt = jsObj; Expression conversion = Expression.Convert(Expression.Constant(jsObj), targetType); Type delegateType = typeof(Func <>).MakeGenericType(targetType); Delegate conversionDelegate = Expression.Lambda(delegateType, conversion).Compile(); var result = conversionDelegate.DynamicInvoke(); return(result); } } } throw new InvalidCastException("Cannot cast object of type '" + value.get_type() + "' to type '" + targetType.Name + "'"); }
public static dynamic js(this FBXJSAPI api) { return(new JSObject(api)); }