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

Commit 4883934

Browse files
committed
Implemented TSParser.getLanguage()
1 parent dbc6ab6 commit 4883934

File tree

10 files changed

+54
-37
lines changed

10 files changed

+54
-37
lines changed

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,15 @@ public void setLanguage(TSLanguage language) {
2424
Native.setLanguage(pointer, language.pointer);
2525
}
2626

27+
/**
28+
* Get the language for this parser instance.
29+
*
30+
* @return The language instance.
31+
*/
32+
public TSLanguage getLanguage() {
33+
return new TSLanguage(Native.getLanguage(this.pointer));
34+
}
35+
2736
/**
2837
* Parses the given String source. Uses {@link TSInputEncoding#TSInputEncodingUTF8} as the default
2938
* encoding.
@@ -96,9 +105,15 @@ public void close() {
96105

97106
private static class Native {
98107
public static native long newParser();
108+
99109
public static native void delete(long parser);
110+
100111
public static native void setLanguage(long parser, long language);
112+
113+
public static native long getLanguage(long parser);
114+
101115
public static native long parseBytes(long parser, byte[] source, int length, int encoding);
116+
102117
public static native long incrementalParseBytes(
103118
long parser, long old_tree, byte[] source, int length, int encoding);
104119
}
352 Bytes
Binary file not shown.
320 Bytes
Binary file not shown.
320 Bytes
Binary file not shown.
352 Bytes
Binary file not shown.

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public void testCodeEditor() throws Throwable {
3131
final long start = System.currentTimeMillis();
3232
try (TSParser parser = new TSParser()) {
3333
parser.setLanguage(TSLanguages.java());
34+
assertThat(parser.getLanguage().pointer).isEqualTo(TSLanguages.java().pointer);
3435
try (var tree =
3536
parser.parseString(
3637
readString(Paths.get("./src/test/resources/CodeEditor.java.txt")),

lib/com_itsaky_androidide_treesitter_TSParser_Native.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/com_itsaky_androidide_treesitter_TreeSitter.h

Lines changed: 0 additions & 21 deletions
This file was deleted.

lib/ts_node.cc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#include "com_itsaky_androidide_treesitter_TreeSitter.h"
21
#include "com_itsaky_androidide_treesitter_TSNode.h"
32
#include "ts_utils.h"
43

lib/ts_parser.cc

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,38 +2,53 @@
22
#include "ts_utils.h"
33

44
JNIEXPORT jlong JNICALL
5-
Java_com_itsaky_androidide_treesitter_TSParser_00024Native_newParser(JNIEnv* env, jclass self) {
5+
Java_com_itsaky_androidide_treesitter_TSParser_00024Native_newParser(
6+
JNIEnv* env, jclass self) {
67
return (jlong)ts_parser_new();
78
}
89

9-
JNIEXPORT void JNICALL Java_com_itsaky_androidide_treesitter_TSParser_00024Native_delete(
10-
JNIEnv* env, jclass self, jlong parser) {
10+
JNIEXPORT void JNICALL
11+
Java_com_itsaky_androidide_treesitter_TSParser_00024Native_delete(
12+
JNIEnv* env, jclass self, jlong parser) {
1113
ts_parser_delete((TSParser*)parser);
1214
}
1315

14-
JNIEXPORT void JNICALL Java_com_itsaky_androidide_treesitter_TSParser_00024Native_setLanguage(
15-
JNIEnv* env, jclass self, jlong parser, jlong language) {
16+
JNIEXPORT void JNICALL
17+
Java_com_itsaky_androidide_treesitter_TSParser_00024Native_setLanguage(
18+
JNIEnv* env, jclass self, jlong parser, jlong language) {
1619
ts_parser_set_language((TSParser*)parser, (TSLanguage*)language);
1720
}
1821

19-
JNIEXPORT jlong JNICALL Java_com_itsaky_androidide_treesitter_TSParser_00024Native_parseBytes(
20-
JNIEnv* env, jclass self, jlong parser, jbyteArray source_bytes,
21-
jint length, jint encodingFlag) {
22-
TSInputEncoding encoding = encodingFlag == 0 ? TSInputEncodingUTF8 : TSInputEncodingUTF16;
22+
JNIEXPORT jlong JNICALL
23+
Java_com_itsaky_androidide_treesitter_TSParser_00024Native_getLanguage(
24+
JNIEnv* env, jclass self, jlong parser) {
25+
return (jlong)ts_parser_language((TSParser*)parser);
26+
}
27+
28+
JNIEXPORT jlong JNICALL
29+
Java_com_itsaky_androidide_treesitter_TSParser_00024Native_parseBytes(
30+
JNIEnv* env, jclass self, jlong parser, jbyteArray source_bytes,
31+
jint length, jint encodingFlag) {
32+
TSInputEncoding encoding =
33+
encodingFlag == 0 ? TSInputEncodingUTF8 : TSInputEncodingUTF16;
2334
jbyte* source = env->GetByteArrayElements(source_bytes, NULL);
2435
jlong result = (jlong)ts_parser_parse_string_encoding(
25-
(TSParser*)parser, NULL, reinterpret_cast<const char*>(source), length, encoding);
36+
(TSParser*)parser, NULL, reinterpret_cast<const char*>(source), length,
37+
encoding);
2638
env->ReleaseByteArrayElements(source_bytes, source, JNI_ABORT);
2739
return result;
2840
}
2941

30-
JNIEXPORT jlong JNICALL Java_com_itsaky_androidide_treesitter_TSParser_00024Native_incrementalParseBytes(
31-
JNIEnv* env, jclass self, jlong parser, jlong old_tree, jbyteArray source_bytes,
32-
jint length, jint encodingFlag) {
33-
TSInputEncoding encoding = encodingFlag == 0 ? TSInputEncodingUTF8 : TSInputEncodingUTF16;
42+
JNIEXPORT jlong JNICALL
43+
Java_com_itsaky_androidide_treesitter_TSParser_00024Native_incrementalParseBytes(
44+
JNIEnv* env, jclass self, jlong parser, jlong old_tree,
45+
jbyteArray source_bytes, jint length, jint encodingFlag) {
46+
TSInputEncoding encoding =
47+
encodingFlag == 0 ? TSInputEncodingUTF8 : TSInputEncodingUTF16;
3448
jbyte* source = env->GetByteArrayElements(source_bytes, NULL);
3549
jlong result = (jlong)ts_parser_parse_string_encoding(
36-
(TSParser*)parser, (TSTree*)old_tree, reinterpret_cast<const char*>(source), length, TSInputEncodingUTF16);
50+
(TSParser*)parser, (TSTree*)old_tree,
51+
reinterpret_cast<const char*>(source), length, TSInputEncodingUTF16);
3752
env->ReleaseByteArrayElements(source_bytes, source, JNI_ABORT);
3853
return result;
3954
}

0 commit comments

Comments
 (0)