Sealang es un conjunto mejorado de enlaces Python para libclang
.
Los desarrolladores de libclang
no han sido especialmente
receptivos a los parches que abordan cuestiones como la compatibilidad con Python 3
y las omisiones significativas en la API (como la extracción de literales
y operadores).
Este paquete es un fork de los enlaces oficiales de Python para libclang
,
parcheado para corregir estos problemas.
Cómo funciona
Sealang es un hack un poco desagradable. libclanges un conjunto de enlaces C a una
API de C++; los
ctypesde Python se utilizan para envolver la API de C. Sin embargo, mientras que
C++ es bastante rica,
libclang` no lo es tanto.
Sealang cubre este vacío proporcionando envolturas C alrededor de las llamadas C que proporcionan la funcionalidad útil. Esta biblioteca de funciones C funciones C se envuelve como un módulo C de Python con fines de no contiene objetos o métodos Python expuestos, pero como es un módulo módulo, el compilado subyacente sealang.so es fácil de encontrar. Los ctypes se utilizan para exponer los módulos. sealang;
Internamente, Sealang reproduce algunas partes menores de la API libclang
;
estos son métodos (como los métodos de creación y manipulación de cadenas)
que no están expuestos como símbolos para uso de terceros.
Toda esta funcionalidad es potencialmente un candidato para ser pasado aguas arriba a libclang.
Relación con Clang
Este proyecto tiene como objetivo reflejar lo que está actualmente disponible en el Python
de libclang
. El número de versión de este proyecto se extrae
de la versión y revisión SVN del repositorio oficial de clang.
Cualquier cambio realizado en libclang
se reflejará aquí; cualquier
cambios hechos aquí serán, cuando sea posible, empujados aguas arriba a
libclang
.
Estado de desarrollo
Este proyecto fue un experimento desarrollado para apoyar Seasnake. Dado que Seasnake ha sido abandonado, también lo ha hecho este proyecto.