Sayfa-object ters indeksi
HotPDF, page object kimliğinden sıfır tabanlı sayfa konumuna giden belge-yerel bir ters indeks tutar
Arama davranışı
GetPageArrIndexForObjectNumber bir PDF object numarası kabul eder; GetPageArrIndexForObject ise çözülmüş bir page object veya bir THPDFLink kabul eder
Değer geçerli bir sayfayı tanımlamıyorsa her iki metot da -1 döndürür
Bozuk girdi aynı kimliği birden çok kez ortaya çıkarırsa, belge sırasındaki ilk sayfa deterministik olarak kazanır
İnşa ve geçersiz kılma
İndeks ilk aramada tembel olarak inşa edilir ve object numaraları ile çözülmüş object pointer'ları için ayrı open-addressed map'ler kullanır
Sayfaları yükleme, sıfırlama, ekleme, silme, kopyalama, değiştirme, taşıma, ters çevirme, takas etme, yeniden sıralama veya uzlaştırma map'leri geçersiz kılar
Sonraki arama, her iki map'i geçerli sayfa sırasından yeniden inşa eder; böylece değişiklik maliyeti hevesli bir indeks yeniden inşası içermez
Performans ve sahiplik
Map'ler load factor'lerini yarının altında tutar ve O(page count) inşasından sonra beklenen sabit zamanda arama sağlar
Bir regression gate'i, 100.000 sayfalık bir tabloda değişiklikten sonra bir milyon arama yapar ve desteklenen iki Windows hedefinde de 5 mikrosaniyenin altında p95 latency ister
İndeks, sahiplik taşımayan object pointer'ları saklar ve THotPDF örneğiyle birlikte serbest bırakılır
Bir THotPDF örneğini sayfa aramasıyla eşzamanlı olarak değiştirmeyin; çünkü yüklü belge graph değişikliği çağıran tarafından serileştirilmeye devam eder
Ayrıca bkz.: GetPageArrIndexForObjectNumber, GetPageArrIndexForObject, GetPageReverseIndexStatistics