Espresso.NativeV8JsInterOp.RegisterTypeDef C# (CSharp) Method

RegisterTypeDef() public static method

public static RegisterTypeDef ( Espresso.JsContext context, JsTypeDefinition jsTypeDefinition ) : void
context Espresso.JsContext
jsTypeDefinition JsTypeDefinition
return void
        public static unsafe void RegisterTypeDef(JsContext context, JsTypeDefinition jsTypeDefinition)
        {

            INativeRef proxObject = jsTypeDefinition.nativeProxy;
            byte[] finalBuffer = null;
            using (MemoryStream ms = new MemoryStream())
            {
                //serialize with our custom protocol
                //plan change to json ?

                //utf16
                BinaryWriter binWriter = new BinaryWriter(ms, System.Text.Encoding.Unicode);
                //binay format 
                //1. typename
                //2. fields
                //3. method
                //4. indexer get/set   
                binWriter.Write((short)1);//start marker


                context.CollectionTypeMembers(jsTypeDefinition);
                //------------------------------------------------

                jsTypeDefinition.WriteDefinitionToStream(binWriter);
                //------------------------------------------------
                finalBuffer = ms.ToArray();

                fixed (byte* tt = &finalBuffer[0])
                {
                    proxObject.SetUnmanagedPtr(
                        ContextRegisterTypeDefinition(
                        context.Handle.Handle,
                        0, tt, finalBuffer.Length));
                }

                //ms.Close();
            }
        }
        public static void CreateNativePart(JsContext context, INativeScriptable proxyObj)

Usage Example

Example #1
0
        public INativeRef CreateProxyForTypeDefinition(JsTypeDefinition jsTypeDefinition)
        {
            var proxyObject = new NativeRef(nativeRefList.Count, jsTypeDefinition);

            //store data this side too
            jsTypeDefinition.nativeProxy = proxyObject;
            //store in exported list
            nativeRefList.Add(proxyObject);
            //register type definition
            NativeV8JsInterOp.RegisterTypeDef(ownerContext, jsTypeDefinition);
            return(proxyObject);
        }