aboutsummaryrefslogtreecommitdiffstats
path: root/cbinding.go
blob: 78665390546da1ba46b0a1fe23627cea9e5e9867 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/* SPDX-License-Identifier: MIT
 *
 * Copyright (C) 2019-2021 WireGuard LLC. All Rights Reserved.
 */

package syntax

// #include "highlighter.h"
// #include <stdlib.h>
import "C"
import (
	"unsafe"
)

func highlightConfigC(config string) []highlightSpan {
	b := append([]byte(config), 0)
	highlights := C.highlight_config((*C.char)(unsafe.Pointer(&b[0])))
	if highlights == nil {
		return nil
	}
	var ret []highlightSpan
	for i := highlights; i._type != C.HighlightEnd; i = (*C.struct_highlight_span)(unsafe.Add(unsafe.Pointer(i), unsafe.Sizeof(*i))) {
		ret = append(ret, highlightSpan{highlight(i._type), int(i.start), int(i.len)})
	}
	C.free(unsafe.Pointer(highlights))
	return ret
}