Sözdizimi
gperf [SEÇENEK]... [GİRDİ-DOSYASI]
Açıklama
GNU 'gperf' mükemmel karma (perfect hash) fonksiyonları oluşturur.
Uzun bir seçenekte bir argüman zorunlu olarak belirtilmişse, bu argüman eşdeğer kısa seçenek için de zorunludur.
Çıkış dosyası konumu: --output-file=DOSYA Çıktıyı belirtilen dosyaya yazar.
Herhangi bir çıkış dosyası belirtilmemişse veya - ise, sonuçlar standart çıktıya (stdout) yazılır.
Girdi dosyası yorumlama: -e, --delimiters=SINIRLANDIRICI-LİSTESİ Kullanıcının, anahtar kelimeleri özniteliklerinden ayırmak için kullanılan sınırlandırıcıları içeren bir dize belirtmesine olanak tanır. Varsayılan değer "," şeklindedir.
-t, --struct-type
Kullanıcının oluşturulan kod için yapılandırılmış bir tür (struct type) bildirimi eklemesine olanak tanır. %% işaretinden önceki tüm metinler tür bildiriminin bir parçası olarak kabul edilir. Anahtar kelimeler ve ek alanlar bunu takip edebilir, her satıra bir alan grubu gelecek şekilde.
--ignore-case Büyük ve küçük harf ASCII karakterlerini eşdeğer kabul eder. Yerel ayarlara (locale) bağlı harf eşleştirmelerinin yoksayılacağını unutmayın.
Çıkış kodu için programlama dili: -L, --language=DİL-ADI Oluşturulan kodun yazılacağı dili belirler. Şu anda desteklenen diller C++, ANSI-C, C ve KR-C'dir. Varsayılan C'dir.
Çıkış kodundaki ayrıntılar: -K, --slot-name=AD Anahtar kelime yapısındaki (keyword structure) anahtar kelime bileşeninin adını seçer.
-F, --initializer-suffix=BAŞLATICILAR Anahtar kelime yapısındaki ek bileşenler için başlatıcılar (initializers).
-H, --hash-function-name=AD Oluşturulan karma (hash) fonksiyonunun adını belirtir. Varsayılan değer 'hash'tir.
-N, --lookup-function-name=AD Oluşturulan arama (lookup) fonksiyonunun adını belirtir. Varsayılan ad 'in_word_set'tir.
-Z, --class-name=AD Oluşturulan C++ sınıfının adını belirtir. Varsayılan ad 'Perfect_Hash'tir.
-7, --seven-bit Karakterlerin 7-bit olduğunu varsayar.
-l, --compare-lengths Bir dize karşılaştırması yapmadan önce anahtar uzunluklarını karşılaştırır. Anahtar kelimeler NUL baytları içeriyorsa bu gereklidir. Ayrıca arama sırasında yapılan dize karşılaştırmalarının sayısını azaltmaya da yardımcı olur.
-c, --compare-strncmp strcmp yerine strncmp kullanarak karşılaştırma kodu oluşturur.
-C, --readonly-tables Oluşturulan arama tablolarının içeriğini sabit, yani salt okunur (readonly) yapar.
-E, --enum Sabit değerleri #define'lar yerine arama fonksiyonuna özel bir enum (yerel enum) kullanarak tanımlar.
-I, --includes
Kodun başlangıcında gerekli sistem başlık dosyası olan <string.h> dosyasını dahil eder.
-G, --global-table Anahtar kelimelerin statik tablosunu arama fonksiyonunun içinde gizlemek yerine (varsayılan davranış budur), statik bir genel (global) değişken olarak oluşturur.
-P, --pic Oluşturulan tabloyu paylaşılan kütüphanelere (shared libraries) dahil edilmek üzere optimize eder. Bu, oluşturulan kodu içeren paylaşılan bir kütüphaneyi kullanan programların başlangıç süresini azaltır.
-Q, --string-pool-name=AD --pic seçeneği tarafından oluşturulan dize havuzunun (string pool) adını belirtir. Varsayılan ad 'stringpool'dur.
--null-strings Boş anahtar kelime tablosu girişleri için boş dizeler yerine NULL dizeleri kullanır.
-W, --word-array-name=AD Kelime listesi dizisinin (word list array) adını belirtir. Varsayılan ad 'wordlist'tir.
--length-table-name=AD Uzunluk tablosu dizisinin (length table array) adını belirtir. Varsayılan ad 'lengthtable'dır.
-S, --switch=SAYI Oluşturulan C kodunun bir dizi arama tablosu yerine bir switch deyimi şeması kullanmasını sağlar. Bu, bazı anahtar dosyaları için hem zaman hem de alan gereksinimlerinde azalma sağlayabilir. SAYI argümanı, kaç adet switch deyiminin oluşturulacağını belirler. 1 değeri, tüm öğeleri içeren 1 switch oluşturur; 2 değeri, her bir tabloda öğelerin yarısının bulunduğu 2 tablo oluşturur, vb. Eğer SAYI çok büyükse (örneğin 1000000), oluşturulan C kodu ikili arama (binary search) yapar.
-T, --omit-struct-type Tür bildiriminin çıkış dosyasına aktarılmasını önler. Eğer tür zaten başka bir yerde tanımlanmışsa bu seçeneği kullanın.
--size-type=TÜR Uzunluk parametreleri için türü belirtir. Varsayılan tür 'unsigned int'tir.
gperf tarafından uygulanan algoritma: -k, --key-positions=ANAHTARLAR Karma fonksiyonunda kullanılacak anahtar konumlarını seçer. İzin verilen seçenekler 1-255 (dahil) aralığındadır. Konumlar virgülle ayrılır, aralıklar kullanılabilir ve anahtar konumları herhangi bir sırada bulunabilir. Ayrıca, '*' özel karakteri oluşturulan karma fonksiyonunun TÜM anahtar konumlarını dikkate almasını sağlar ve $ bir anahtarın "son karakterini" belirtir, örneğin: $,1,2,4,6-10.
-D, --duplicates Aynı karma değerine (duplicate values) sahip anahtar kelimeleri işler. Bu, belirli yüksek derecede yedekli (redundant) anahtar kelime kümeleri için kullanışlıdır.
-m, --multiple-iterations=YİNELEME -i ve -j değerleri için birden fazla seçim gerçekleştirir ve en iyi sonuçları seçer. Bu, çalışma süresini YİNELEME faktörü kadar artırır ancak oluşturulan tablo boyutunu en aza indirmede iyi bir iş çıkarır.
-i, --initial-asso=N İlişkili değerler dizisi (associate values array) için bir başlangıç değeri sağlar. Varsayılan değer 0'dır. Bu değerin daha büyük ayarlanması nihai tablonun boyutunu genişletmeye yardımcı olur.
-j, --jump=ATlama-DEĞERİ "Atlama değerini", yani çakışma durumunda ilişkili karakter değerinin ne kadar ilerletileceğini etkiler. Tek bir sayı olmalıdır, varsayılan değer 5'tir.
-n, --no-strlen Karma fonksiyonunu hesaplarken anahtar kelimenin uzunluğunu dahil etmez.
-r, --random İlişkili değerler tablosunu başlatmak için rastgelemeliği (randomness) kullanır.
-s, --size-multiple=N Oluşturulan karma tablosunun boyutunu etkiler. N sayısal argümanı, ilişkili değer aralığının anahtar sayısına oranla "kaç kat daha büyük veya daha küçük" olması gerektiğini belirtir; örneğin 3 değeri, "maksimum ilişkili değerin, girdi anahtarlarının sayısından yaklaşık 3 kat daha büyük olmasına izin ver" anlamına gelir. Tersine, 1/3 değeri ise "maksimum ilişkili değeri, girdi anahtarlarının sayısından yaklaşık 3 kat daha küçük yap" anlamına gelir. Daha büyük bir tablo, ekstra tablo alanı pahasına, başarısız bir arama için gereken süreyi azaltmalıdır. Varsayılan değer 1'dir.
Bilgilendirici çıktı: -h, --help Bu mesajı yazdırır.
-v, --version gperf sürüm numarasını yazdırır.
-d, --debug Hata ayıklama seçeneğini etkinleştirir (standart hataya ayrıntılı çıktı üretir).
Yazar
Douglas C. Schmidt ve Bruno Haible tarafından yazılmıştır.
Hataları Bildirme
Hataları bug-gnu-gperf@gnu.org adresine bildirin.
Telif Hakkı
Telif Hakkı © 1989-1998, 2000-2004, 2006-2007 Free Software Foundation, Inc. Bu bir özgür yazılımdır; kopyalama koşulları için kaynak koda bakın. Hiçbir garanti yoktur; TİCARİ ELVERİŞLİLİK veya BELİRLİ BİR AMACA UYGUNLUK garantisi dahi verilmez.
Ayrıca Bakınız
gperf için tam belgelendirme bir Texinfo kılavuzu olarak sürdürülmektedir. Eğer info ve gperf programları sisteminize düzgün bir şekilde kurulmuşsa, şu komut:
info gperf
tam kılavuza erişmenizi sağlayacaktır.
GNU gperf 3.0.3 Ekim 2011 GPERF(1)