summaryrefslogtreecommitdiff
path: root/vendor/github.com/mitjafelicijan/go-tree-sitter/tree_cursor.h
diff options
context:
space:
mode:
authorMitja Felicijan <mitja.felicijan@gmail.com>2026-01-21 20:22:09 +0100
committerMitja Felicijan <mitja.felicijan@gmail.com>2026-01-21 20:22:09 +0100
commit5a8dbc6347b3541e84fe669b22c17ad3b715e258 (patch)
treeb148c450939688caaaeb4adac6f2faa1eaffe649 /vendor/github.com/mitjafelicijan/go-tree-sitter/tree_cursor.h
downloadqwe-editor-5a8dbc6347b3541e84fe669b22c17ad3b715e258.tar.gz
Engage!
Diffstat (limited to 'vendor/github.com/mitjafelicijan/go-tree-sitter/tree_cursor.h')
-rw-r--r--vendor/github.com/mitjafelicijan/go-tree-sitter/tree_cursor.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/vendor/github.com/mitjafelicijan/go-tree-sitter/tree_cursor.h b/vendor/github.com/mitjafelicijan/go-tree-sitter/tree_cursor.h
new file mode 100644
index 0000000..96a386d
--- /dev/null
+++ b/vendor/github.com/mitjafelicijan/go-tree-sitter/tree_cursor.h
@@ -0,0 +1,48 @@
+#ifndef TREE_SITTER_TREE_CURSOR_H_
+#define TREE_SITTER_TREE_CURSOR_H_
+
+#include "./subtree.h"
+
+typedef struct {
+ const Subtree *subtree;
+ Length position;
+ uint32_t child_index;
+ uint32_t structural_child_index;
+ uint32_t descendant_index;
+} TreeCursorEntry;
+
+typedef struct {
+ const TSTree *tree;
+ Array(TreeCursorEntry) stack;
+ TSSymbol root_alias_symbol;
+} TreeCursor;
+
+typedef enum {
+ TreeCursorStepNone,
+ TreeCursorStepHidden,
+ TreeCursorStepVisible,
+} TreeCursorStep;
+
+void ts_tree_cursor_init(TreeCursor *, TSNode);
+void ts_tree_cursor_current_status(
+ const TSTreeCursor *,
+ TSFieldId *,
+ bool *,
+ bool *,
+ bool *,
+ TSSymbol *,
+ unsigned *
+);
+
+TreeCursorStep ts_tree_cursor_goto_first_child_internal(TSTreeCursor *);
+TreeCursorStep ts_tree_cursor_goto_next_sibling_internal(TSTreeCursor *);
+
+static inline Subtree ts_tree_cursor_current_subtree(const TSTreeCursor *_self) {
+ const TreeCursor *self = (const TreeCursor *)_self;
+ TreeCursorEntry *last_entry = array_back(&self->stack);
+ return *last_entry->subtree;
+}
+
+TSNode ts_tree_cursor_parent_node(const TSTreeCursor *);
+
+#endif // TREE_SITTER_TREE_CURSOR_H_