diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2019-09-28 18:35:02 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-28 18:35:02 +0200 |
commit | e933426299b44db6715f6f61ab76aee57478110e (patch) | |
tree | ffca71781f4e06460fa9b98be68cb02a23d5e0bd /src/tree_sitter/alloc.h | |
parent | 0d9a3c86a1c7143187398e6cb6005ed06a5e2fde (diff) | |
parent | 9fa850991dbe8984996afdc149b5b32dc248197e (diff) | |
download | rneovim-e933426299b44db6715f6f61ab76aee57478110e.tar.gz rneovim-e933426299b44db6715f6f61ab76aee57478110e.tar.bz2 rneovim-e933426299b44db6715f6f61ab76aee57478110e.zip |
Merge pull request #10124 from bfredl/tree-sitter-api
Tree-sitter step 1: vendor runtime lib + add lua API
Diffstat (limited to 'src/tree_sitter/alloc.h')
-rw-r--r-- | src/tree_sitter/alloc.h | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/src/tree_sitter/alloc.h b/src/tree_sitter/alloc.h new file mode 100644 index 0000000000..2229995bd1 --- /dev/null +++ b/src/tree_sitter/alloc.h @@ -0,0 +1,94 @@ +#ifndef TREE_SITTER_ALLOC_H_ +#define TREE_SITTER_ALLOC_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdlib.h> +#include <stdbool.h> +#include <stdio.h> + +#include "nvim/memory.h" + +#if 1 + +static inline bool ts_toggle_allocation_recording(bool value) { + return false; +} + +#define ts_malloc xmalloc +#define ts_calloc xcalloc +#define ts_realloc xrealloc +#define ts_free xfree + +#elif defined(TREE_SITTER_TEST) + +void *ts_record_malloc(size_t); +void *ts_record_calloc(size_t, size_t); +void *ts_record_realloc(void *, size_t); +void ts_record_free(void *); +bool ts_toggle_allocation_recording(bool); + +static inline void *ts_malloc(size_t size) { + return ts_record_malloc(size); +} + +static inline void *ts_calloc(size_t count, size_t size) { + return ts_record_calloc(count, size); +} + +static inline void *ts_realloc(void *buffer, size_t size) { + return ts_record_realloc(buffer, size); +} + +static inline void ts_free(void *buffer) { + ts_record_free(buffer); +} + +#else + +#include <stdlib.h> + +static inline bool ts_toggle_allocation_recording(bool value) { + return false; +} + +static inline void *ts_malloc(size_t size) { + void *result = malloc(size); + if (size > 0 && !result) { + fprintf(stderr, "tree-sitter failed to allocate %lu bytes", size); + exit(1); + } + return result; +} + +static inline void *ts_calloc(size_t count, size_t size) { + void *result = calloc(count, size); + if (count > 0 && !result) { + fprintf(stderr, "tree-sitter failed to allocate %lu bytes", count * size); + exit(1); + } + return result; +} + +static inline void *ts_realloc(void *buffer, size_t size) { + void *result = realloc(buffer, size); + if (size > 0 && !result) { + fprintf(stderr, "tree-sitter failed to reallocate %lu bytes", size); + exit(1); + } + return result; +} + +static inline void ts_free(void *buffer) { + free(buffer); +} + +#endif + +#ifdef __cplusplus +} +#endif + +#endif // TREE_SITTER_ALLOC_H_ |