Skip to content
This repository was archived by the owner on Oct 18, 2024. It is now read-only.

Commit 1c53e59

Browse files
committed
Implemented TSNode.getSymbol()
1 parent 6f3d511 commit 1c53e59

File tree

8 files changed

+82
-42
lines changed

8 files changed

+82
-42
lines changed

android-tree-sitter/src/main/java/com/itsaky/androidide/treesitter/TSNode.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,13 @@ public String toString() {
183183
*/
184184
public native String getType();
185185

186+
/**
187+
* Get the node's type as a numerical id.
188+
*
189+
* @return The node's type as a numerical id.
190+
*/
191+
public native int getSymbol();
192+
186193
/** Check if the node is null. */
187194
public native boolean isNull();
188195

616 Bytes
Binary file not shown.
544 Bytes
Binary file not shown.
624 Bytes
Binary file not shown.
648 Bytes
Binary file not shown.

android-tree-sitter/src/test/java/com/itsaky/androidide/treesitter/NodeTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ public void testGetChildren() throws UnsupportedEncodingException {
1818
"def foo(bar, baz):\n print(bar)\n print(baz)",
1919
TSInputEncoding.TSInputEncodingUTF16)) {
2020
var root = tree.getRootNode();
21+
var symbol = root.getSymbol();
22+
assertThat(tree.getLanguage().getSymbolName(symbol)).isEqualTo("module");
23+
2124
var start = root.getStartPoint();
2225
assertThat(0).isEqualTo(start.row);
2326
assertThat(0).isEqualTo(start.column);

lib/com_itsaky_androidide_treesitter_TSNode.h

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/ts_node.cc

Lines changed: 64 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,103 +1,125 @@
11
#include "com_itsaky_androidide_treesitter_TSNode.h"
22
#include "ts_utils.h"
33

4-
JNIEXPORT jobject JNICALL Java_com_itsaky_androidide_treesitter_TSNode_getParent(
5-
JNIEnv* env, jobject self) {
4+
JNIEXPORT jobject JNICALL
5+
Java_com_itsaky_androidide_treesitter_TSNode_getParent(JNIEnv* env,
6+
jobject self) {
67
return _marshalNode(env, ts_node_parent(_unmarshalNode(env, self)));
78
}
89

9-
JNIEXPORT jint JNICALL Java_com_itsaky_androidide_treesitter_TSNode_getChildCount(
10-
JNIEnv* env, jobject self) {
10+
JNIEXPORT jint JNICALL
11+
Java_com_itsaky_androidide_treesitter_TSNode_getChildCount(JNIEnv* env,
12+
jobject self) {
1113
return (jint)ts_node_child_count(_unmarshalNode(env, self));
1214
}
1315

14-
JNIEXPORT jint JNICALL Java_com_itsaky_androidide_treesitter_TSNode_getNamedChildCount(
15-
JNIEnv* env, jobject self) {
16+
JNIEXPORT jint JNICALL
17+
Java_com_itsaky_androidide_treesitter_TSNode_getNamedChildCount(JNIEnv* env,
18+
jobject self) {
1619
return (jint)ts_node_named_child_count(_unmarshalNode(env, self));
1720
}
1821

19-
JNIEXPORT jobject JNICALL Java_com_itsaky_androidide_treesitter_TSNode_getChildAt(
20-
JNIEnv* env, jobject self, jint child) {
22+
JNIEXPORT jobject JNICALL
23+
Java_com_itsaky_androidide_treesitter_TSNode_getChildAt(JNIEnv* env,
24+
jobject self,
25+
jint child) {
2126
return _marshalNode(
22-
env, ts_node_child(_unmarshalNode(env, self), (uint32_t)child));
27+
env, ts_node_child(_unmarshalNode(env, self), (uint32_t)child));
2328
}
2429

25-
JNIEXPORT jobject JNICALL Java_com_itsaky_androidide_treesitter_TSNode_getNamedChildAt(
26-
JNIEnv* env, jobject self, jint child) {
30+
JNIEXPORT jobject JNICALL
31+
Java_com_itsaky_androidide_treesitter_TSNode_getNamedChildAt(JNIEnv* env,
32+
jobject self,
33+
jint child) {
2734
return _marshalNode(
28-
env, ts_node_named_child(_unmarshalNode(env, self), (uint32_t)child));
35+
env, ts_node_named_child(_unmarshalNode(env, self), (uint32_t)child));
2936
}
3037

31-
JNIEXPORT jobject JNICALL Java_com_itsaky_androidide_treesitter_TSNode_getChildByFieldName(
32-
JNIEnv* env, jobject self, jbyteArray name, jint length) {
38+
JNIEXPORT jobject JNICALL
39+
Java_com_itsaky_androidide_treesitter_TSNode_getChildByFieldName(
40+
JNIEnv* env, jobject self, jbyteArray name, jint length) {
3341
jbyte* nameStr = env->GetByteArrayElements(name, NULL);
3442
jobject found = _marshalNode(
35-
env, ts_node_child_by_field_name(_unmarshalNode(env, self), reinterpret_cast<const char*>(nameStr), (uint32_t) length));
43+
env, ts_node_child_by_field_name(_unmarshalNode(env, self),
44+
reinterpret_cast<const char*>(nameStr),
45+
(uint32_t)length));
3646
env->ReleaseByteArrayElements(name, nameStr, JNI_ABORT);
3747
return found;
3848
}
3949

40-
JNIEXPORT jstring JNICALL Java_com_itsaky_androidide_treesitter_TSNode_getNodeString(
41-
JNIEnv* env, jobject self) {
50+
JNIEXPORT jstring JNICALL
51+
Java_com_itsaky_androidide_treesitter_TSNode_getNodeString(JNIEnv* env,
52+
jobject self) {
4253
char* nodeString = ts_node_string(_unmarshalNode(env, self));
4354
jstring result = env->NewStringUTF(nodeString);
4455
free(nodeString);
4556
return result;
4657
}
4758

4859
JNIEXPORT jint JNICALL Java_com_itsaky_androidide_treesitter_TSNode_getEndByte(
49-
JNIEnv* env, jobject self) {
60+
JNIEnv* env, jobject self) {
5061
return (jint)ts_node_end_byte(_unmarshalNode(env, self)) / 2;
5162
}
5263

53-
JNIEXPORT jint JNICALL Java_com_itsaky_androidide_treesitter_TSNode_getStartByte(
54-
JNIEnv* env, jobject self) {
64+
JNIEXPORT jint JNICALL
65+
Java_com_itsaky_androidide_treesitter_TSNode_getStartByte(JNIEnv* env,
66+
jobject self) {
5567
return (jint)ts_node_start_byte(_unmarshalNode(env, self)) / 2;
5668
}
5769

58-
JNIEXPORT jobject JNICALL Java_com_itsaky_androidide_treesitter_TSNode_getStartPoint(
59-
JNIEnv* env, jobject self) {
70+
JNIEXPORT jobject JNICALL
71+
Java_com_itsaky_androidide_treesitter_TSNode_getStartPoint(JNIEnv* env,
72+
jobject self) {
6073
return _marshalPoint(env, ts_node_start_point(_unmarshalNode(env, self)));
6174
}
6275

63-
JNIEXPORT jobject JNICALL Java_com_itsaky_androidide_treesitter_TSNode_getEndPoint(
64-
JNIEnv* env, jobject self) {
76+
JNIEXPORT jobject JNICALL
77+
Java_com_itsaky_androidide_treesitter_TSNode_getEndPoint(JNIEnv* env,
78+
jobject self) {
6579
return _marshalPoint(env, ts_node_end_point(_unmarshalNode(env, self)));
6680
}
6781

6882
JNIEXPORT jstring JNICALL Java_com_itsaky_androidide_treesitter_TSNode_getType(
69-
JNIEnv* env, jobject self) {
83+
JNIEnv* env, jobject self) {
7084
const char* type = ts_node_type(_unmarshalNode(env, self));
7185
jstring result = env->NewStringUTF(type);
7286
return result;
7387
}
7488

75-
JNIEXPORT jboolean JNICALL Java_com_itsaky_androidide_treesitter_TSNode_isNull
89+
JNIEXPORT jint JNICALL Java_com_itsaky_androidide_treesitter_TSNode_getSymbol
7690
(JNIEnv* env, jobject self) {
77-
return (jboolean) ts_node_is_null(_unmarshalNode(env, self));
91+
return (jint) ts_node_symbol(_unmarshalNode(env, self));
92+
}
93+
94+
JNIEXPORT jboolean JNICALL
95+
Java_com_itsaky_androidide_treesitter_TSNode_isNull(JNIEnv* env, jobject self) {
96+
return (jboolean)ts_node_is_null(_unmarshalNode(env, self));
7897
}
7998

80-
JNIEXPORT jboolean JNICALL Java_com_itsaky_androidide_treesitter_TSNode_isNamed
81-
(JNIEnv* env, jobject self) {
82-
return (jboolean) ts_node_is_named(_unmarshalNode(env, self));
99+
JNIEXPORT jboolean JNICALL Java_com_itsaky_androidide_treesitter_TSNode_isNamed(
100+
JNIEnv* env, jobject self) {
101+
return (jboolean)ts_node_is_named(_unmarshalNode(env, self));
83102
}
84103

85-
JNIEXPORT jboolean JNICALL Java_com_itsaky_androidide_treesitter_TSNode_isMissing
86-
(JNIEnv* env, jobject self) {
87-
return (jboolean) ts_node_is_missing(_unmarshalNode(env, self));
104+
JNIEXPORT jboolean JNICALL
105+
Java_com_itsaky_androidide_treesitter_TSNode_isMissing(JNIEnv* env,
106+
jobject self) {
107+
return (jboolean)ts_node_is_missing(_unmarshalNode(env, self));
88108
}
89109

90-
JNIEXPORT jboolean JNICALL Java_com_itsaky_androidide_treesitter_TSNode_isExtra
91-
(JNIEnv* env, jobject self) {
92-
return (jboolean) ts_node_is_extra(_unmarshalNode(env, self));
110+
JNIEXPORT jboolean JNICALL Java_com_itsaky_androidide_treesitter_TSNode_isExtra(
111+
JNIEnv* env, jobject self) {
112+
return (jboolean)ts_node_is_extra(_unmarshalNode(env, self));
93113
}
94114

95-
JNIEXPORT jboolean JNICALL Java_com_itsaky_androidide_treesitter_TSNode_hasChanges
96-
(JNIEnv* env, jobject self) {
97-
return (jboolean) ts_node_has_changes(_unmarshalNode(env, self));
115+
JNIEXPORT jboolean JNICALL
116+
Java_com_itsaky_androidide_treesitter_TSNode_hasChanges(JNIEnv* env,
117+
jobject self) {
118+
return (jboolean)ts_node_has_changes(_unmarshalNode(env, self));
98119
}
99120

100-
JNIEXPORT jboolean JNICALL Java_com_itsaky_androidide_treesitter_TSNode_hasErrors
101-
(JNIEnv* env, jobject self) {
102-
return (jboolean) ts_node_has_error(_unmarshalNode(env, self));
121+
JNIEXPORT jboolean JNICALL
122+
Java_com_itsaky_androidide_treesitter_TSNode_hasErrors(JNIEnv* env,
123+
jobject self) {
124+
return (jboolean)ts_node_has_error(_unmarshalNode(env, self));
103125
}

0 commit comments

Comments
 (0)