public ProtoBufferReaderBuilderCSLS(CodeToolBase _codetool, byte[] _buffer, int _len, string _classname) { mCodeTool = _codetool; mReader = new ProtobufferReaderCSLS(_buffer, _len); mClassName = _classname; InitType(); mScriptObject = mCodeTool.GetCSLEObjectParmasByType(mScriptType); BuildMember(); }
override public void ReadMember(ProtobufferReaderCSLS _reader) { BuilderObjectBase tchild = null; if (mCodeTool.IsLSType(mChildType.TypeForCLR)) { tchild = new BuilderObjectCELSClass(mCodeTool, mIndex, 0, null, mChildType, null); } else { tchild = new BuilderObjectDefault(mCodeTool, mIndex, 0, null, mChildType, null); } AddMember(tchild); tchild.ReadMember(_reader); object tmet = mCodeTool.GetLMethod(mFunType, "Add", 1); mCodeTool.CallMethod(tmet, mSelfObject, tchild.Value); mIndex++; }
override public void ReadMember(ProtobufferReaderCSLS _reader) { int bytes = (int)_reader.ReadUInt32Variant(false); byte[] tbytearry = _reader.ReadBytes(bytes); if (tbytearry != null) { ProtobufferReaderCSLS treader = new ProtobufferReaderCSLS(tbytearry, bytes); int tfieldnumber = treader.ReadFieldHeader(); while (tfieldnumber > 0) { if (!Members.ContainsKey(tfieldnumber)) { throw new InvalidOperationException("ProtoReaderMemberObject 未能从builder中找到对应的字段 fieldnumber:" + tfieldnumber); } BuilderObjectBase tprb = Members[tfieldnumber]; tprb.ReadMember(treader); tfieldnumber = treader.ReadFieldHeader(); } } }
virtual public void ReadMember(ProtobufferReaderCSLS _reader) { }
override public void ReadMember(ProtobufferReaderCSLS _reader) { Value = _reader.ReadByData(mType, _reader.WType); SetValueToCSLEObject(); }