Пример #1
0
        public void InitializeMetaData(BinaryReader fCas)
        {
            this.dbxHeader           = new DbxHeader(fCas);
            this.arraySectionStart   = this.catEntry.offset + this.dbxHeader.stringOffset + this.dbxHeader.lenString + this.dbxHeader.lenPayload;
            this.stringSectionStart  = this.catEntry.offset + this.dbxHeader.stringOffset;
            this.payloadSectionStart = this.catEntry.offset + this.dbxHeader.stringOffset + this.dbxHeader.lenString;
            this.externalGuids       = new List <Tuple <byte[], byte[]> >((int)this.dbxHeader.numExternalGuid);
            int num = 0;

            while ((long)num < (long)((ulong)this.dbxHeader.numExternalGuid))
            {
                this.externalGuids.Add(new Tuple <byte[], byte[]>(fCas.ReadBytes(16), fCas.ReadBytes(16)));
                num++;
            }
            this.unhash = new Dictionary <uint, string>();
            byte[] array = new byte[this.dbxHeader.lenKeyword];
            fCas.BaseStream.Read(array, 0, (int)this.dbxHeader.lenKeyword);
            int num2 = 0;
            int num3 = 0;

            while ((long)num3 < (long)((ulong)this.dbxHeader.lenKeyword))
            {
                if (array[num3] == 0)
                {
                    string @string = Encoding.ASCII.GetString(array, num2, num3 - num2);
                    if (@string != "")
                    {
                        this.unhash.Add(DbxFile.hasher(@string), @string);
                    }
                    num2 = num3 + 1;
                }
                num3++;
            }
            this.fieldDescriptors = new List <FieldDescriptor>((int)this.dbxHeader.numField);
            int num4 = 0;

            while ((long)num4 < (long)((ulong)this.dbxHeader.numField))
            {
                FieldDescriptor item = new FieldDescriptor(fCas);
                this.fieldDescriptors.Add(item);
                num4++;
            }
            this.complexDescriptors = new List <ComplexDescriptor>((int)this.dbxHeader.numComplex);
            int num5 = 0;

            while ((long)num5 < (long)((ulong)this.dbxHeader.numComplex))
            {
                ComplexDescriptor item2 = new ComplexDescriptor(fCas);
                this.complexDescriptors.Add(item2);
                num5++;
            }
            this.instanceRepeaters = new List <InstanceRepeater>();
            int num6 = 0;

            while ((long)num6 < (long)((ulong)this.dbxHeader.numInstanceRepeater))
            {
                this.instanceRepeaters.Add(new InstanceRepeater(fCas));
                num6++;
            }
            long num7 = 16L - (fCas.BaseStream.Position - (long)((ulong)this.catEntry.offset)) % 16L;

            if (num7 != 16L)
            {
                fCas.ReadBytes((int)num7);
            }
            this.arrayRepeaters = new List <ArrayRepeater>();
            int num8 = 0;

            while ((long)num8 < (long)((ulong)this.dbxHeader.numArrayRepeater))
            {
                this.arrayRepeaters.Add(new ArrayRepeater(fCas));
                num8++;
            }
        }
Пример #2
0
 public void InitializeMetaData(BinaryReader fCas)
 {
     this.dbxHeader = new DbxHeader(fCas);
     this.arraySectionStart = this.catEntry.offset + this.dbxHeader.stringOffset + this.dbxHeader.lenString + this.dbxHeader.lenPayload;
     this.stringSectionStart = this.catEntry.offset + this.dbxHeader.stringOffset;
     this.payloadSectionStart = this.catEntry.offset + this.dbxHeader.stringOffset + this.dbxHeader.lenString;
     this.externalGuids = new List<Tuple<byte[], byte[]>>((int)this.dbxHeader.numExternalGuid);
     int num = 0;
     while ((long)num < (long)((ulong)this.dbxHeader.numExternalGuid))
     {
         this.externalGuids.Add(new Tuple<byte[], byte[]>(fCas.ReadBytes(16), fCas.ReadBytes(16)));
         num++;
     }
     this.unhash = new Dictionary<uint, string>();
     byte[] array = new byte[this.dbxHeader.lenKeyword];
     fCas.BaseStream.Read(array, 0, (int)this.dbxHeader.lenKeyword);
     int num2 = 0;
     int num3 = 0;
     while ((long)num3 < (long)((ulong)this.dbxHeader.lenKeyword))
     {
         if (array[num3] == 0)
         {
             string @string = Encoding.ASCII.GetString(array, num2, num3 - num2);
             if (@string != "")
             {
                 this.unhash.Add(DbxFile.hasher(@string), @string);
             }
             num2 = num3 + 1;
         }
         num3++;
     }
     this.fieldDescriptors = new List<FieldDescriptor>((int)this.dbxHeader.numField);
     int num4 = 0;
     while ((long)num4 < (long)((ulong)this.dbxHeader.numField))
     {
         FieldDescriptor item = new FieldDescriptor(fCas);
         this.fieldDescriptors.Add(item);
         num4++;
     }
     this.complexDescriptors = new List<ComplexDescriptor>((int)this.dbxHeader.numComplex);
     int num5 = 0;
     while ((long)num5 < (long)((ulong)this.dbxHeader.numComplex))
     {
         ComplexDescriptor item2 = new ComplexDescriptor(fCas);
         this.complexDescriptors.Add(item2);
         num5++;
     }
     this.instanceRepeaters = new List<InstanceRepeater>();
     int num6 = 0;
     while ((long)num6 < (long)((ulong)this.dbxHeader.numInstanceRepeater))
     {
         this.instanceRepeaters.Add(new InstanceRepeater(fCas));
         num6++;
     }
     long num7 = 16L - (fCas.BaseStream.Position - (long)((ulong)this.catEntry.offset)) % 16L;
     if (num7 != 16L)
     {
         fCas.ReadBytes((int)num7);
     }
     this.arrayRepeaters = new List<ArrayRepeater>();
     int num8 = 0;
     while ((long)num8 < (long)((ulong)this.dbxHeader.numArrayRepeater))
     {
         this.arrayRepeaters.Add(new ArrayRepeater(fCas));
         num8++;
     }
 }