mirror of
https://github.com/ralsina/tartrazine.git
synced 2025-06-27 14:47:50 -03:00
Merge commit 'f955c625aded244864e83a872b396868a490dbc5' as 'go-enry'
This commit is contained in:
134
go-enry/python/build_enry.py
Normal file
134
go-enry/python/build_enry.py
Normal file
@ -0,0 +1,134 @@
|
||||
from cffi import FFI
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
ffibuilder = FFI()
|
||||
|
||||
# cdef() expects a single string declaring the C types, functions and
|
||||
# globals needed to use the shared object. It must be in valid C syntax.
|
||||
# Taken from java/shared/libenry.h
|
||||
ffibuilder.cdef(
|
||||
"""
|
||||
typedef unsigned char GoUint8;
|
||||
typedef long long GoInt64;
|
||||
typedef GoInt64 GoInt;
|
||||
|
||||
typedef struct { const char *p; ptrdiff_t n; } _GoString_;
|
||||
typedef _GoString_ GoString;
|
||||
|
||||
typedef struct { void *data; GoInt len; GoInt cap; } GoSlice;
|
||||
|
||||
|
||||
extern GoString GetLanguage(GoString p0, GoSlice p1);
|
||||
|
||||
/* Return type for GetLanguageByContent */
|
||||
struct GetLanguageByContent_return {
|
||||
GoString r0; /* language */
|
||||
GoUint8 r1; /* safe */
|
||||
};
|
||||
|
||||
extern struct GetLanguageByContent_return GetLanguageByContent(GoString p0, GoSlice p1);
|
||||
|
||||
/* Return type for GetLanguageByEmacsModeline */
|
||||
struct GetLanguageByEmacsModeline_return {
|
||||
GoString r0; /* language */
|
||||
GoUint8 r1; /* safe */
|
||||
};
|
||||
|
||||
extern struct GetLanguageByEmacsModeline_return GetLanguageByEmacsModeline(GoSlice p0);
|
||||
|
||||
/* Return type for GetLanguageByExtension */
|
||||
struct GetLanguageByExtension_return {
|
||||
GoString r0; /* language */
|
||||
GoUint8 r1; /* safe */
|
||||
};
|
||||
|
||||
extern struct GetLanguageByExtension_return GetLanguageByExtension(GoString p0);
|
||||
|
||||
/* Return type for GetLanguageByFilename */
|
||||
struct GetLanguageByFilename_return {
|
||||
GoString r0; /* language */
|
||||
GoUint8 r1; /* safe */
|
||||
};
|
||||
|
||||
extern struct GetLanguageByFilename_return GetLanguageByFilename(GoString p0);
|
||||
|
||||
/* Return type for GetLanguageByModeline */
|
||||
struct GetLanguageByModeline_return {
|
||||
GoString r0; /* language */
|
||||
GoUint8 r1; /* safe */
|
||||
};
|
||||
|
||||
extern struct GetLanguageByModeline_return GetLanguageByModeline(GoSlice p0);
|
||||
|
||||
/* Return type for GetLanguageByShebang */
|
||||
struct GetLanguageByShebang_return {
|
||||
GoString r0; /* language */
|
||||
GoUint8 r1; /* safe */
|
||||
};
|
||||
|
||||
extern struct GetLanguageByShebang_return GetLanguageByShebang(GoSlice p0);
|
||||
|
||||
/* Return type for GetLanguageByVimModeline */
|
||||
struct GetLanguageByVimModeline_return {
|
||||
GoString r0; /* language */
|
||||
GoUint8 r1; /* safe */
|
||||
};
|
||||
|
||||
extern struct GetLanguageByVimModeline_return GetLanguageByVimModeline(GoSlice p0);
|
||||
|
||||
extern void GetLanguageExtensions(GoString p0, GoSlice* p1);
|
||||
|
||||
extern void GetLanguages(GoString p0, GoSlice p1, GoSlice* p2);
|
||||
|
||||
extern void GetLanguagesByContent(GoString p0, GoSlice p1, GoSlice p2, GoSlice* p3);
|
||||
|
||||
extern void GetLanguagesByEmacsModeline(GoString p0, GoSlice p1, GoSlice p2, GoSlice* p3);
|
||||
|
||||
extern void GetLanguagesByExtension(GoString p0, GoSlice p1, GoSlice p2, GoSlice* p3);
|
||||
|
||||
extern void GetLanguagesByFilename(GoString p0, GoSlice p1, GoSlice p2, GoSlice* p3);
|
||||
|
||||
extern void GetLanguagesByModeline(GoString p0, GoSlice p1, GoSlice p2, GoSlice* p3);
|
||||
|
||||
extern void GetLanguagesByShebang(GoString p0, GoSlice p1, GoSlice p2, GoSlice* p3);
|
||||
|
||||
extern void GetLanguagesByVimModeline(GoString p0, GoSlice p1, GoSlice p2, GoSlice* p3);
|
||||
|
||||
extern GoString GetMimeType(GoString p0, GoString p1);
|
||||
|
||||
extern GoUint8 IsBinary(GoSlice p0);
|
||||
|
||||
extern GoUint8 IsConfiguration(GoString p0);
|
||||
|
||||
extern GoUint8 IsDocumentation(GoString p0);
|
||||
|
||||
extern GoUint8 IsDotFile(GoString p0);
|
||||
|
||||
extern GoUint8 IsImage(GoString p0);
|
||||
|
||||
extern GoUint8 IsVendor(GoString p0);
|
||||
|
||||
extern GoUint8 IsGenerated(GoString p0, GoSlice p1);
|
||||
|
||||
extern GoString GetColor(GoString p0);
|
||||
"""
|
||||
)
|
||||
|
||||
# set_source() gives the name of the python extension module to
|
||||
# produce, and some C source code as a string. This C code needs
|
||||
# to make the declarated functions, types and globals available,
|
||||
# so it is often just the "#include".
|
||||
lib_dir = Path(__file__).resolve().parent.parent / ".shared"
|
||||
lib_header = lib_dir / "libenry.h"
|
||||
|
||||
ffibuilder.set_source(
|
||||
"_c_enry",
|
||||
f'#include "{lib_header.absolute()}"',
|
||||
libraries=["enry"],
|
||||
library_dirs=[str(lib_dir.absolute())],
|
||||
) # library name, for the linker
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
ffibuilder.compile(verbose=True)
|
Reference in New Issue
Block a user