2018-05-10 22:22:37 -07:00
|
|
|
#ifndef RUNTIME_TREE_H_
|
|
|
|
|
#define RUNTIME_TREE_H_
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
2018-05-29 16:00:32 -07:00
|
|
|
typedef struct {
|
|
|
|
|
const Subtree *child;
|
|
|
|
|
const Subtree *parent;
|
|
|
|
|
Length position;
|
|
|
|
|
TSSymbol alias_symbol;
|
|
|
|
|
} ParentCacheEntry;
|
|
|
|
|
|
2018-05-10 22:22:37 -07:00
|
|
|
struct TSTree {
|
2018-09-17 13:12:13 -07:00
|
|
|
Subtree root;
|
2018-05-10 22:22:37 -07:00
|
|
|
const TSLanguage *language;
|
2018-05-29 16:00:32 -07:00
|
|
|
ParentCacheEntry *parent_cache;
|
|
|
|
|
uint32_t parent_cache_start;
|
|
|
|
|
uint32_t parent_cache_size;
|
2018-05-10 22:22:37 -07:00
|
|
|
};
|
|
|
|
|
|
2018-09-17 13:12:13 -07:00
|
|
|
TSTree *ts_tree_new(Subtree root, const TSLanguage *language);
|
2018-05-16 15:44:04 -07:00
|
|
|
TSNode ts_node_new(const TSTree *, const Subtree *, Length, TSSymbol);
|
2018-05-29 16:00:32 -07:00
|
|
|
TSNode ts_tree_get_cached_parent(const TSTree *, const TSNode *);
|
|
|
|
|
void ts_tree_set_cached_parent(const TSTree *, const TSNode *, const TSNode *);
|
2018-05-10 22:22:37 -07:00
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endif // RUNTIME_TREE_H_
|