diff options
| author | Björn Linse <bjorn.linse@gmail.com> | 2019-12-22 13:47:45 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-12-22 13:47:45 +0100 |
| commit | 9e9dcd4bd79cc5ea0fd240bcb242ceea07deabe2 (patch) | |
| tree | b4c06d6b6485f364f502b97d8775546a9fced24f /src/tree_sitter/unicode.h | |
| parent | e1d63c180cc38cec5a8bf3e543bfe18472352da4 (diff) | |
| parent | 440695c29696f261337227e5c419aa1cf313c2dd (diff) | |
| download | rneovim-9e9dcd4bd79cc5ea0fd240bcb242ceea07deabe2.tar.gz rneovim-9e9dcd4bd79cc5ea0fd240bcb242ceea07deabe2.tar.bz2 rneovim-9e9dcd4bd79cc5ea0fd240bcb242ceea07deabe2.zip | |
Merge pull request #11113 from bfredl/tree-sitter-query
tree-sitter step 2: query API and highlighting prototype
Diffstat (limited to 'src/tree_sitter/unicode.h')
| -rw-r--r-- | src/tree_sitter/unicode.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/tree_sitter/unicode.h b/src/tree_sitter/unicode.h new file mode 100644 index 0000000000..2ab51c2a3a --- /dev/null +++ b/src/tree_sitter/unicode.h @@ -0,0 +1,50 @@ +#ifndef TREE_SITTER_UNICODE_H_ +#define TREE_SITTER_UNICODE_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <limits.h> +#include <stdint.h> + +#define U_EXPORT +#define U_EXPORT2 +#include "./unicode/utf8.h" +#include "./unicode/utf16.h" + +static const int32_t TS_DECODE_ERROR = U_SENTINEL; + +// These functions read one unicode code point from the given string, +// returning the number of bytes consumed. +typedef uint32_t (*UnicodeDecodeFunction)( + const uint8_t *string, + uint32_t length, + int32_t *code_point +); + +static inline uint32_t ts_decode_utf8( + const uint8_t *string, + uint32_t length, + int32_t *code_point +) { + uint32_t i = 0; + U8_NEXT(string, i, length, *code_point); + return i; +} + +static inline uint32_t ts_decode_utf16( + const uint8_t *string, + uint32_t length, + int32_t *code_point +) { + uint32_t i = 0; + U16_NEXT(((uint16_t *)string), i, length, *code_point); + return i * 2; +} + +#ifdef __cplusplus +} +#endif + +#endif // TREE_SITTER_UNICODE_H_ |