Exemple #1
0
 internal void Finish()
 {
     if (bb != null)
     {
         throw new InvalidOperationException();
     }
     bb          = new ByteBuffer(1024);
     linkOffsets = new List <int>();
     root.Write(bb, linkOffsets);
     root = null;
 }
Exemple #2
0
 internal ResourceDirectoryEntry this[OrdinalOrName id]
 {
     get
     {
         foreach (ResourceDirectoryEntry entry in entries)
         {
             if (entry.OrdinalOrName.IsEqual(id))
             {
                 return(entry);
             }
         }
         // the entries must be sorted
         ResourceDirectoryEntry newEntry = new ResourceDirectoryEntry(id);
         if (id.Name == null)
         {
             for (int i = namedEntries; i < entries.Count; i++)
             {
                 if (entries[i].OrdinalOrName.IsGreaterThan(id))
                 {
                     entries.Insert(i, newEntry);
                     return(newEntry);
                 }
             }
             entries.Add(newEntry);
             return(newEntry);
         }
         else
         {
             for (int i = 0; i < namedEntries; i++)
             {
                 if (entries[i].OrdinalOrName.IsGreaterThan(id))
                 {
                     entries.Insert(i, newEntry);
                     namedEntries++;
                     return(newEntry);
                 }
             }
             entries.Insert(namedEntries++, newEntry);
             return(newEntry);
         }
     }
 }