Sealang è un insieme migliorato di binding Python per libclang.

I manutentori upstream di `libclang' non sono stati particolarmente non sono stati particolarmente sensibili alle patch che affrontano problemi come la compatibilità con Python 3, e le significative omissioni nell'API (come l'estrazione di letterali e operatori). e gli operatori).

Questo pacchetto è un fork dei binding ufficiali di Python per libclang, con una patch che corregge questi problemi.

Come funziona

Sealang è un hack un po' particolare. libclang è un insieme di collegamenti C a un'API C++. API C++; i ctypes' di Python sono quindi usati per avvolgere l'API C. Tuttavia, mentre l'API C++ è piuttosto ricca,libclang` lo è meno.

Sealang colma questa lacuna fornendo dei wrapper C intorno alle chiamate C++ che forniscono le funzionalità utili. Questa libreria di funzioni C è come modulo C di Python per la consegna; questo modulo C non contiene oggetti o metodi Python esposti. non contiene oggetti o metodi Python* esposti, ma poiché si tratta di un modulo, la compilazione sottostante modulo, il sottostante compilato sealang.so è facile da trovare. I ctypes sono quindi usati per esporre il file funzioni wrapper di Sealang;

Internamente, Sealang riproduce alcune parti minori dell'API libclang; si tratta di metodi (come quelli per la creazione e la manipolazione delle stringhe) che non sono esposti come simboli per l'uso da parte di terzi.

Tutte queste funzionalità sono potenzialmente candidate a essere passate a monte a libclang.

Relazione con Clang

Questo progetto ha l'obiettivo di rispecchiare ciò che è attualmente disponibile nei bindings Python per libclang. Il numero di versione di questo progetto è tratto dalla versione e dalla revisione SVN del repository ufficiale di clang.

Qualsiasi modifica apportata a monte a libclang verrà rispecchiata qui; qualsiasi modifiche apportate qui saranno, ove possibile, spinte a monte a libclang.

Stato di sviluppo

Questo progetto è stato un esperimento sviluppato per supportare [Seasnake] (/project/attic/seasnake). Poiché Seasnake è stato abbandonato, anche questo progetto.

Come aiutare