示例#1
0
        static JClassDesc NewClass(DatReader r)
        {
            JClassDesc classDesc = ClassDesc(r);

            r.handles.Add(classDesc);
            return(classDesc);
        }
示例#2
0
        JObject NewObject()
        {
            JObject obj = new JObject();

            obj.Desc = ClassDesc();
            handles.Add(obj);

            List <JClassDesc> classDescs = new List <JClassDesc>();
            List <JClassData> classDatas = new List <JClassData>();
            JClassDesc        tmp        = obj.Desc;

            // most superclass data is first
            while (tmp != null)
            {
                classDescs.Add(tmp);
                tmp = tmp.Info.SuperClass;
            }
            classDescs.Reverse();

            for (int i = 0; i < classDescs.Count; i++)
            {
                JClassData classData = ClassData(classDescs[i].Info);
                classDatas.Add(classData);
            }

            // reverse order so least superclass is first
            classDatas.Reverse();
            obj.ClassData = classDatas;
            return(obj);
        }
示例#3
0
        JClassDesc NewClass()
        {
            JClassDesc classDesc = ClassDesc();

            handles.Add(classDesc);
            return(classDesc);
        }
示例#4
0
        JClassDesc NewClassDesc()
        {
            JClassDesc desc = new JClassDesc();

            desc.Name      = ReadUtf8();
            desc.SerialUID = ReadInt64();
            handles.Add(desc);
            desc.Info = ClassDescInfo();
            return(desc);
        }
示例#5
0
        static JClassDesc NewClassDesc(DatReader r)
        {
            JClassDesc desc = new JClassDesc();

            desc.Name = r.ReadUtf8();
            r.ReadInt64(); // serial UID
            r.handles.Add(desc);

            // read class desc info
            desc.Flags  = r.ReadUInt8();
            desc.Fields = new JFieldDesc[r.ReadUInt16()];
            for (int i = 0; i < desc.Fields.Length; i++)
            {
                desc.Fields[i] = FieldDesc(r);
            }

            SkipAnnotation(r);
            desc.SuperClass = ClassDesc(r);
            return(desc);
        }
示例#6
0
        static JClassData ClassData(DatReader r, JClassDesc desc)
        {
            if ((desc.Flags & SC_SERIALIZABLE) == 0)
            {
                throw new InvalidDataException("Invalid class data flags: " + desc.Flags);
            }

            JClassData data = new JClassData();

            data.Values = new object[desc.Fields.Length];
            for (int i = 0; i < data.Values.Length; i++)
            {
                data.Values[i] = Value(r, desc.Fields[i].Type);
            }

            if ((desc.Flags & SC_WRITE_METHOD) != 0)
            {
                SkipAnnotation(r);
            }
            return(data);
        }
示例#7
0
        static JObject NewObject(DatReader r)
        {
            JObject obj = new JObject();

            obj.Desc = ClassDesc(r);
            r.handles.Add(obj);

            List <JClassDesc> descs = new List <JClassDesc>();
            JClassDesc        tmp   = obj.Desc;

            // most superclass data is first
            while (tmp != null)
            {
                descs.Add(tmp);
                tmp = tmp.SuperClass;
            }

            obj.ClassData = new JClassData[descs.Count];
            for (int i = descs.Count - 1; i >= 0; i--)
            {
                obj.ClassData[i] = ClassData(r, descs[i]);
            }
            return(obj);
        }