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

This project was an experiment developed to support Seasnake. Since Seasnake has been abandoned, so has this project.

How to help