Sealang, libclang için geliştirilmiş bir Python bağlama kümesidir.

libclang`ın yukarı akış bakımcıları özellikle Python 3 uyumluluğu gibi sorunları ele alan yamalara duyarlı, ve API'deki önemli eksiklikler (örneğin, değişmezlerin ayıklanması ve operatörler).

Bu paket libclang için resmi Python bağlamalarının bir çatallamasıdır, bu sorunları düzeltmek için yamalanmıştır.

Nasıl çalışır

Sealang biraz kötü bir hacktir. libclang bir dizi C bağlayıcısıdır. C++ API; Python ctypes daha sonra C API'yi sarmak için kullanılır. Bununla birlikte C++ API oldukça zengindir, libclang ise daha az zengindir.

Sealang, C++ çağrıları etrafında C sarmalayıcıları sağlayarak bu boşluğu kapatır kullanışlı işlevsellik sağlar. Bu C fonksiyonları kütüphanesi teslimat amacıyla bir Python C modülü olarak paketlenmiştir - bu C modülü hiçbir açık Python nesnesi veya yöntemi içermez, ancak bir modülü, altta yatan derlenmiş sealang.so dosyasını bulmak kolaydır. ctypes daha sonra şu öğeleri ortaya çıkarmak için kullanılır sealang sarmalayıcı işlevleri;

Sealang dahili olarak libclang API'sinin bazı küçük parçalarını yeniden üretir; bunlar metotlardır (string oluşturma ve manipülasyon metotları gibi) Üçüncü taraf kullanımı için sembol olarak gösterilmeyen.

Tüm bu işlevler potansiyel olarak yukarı akışa aktarılmaya adaydır libclang'a.

Clang ile İlişki

Bu proje şu anda Python'da mevcut olanları yansıtmayı amaçlamaktadır bağları libclang için. Bu proje için sürüm numarası çizilmiştir resmi clang deposunun sürümünden ve SVN revizyonundan.

Yukarı yönde libclang üzerinde yapılan tüm değişiklikler buraya yansıtılacaktır; herhangi bir Burada yapılan değişiklikler, mümkün olduğunda, yukarı yönde libclang.

Geliştirme durumu

Bu proje, aşağıdakileri desteklemek için geliştirilmiş bir deneydi Seasnake. Seasnake terk edildiğinden beri, Bu proje de öyle.

How to help