Exemplo n.º 1
0
 public PalmDBRecord(PalmDBRecordInfo info)
 {
     this.Info = info;
 }
Exemplo n.º 2
0
        public static PalmDB Read(Stream stream)
        {
            PalmDB result = null;

            stream.Seek(0, SeekOrigin.Begin);
            byte[] buffer = new byte[NameByteLength];
            if (stream.Read(buffer, 0, NameByteLength) == NameByteLength)
            {
                result = new PalmDB {
                    Name = Encoding.UTF8.GetString(buffer)
                };
                if (stream.TryReadUshort(out ushort attribute))
                {
                    result.Attribute = (PalmDBAttribute)attribute;
                }
                if (stream.TryReadUshort(out ushort version))
                {
                    result.Version = version;
                }
                stream.Seek(4 * 6, SeekOrigin.Current);

                if (stream.TryReadUint(out uint type))
                {
                    result.Type = type;
                }
                if (stream.TryReadUint(out uint creator))
                {
                    result.Creator = creator;
                }
                if (stream.TryReadUint(out uint uniqueIDseed))
                {
                    result.UniqueIDseed = uniqueIDseed;
                }
                if (stream.TryReadUint(out uint nextRecordListID))
                {
                    result.NextRecordListID = nextRecordListID;
                }
                if (stream.TryReadUshort(out ushort recordCount))
                {
                    result.RecordCount = recordCount;
                }

                for (ushort i = 0; i < recordCount; i++)
                {
                    var recordInfo = new PalmDBRecordInfo();
                    if (stream.TryReadUint(out uint recordInfoOffset))
                    {
                        recordInfo.Offset = recordInfoOffset;
                    }
                    if (stream.TryReadByte(out byte recordInfoAttribute))
                    {
                        recordInfo.Attribute = (PalmDBRecordAttribute)recordInfoAttribute;
                    }
                    var recordUniqueIDBuff = new byte[3];
                    if (stream.Read(recordUniqueIDBuff, 0, 3) == 3)
                    {
                        recordInfo.UniqueID = recordUniqueIDBuff.ToUInt32();
                    }
                    result.RecordInfoList.Add(recordInfo);
                }
            }

            return(result);
        }