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++; losctypesde 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.

¿Cómo ayudar?