Exemple #1
0
            virtual public void AddMember(BuilderObjectBase _object)
            {
                if (Members == null)
                {
                    Members = new Dictionary <int, BuilderObjectBase>();
                }
                if (!Members.ContainsKey(_object.FieldNumber))
                {
                    Members.Add(_object.FieldNumber, _object);
                    _object.BuildParent = this;
                }

                else
                {
                    throw new InvalidOperationException("重复设置member 字段:" + _object.FieldNumber);
                }
            }
Exemple #2
0
            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++;
            }
Exemple #3
0
            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();
                    }
                }
            }
Exemple #4
0
            public BuilderObjectCELSClass(CodeToolBase _codetool, int _fieldnumber, int _fieldindex, object _parent, IType _type, IType _parenttype) : base(_codetool, _fieldnumber, _fieldindex, _parent, _type, _parenttype)
            {
                mSelfObject = mCodeTool.GetCSLEObjectParmasByType(mFunType);
                if (mSelfObject == null)
                {
                    throw new InvalidOperationException("未能取得对象 " + ":" + mFunType.TypeForCLR.Name);
                }
                if (mParentType != null && mParentObject != null)
                {
                    mCodeTool.SetMember(mParentType, mFieldIndex, mSelfObject, mParentObject);
                }

                IType[] ttypes = mCodeTool.GetFieldTypes(mFunType);
                int     tindex = 1;

                for (int i = 0; i < ttypes.Length; i++)
                {
                    BuilderObjectBase tobj = BuilderObjectBase.GetMember(_codetool, ttypes[i], i, tindex++, mSelfObject, mFunType);
                    AddMember(tobj);
                }
            }
            private void BuildMember()
            {
                IType[] ttypes = mCodeTool.GetFieldTypes(mScriptType);
                int     tindex = 1;

                for (int i = 0; i < ttypes.Length; i++)
                {
                    BuilderObjectBase tobj = BuilderObjectBase.GetMember(mCodeTool, ttypes[i], i, tindex++, mScriptObject, mScriptType);
                    AddMember(tobj);
                }

                int tfieldnumber = mReader.ReadFieldHeader();

                while (tfieldnumber > 0)
                {
                    if (!Members.ContainsKey(tfieldnumber))
                    {
                        throw new InvalidOperationException("ProtoReaderMemberObject 未能从builder中找到对应的字段 fieldnumber:" + tfieldnumber);
                    }
                    BuilderObjectBase tprb = Members[tfieldnumber];
                    tprb.ReadMember(mReader);
                    tfieldnumber = mReader.ReadFieldHeader();
                }
            }
Exemple #6
0
 override public void AddMember(BuilderObjectBase _object)
 {
 }