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 "" İ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 , ve daha az ölçüde tasarım desenleri kullanılarak uygulanabilir.
Yapı ve uygulama
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
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ü
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ı
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 ö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ı
Çapraz dil/çalışma zamanı birlikte çalışabilirliği
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 ç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 adı verilen bir mekanizma sağlar. Bu mekanizmaların bazı örnekleri şunlardır:
- (JNI)
- (JNA)
- A foreign function library for Python
- (SWIG)
Mevcut sarmalayıcı kütüphaneler
Mevcut sarmalayıcı kütüphanelere bazı örnekler:
- Pthreads for WIN32
- OpenGL Bindings for Python
- MySQL++
- JavaCV
Ayrıca bakınız
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
Sarmalayici kutuphaneler veya kutuphane sarmalayicilari Ingilizce wrapper library veya library wrappers bir kutuphanenin mevcut arayuzunu uyumlu bir arayuze ceviren ince bir kod katmanindan bir Ingilizce shim olusur Bu cesitli nedenlerle yapilir Kotu tasarlanmis veya karmasik bir arayuzu iyilestirmek icin Aksi takdirde birlikte calisamayacak kodlarin birlikte calismasina izin vermek ornegin uyumsuz veri bicimleri Dil ve veya calistirma ortami runtime arasi birlikte calisabilirligi etkinlestirmek icin Sarmalayici kutuphaneler ve daha az olcude tasarim desenleri kullanilarak uygulanabilir Yapi ve uygulamaBir sarmalayici kutuphanenin uygulanma sekli yazildigi ortama ve ele almayi amacladigi senaryolara bagli olarak oldukca ozeldir Bu durum ozellikle capraz dil calisma zamani birlikte calisabilirligi soz konusu oldugunda gecerlidir Ornek Asagida yaygin bir sarmalayici kutuphane uygulamasinin genel bir ornegi verilmektedir Bu ornekte bir C arayuzu bir C dili arayuzu etrafinda bir sarmalayici gorevi gorur C arayuzu 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 sarmalayici class Mutex pthread mutex t mutex public Mutex pthread mutex init amp mutex 0 Mutex pthread mutex destroy amp mutex private friend class Lock void lock pthread mutex lock amp mutex void unlock pthread mutex unlock amp mutex class Lock private Mutex amp mutex public Lock Mutex amp mutex mutex mutex mutex lock Lock mutex unlock Orijinal C arayuzu ozellikle kutuphane kullanicilarinin zaten kilitli olan bir muteksin kilidini acmayi unutmasi durumunda hataya acik olarak kabul edilebilir Yeni arayuz Mutex lerin sonunda kilidinin acilmasini ve pthread mutex t nesnelerinin otomatik olarak serbest birakilmasini saglamak icin yeni Mutex ve Lock siniflarinda ozelligini etkin bir sekilde kullanir Yukaridaki kod boost thread kutuphanesinin bir parcasi olan boost scoped lock ve boost mutex uygulamalarini yakindan taklit eder Surucu sarmalayicilariCapraz dil calisma zamani birlikte calisabilirligiBazi sarmalayici kutuphaneler bir istemci uygulamasi ile uyumsuz bir teknoloji kullanilarak yazilmis bir kutuphane arasinda kopru gorevi gormek icin vardir Ornegin bir Java uygulamasinin bir calistirmasi gerekebilir Ancak sistem cagrilari genellikle C kutuphanesi islevleri olarak gosterilir Bu sorunu cozmek icin Java bu sistem cagrilarini bir Java uygulamasindan cagrilabilir hale getiren sarmalayici kutuphaneler kullanir Bunu basarmak icin Java gibi diller bunu mumkun kilan adi verilen bir mekanizma saglar Bu mekanizmalarin bazi ornekleri sunlardir JNI JNA A foreign function library for Python SWIG Mevcut sarmalayici kutuphanelerMevcut sarmalayici kutuphanelere bazi ornekler Pthreads for WIN32 OpenGL Bindings for Python MySQL JavaCVAyrica bakiniz