Exemplo n.º 1
0
        private void UpdatePaddingLength(PkgValue val)
        {
            int padding;

            PkgData data = (PkgData)val.ComplexValueData;

            padding = data.GetPaddingLength(PkgValue._offset);

            PkgValue._offset += padding;
        }
Exemplo n.º 2
0
        public override void Read(PkgBinaryReader reader)
        {
            valueOffsetType = reader.ReadOffsetType();


            if (valueOffsetType.Type == 128)
            {
                long pos = reader.BaseStream.Position;
                reader.Seek(valueOffsetType.Offset, SeekOrigin.Begin);

                string chunkType = reader.ReadString(4);
                switch (chunkType)
                {
                case "!idi":
                    complexValueData = new PkgObject(ParentFile);
                    complexValueData.Read(reader);
                    break;

                case "!ili":
                    complexValueData = new PkgArray(ParentFile);
                    complexValueData.Read(reader);
                    break;

                case "!iar":
                    complexValueData = new PkgDataArrayReference(ParentFile);
                    complexValueData.Read(reader);
                    break;

                case "!vca":
                    complexValueData = new PkgDataArray(ParentFile);
                    complexValueData.Read(reader);
                    break;

                case "!sbi":
                    complexValueData = PkgData.Create(ParentFile, "stri");
                    complexValueData.Read(reader);
                    break;

                case "!vbi":
                    complexValueData = PkgData.Create(reader, ParentFile);
                    complexValueData.Read(reader);
                    break;

                default:
                    throw new Exception("Chunk type not supported! " + chunkType);
                }

                reader.Seek((int)pos, SeekOrigin.Begin);
            }
        }
Exemplo n.º 3
0
        private int AddData(string type)
        {
            int typeIndex = Elements.FindIndex(x => ((PkgData)x.ComplexValueData).Type == type);

            if (typeIndex < 0)
            {
                typeIndex = (byte)Elements.Count;

                PkgValue val = new PkgValue(ParentFile);
                val.ValueOffsetType.Type = 128;
                val.ComplexValueData     = PkgData.Create(ParentFile, type);
                Elements.Add(val);

                return(typeIndex);
            }
            else
            {
                return(typeIndex);
            }
        }