1// +build darwin,cgo linux,cgo
2// +build amd64
3
4package main
5
6import "C"
7import "github.com/go-enry/go-enry/v2"
8
9//export GetLanguage
10func GetLanguage(filename string, content []byte) string {
11	return enry.GetLanguage(filename, content)
12}
13
14//export GetLanguageByContent
15func GetLanguageByContent(filename string, content []byte) (language string, safe bool) {
16	return enry.GetLanguageByContent(filename, content)
17}
18
19//export GetLanguageByEmacsModeline
20func GetLanguageByEmacsModeline(content []byte) (language string, safe bool) {
21	return enry.GetLanguageByModeline(content)
22}
23
24//export GetLanguageByExtension
25func GetLanguageByExtension(filename string) (language string, safe bool) {
26	return enry.GetLanguageByExtension(filename)
27}
28
29//export GetLanguageByFilename
30func GetLanguageByFilename(filename string) (language string, safe bool) {
31	return enry.GetLanguageByFilename(filename)
32}
33
34//export GetLanguageByModeline
35func GetLanguageByModeline(content []byte) (language string, safe bool) {
36	return enry.GetLanguageByModeline(content)
37}
38
39//export GetLanguageByShebang
40func GetLanguageByShebang(content []byte) (language string, safe bool) {
41	return enry.GetLanguageByShebang(content)
42}
43
44//export GetLanguageByVimModeline
45func GetLanguageByVimModeline(content []byte) (language string, safe bool) {
46	return enry.GetLanguageByVimModeline(content)
47}
48
49//export GetLanguageExtensions
50func GetLanguageExtensions(language string, result *[]*C.char) {
51	strSliceCopy(result, enry.GetLanguageExtensions(language))
52}
53
54//export GetLanguages
55func GetLanguages(filename string, content []byte, result *[]*C.char) {
56	strSliceCopy(result, enry.GetLanguages(filename, content))
57}
58
59//export GetLanguagesByContent
60func GetLanguagesByContent(filename string, content []byte, candidates []string, result *[]*C.char) {
61	strSliceCopy(result, enry.GetLanguagesByContent(filename, content, candidates))
62}
63
64//export GetLanguagesByEmacsModeline
65func GetLanguagesByEmacsModeline(filename string, content []byte, candidates []string, result *[]*C.char) {
66	strSliceCopy(result, enry.GetLanguagesByEmacsModeline(filename, content, candidates))
67}
68
69//export GetLanguagesByExtension
70func GetLanguagesByExtension(filename string, content []byte, candidates []string, result *[]*C.char) {
71	strSliceCopy(result, enry.GetLanguagesByExtension(filename, content, candidates))
72}
73
74//export GetLanguagesByFilename
75func GetLanguagesByFilename(filename string, content []byte, candidates []string, result *[]*C.char) {
76	strSliceCopy(result, enry.GetLanguagesByFilename(filename, content, candidates))
77}
78
79//export GetLanguagesByModeline
80func GetLanguagesByModeline(filename string, content []byte, candidates []string, result *[]*C.char) {
81	strSliceCopy(result, enry.GetLanguagesByModeline(filename, content, candidates))
82}
83
84//export GetLanguagesByShebang
85func GetLanguagesByShebang(filename string, content []byte, candidates []string, result *[]*C.char) {
86	strSliceCopy(result, enry.GetLanguagesByShebang(filename, content, candidates))
87}
88
89//export GetLanguagesByVimModeline
90func GetLanguagesByVimModeline(filename string, content []byte, candidates []string, result *[]*C.char) {
91	strSliceCopy(result, enry.GetLanguagesByVimModeline(filename, content, candidates))
92}
93
94//export GetMimeType
95func GetMimeType(path string, language string) string {
96	return enry.GetMIMEType(path, language)
97}
98
99//export IsBinary
100func IsBinary(data []byte) bool {
101	return enry.IsBinary(data)
102}
103
104//export IsConfiguration
105func IsConfiguration(path string) bool {
106	return enry.IsConfiguration(path)
107}
108
109//export IsDocumentation
110func IsDocumentation(path string) bool {
111	return enry.IsDocumentation(path)
112}
113
114//export IsDotFile
115func IsDotFile(path string) bool {
116	return enry.IsDotFile(path)
117}
118
119//export IsImage
120func IsImage(path string) bool {
121	return enry.IsImage(path)
122}
123
124//export IsVendor
125func IsVendor(path string) bool {
126	return enry.IsVendor(path)
127}
128
129//export IsGenerated
130func IsGenerated(path string, content []byte) bool {
131	return enry.IsGenerated(path, content)
132}
133
134//export GetColor
135func GetColor(language string) string {
136	return enry.GetColor(language)
137}
138
139func strSliceCopy(result *[]*C.char, slice []string) {
140	for _, str := range slice {
141		*result = append(*result, C.CString(str))
142	}
143}
144
145func main() {}
146