changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate lisp/ffi/tree-sitter/alien.c

changeset 696: 38e9c3be2392
parent: dda17d7dba4f
child: 08621be7e780
author: Richard Westhaver <ellis@rwest.io>
date: Fri, 04 Oct 2024 21:11:52 -0400
permissions: -rw-r--r--
description: prep for adding zdict wrapper, change default control stack size of inferior-lisp to 8M
412
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
1
 //! tree-sitter/alien.c --- Tree-sitter C wrapper
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
2
 
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
3
 // based on https://github.com/death/cl-tree-sitter
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
4
 
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
5
 // it's annoying that we need this, I thought we could get away
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
6
 // without it. Alas, SB-ALIEN is also unable to fully interoperate
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
7
 // with the types defined in api.h, so we need to manually create
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
8
 // pointer type definitions for them.
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
9
 
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
10
 // build with:
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
11
 /*
696
38e9c3be2392 prep for adding zdict wrapper, change default control stack size of inferior-lisp to 8M
Richard Westhaver <ellis@rwest.io>
parents: 526
diff changeset
12
   cc -g -O2 -Wall -Wno-unused-value -ltree-sitter -shared alien.c -o /usr/local/lib/libtree-sitter-alien.so
412
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
13
 */
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
14
 
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
15
 /// Code:
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
16
 #include <stdlib.h>
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
17
 
696
38e9c3be2392 prep for adding zdict wrapper, change default control stack size of inferior-lisp to 8M
Richard Westhaver <ellis@rwest.io>
parents: 526
diff changeset
18
 #include "alien.h"
412
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
19
 
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
20
 TSNode *ts_tree_root_node_pointer(const TSTree *self) {
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
21
     TSNode *node = malloc(sizeof(TSNode));
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
22
 
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
23
     if (node) {
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
24
         *node = ts_tree_root_node(self);
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
25
     }
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
26
 
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
27
     return node;
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
28
 }
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
29
 
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
30
 TSTreeCursor *ts_tree_cursor_new_pointer(TSNode *node) {
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
31
     TSTreeCursor *cursor = malloc(sizeof(TSTreeCursor));
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
32
 
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
33
     if (cursor) {
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
34
         *cursor = ts_tree_cursor_new(*node);
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
35
     }
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
36
 
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
37
     return cursor;
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
38
 }
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
39
 
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
40
 TSNode *ts_tree_cursor_current_node_pointer(const TSTreeCursor *cursor) {
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
41
     TSNode *return_node = malloc(sizeof(TSNode));
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
42
 
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
43
     if (return_node) {
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
44
         *return_node = ts_tree_cursor_current_node(cursor);
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
45
     }
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
46
 
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
47
     return return_node;
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
48
 }
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
49
 
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
50
 int ts_node_is_named_pointer(TSNode *node) {
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
51
     return ts_node_is_named(*node);
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
52
 }
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
53
 
526
dda17d7dba4f alien.c fix
Richard Westhaver <ellis@rwest.io>
parents: 523
diff changeset
54
 TSPoint ts_node_start_point_pointer(TSNode *node) {
412
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
55
     return ts_node_start_point(*node);
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
56
 }
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
57
 
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
58
 
526
dda17d7dba4f alien.c fix
Richard Westhaver <ellis@rwest.io>
parents: 523
diff changeset
59
 TSPoint ts_node_end_point_pointer(TSNode *node) {
412
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
60
     return ts_node_end_point(*node);
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
61
 }
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
62
 
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
63
 const char *ts_node_type_pointer(TSNode *node) {
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
64
     return ts_node_type(*node);
0aabe04c7625 add back tree-sitter wrappers
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
65
 }