/// <summary> /// serialization this typedefinition to binary format and /// send to native side /// </summary> /// <param name="writer"></param> internal void WriteDefinitionToStream(BinaryWriter writer) { //---------------------- //this is our custom protocol/convention with the MiniJsBridge //we may change this in the future //eg. use json serialization/deserialization //---------------------- //1. kind/flags writer.Write((short)this.MemberId); //2. member id writer.Write((short)0); //3. typename WriteUtf16String(this.MemberName, writer); //4. num of field int j = fields.Count; writer.Write((short)j); for (int i = 0; i < j; ++i) { JsFieldDefinition fielddef = fields[i]; //field flags writer.Write((short)0); //*** field id -- unique field id within one type writer.Write((short)fielddef.MemberId); //field name WriteUtf16String(fielddef.MemberName, writer); } //------------------ j = methods.Count; writer.Write((short)j); for (int i = 0; i < j; ++i) { JsMethodDefinition methoddef = methods[i]; //method flags writer.Write((short)0); //id writer.Write((short)methoddef.MemberId); //method name WriteUtf16String(methoddef.MemberName, writer); } //property j = props.Count; writer.Write((short)j); for (int i = 0; i < j; ++i) { JsPropertyDefinition property = this.props[i]; //flags writer.Write((short)0); //id writer.Write((short)property.MemberId); //name WriteUtf16String(property.MemberName, writer); } }
public void AddMember(JsPropertyDefinition propDef) { propDef.SetOwner(this); props.Add(propDef); }