Sarmalayıcı kütüphane - Vikipedi
İçeriğe atla
Ana menü
Gezinti
  • Anasayfa
  • Hakkımızda
  • İçindekiler
  • Rastgele madde
  • Seçkin içerik
  • Yakınımdakiler
Katılım
  • Deneme tahtası
  • Köy çeşmesi
  • Son değişiklikler
  • Dosya yükle
  • Topluluk portalı
  • Wikimedia dükkânı
  • Yardım
  • Özel sayfalar
Vikipedi Özgür Ansiklopedi
Ara
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç

İçindekiler

  • Giriş
  • 1 Yapı ve uygulama
    • 1.1 Örnek
      • 1.1.1 C arayüzü
      • 1.1.2 C++ sarmalayıcı
    • 1.2 Sürücü sarmalayıcıları
  • 2 Çapraz dil/çalışma zamanı birlikte çalışabilirliği
  • 3 Mevcut sarmalayıcı kütüphaneler
  • 4 Ayrıca bakınız

Sarmalayıcı kütüphane

  • English
  • Français
  • Magyar
  • 한국어
  • Polski
  • Русский
  • Українська
  • 中文
Bağlantıları değiştir
  • Madde
  • Tartışma
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Araçlar
Eylemler
  • Oku
  • Değiştir
  • Kaynağı değiştir
  • Geçmişi gör
Genel
  • Sayfaya bağlantılar
  • İlgili değişiklikler
  • Kalıcı bağlantı
  • Sayfa bilgisi
  • Bu sayfayı kaynak göster
  • Kısaltılmış URL'yi al
  • Karekodu indir
Yazdır/dışa aktar
  • Bir kitap oluştur
  • PDF olarak indir
  • Basılmaya uygun görünüm
Diğer projelerde
  • Vikiveri ögesi
Görünüm
Vikipedi, özgür ansiklopedi

Sarmalayıcı kütüphaneler (veya kütüphane sarmalayıcıları; İngilizce: wrapper library veya library wrappers), bir kütüphanenin mevcut arayüzünü uyumlu bir arayüze çeviren ince bir kod katmanından (bir "dolgu" İngilizce: shim) oluşur. Bu, çeşitli nedenlerle yapılır:

  • Kötü tasarlanmış veya karmaşık bir arayüzü iyileştirmek için
  • Aksi takdirde birlikte çalışamayacak kodların birlikte çalışmasına izin vermek (örneğin uyumsuz veri biçimleri)
  • Dil ve/veya çalıştırma ortamı (runtime) arası birlikte çalışabilirliği etkinleştirmek için

Sarmalayıcı kütüphaneler adaptör, faça ve daha az ölçüde vekil tasarım desenleri kullanılarak uygulanabilir.

Yapı ve uygulama

[değiştir | kaynağı değiştir]

Bir sarmalayıcı kütüphanenin uygulanma şekli, yazıldığı ortama ve ele almayı amaçladığı senaryolara bağlı olarak oldukça özeldir. Bu durum özellikle çapraz dil/çalışma zamanı birlikte çalışabilirliği söz konusu olduğunda geçerlidir.

Örnek

[değiştir | kaynağı değiştir]

Aşağıda yaygın bir sarmalayıcı kütüphane uygulamasının genel bir örneği verilmektedir. Bu örnekte, bir C++ arayüzü, bir C dili arayüzü etrafında bir "sarmalayıcı" görevi görür.

C arayüzü

[değiştir | kaynağı değiştir]
int pthread_mutex_init(pthread_mutex_t * mutex , pthread_mutexattr_t * attr);
int pthread_mutex_destroy (pthread_mutex_t * mutex);
int pthread_mutex_lock (pthread_mutex_t * mutex );
int pthread_mutex_unlock (pthread_mutex_t * mutex );

C++ sarmalayıcı

[değiştir | kaynağı değiştir]
class Mutex
{
     pthread_mutex_t mutex;

public:
     Mutex() 
     {
          pthread_mutex_init(&mutex, 0);
     }

     ~Mutex()
     {
          pthread_mutex_destroy(&mutex);
     }

private:
     friend class Lock;

     void lock()
     {
          pthread_mutex_lock(&mutex);
     }

     void unlock()
     {
          pthread_mutex_unlock(&mutex);
     }
};

class Lock
{
private:
      Mutex &mutex;

public:
      Lock(Mutex &mutex): mutex{mutex}
      {
            mutex.lock();
      }

      ~Lock()
      {
            mutex.unlock();
      }
};

Orijinal C arayüzü, özellikle kütüphane kullanıcılarının zaten kilitli olan bir muteksin kilidini açmayı unutması durumunda hataya açık olarak kabul edilebilir. Yeni arayüz, Mutex'lerin sonunda kilidinin açılmasını ve pthread_mutex_t nesnelerinin otomatik olarak serbest bırakılmasını sağlamak için yeni Mutex ve Lock sınıflarında RAII (Resource Acquisition is Initialization) özelliğini etkin bir şekilde kullanır.

Yukarıdaki kod, boost::thread kütüphanesinin bir parçası olan boost::scoped_lock ve boost::mutex uygulamalarını yakından taklit eder.

Sürücü sarmalayıcıları

[değiştir | kaynağı değiştir]
Daha fazla bilgi: Sürücü sarmalayıcı

Çapraz dil/çalışma zamanı birlikte çalışabilirliği

[değiştir | kaynağı değiştir]

Bazı sarmalayıcı kütüphaneler, bir istemci uygulaması ile uyumsuz bir teknoloji kullanılarak yazılmış bir kütüphane arasında köprü görevi görmek için vardır. Örneğin, bir Java uygulamasının bir sistem çağrısı çalıştırması gerekebilir. Ancak sistem çağrıları genellikle C kütüphanesi işlevleri olarak gösterilir. Bu sorunu çözmek için Java, bu sistem çağrılarını bir Java uygulamasından çağrılabilir hale getiren sarmalayıcı kütüphaneler kullanır.

Bunu başarmak için, Java gibi diller bunu mümkün kılan yabancı fonksiyon arayüzü adı verilen bir mekanizma sağlar. Bu mekanizmaların bazı örnekleri şunlardır:

  • Java Native Interface (JNI)
  • Java Native Access (JNA)
  • A foreign function library for Python
  • Managed Extensions
  • Simplified Wrapper and Interface Generator (SWIG)

Mevcut sarmalayıcı kütüphaneler

[değiştir | kaynağı değiştir]

Mevcut sarmalayıcı kütüphanelere bazı örnekler:

  • Pthreads for WIN32
  • OpenGL Bindings for Python
  • MySQL++
  • JavaCV

Ayrıca bakınız

[değiştir | kaynağı değiştir]
  • Sarmalayıcı fonksiyon
  • Sarmalayıcı desen
  • Yapıştırıcı kodu
"https://tr.wikipedia.org/w/index.php?title=Sarmalayıcı_kütüphane&oldid=30369992" sayfasından alınmıştır
Kategori:
  • Bilgisayar kütüphaneleri
  • Sayfa en son 06.44, 13 Ekim 2023 tarihinde değiştirildi.
  • Metin Creative Commons Atıf-AynıLisanslaPaylaş Lisansı altındadır ve ek koşullar uygulanabilir. Bu siteyi kullanarak Kullanım Şartlarını ve Gizlilik Politikasını kabul etmiş olursunuz.
    Vikipedi® (ve Wikipedia®) kâr amacı gütmeyen kuruluş olan Wikimedia Foundation, Inc. tescilli markasıdır.
  • Gizlilik politikası
  • Vikipedi hakkında
  • Sorumluluk reddi
  • Davranış Kuralları
  • Geliştiriciler
  • İstatistikler
  • Çerez politikası
  • Mobil görünüm
  • Wikimedia Foundation
  • Powered by MediaWiki
Sarmalayıcı kütüphane
Konu ekle