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/bits.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/bits.h')
| -rw-r--r-- | src/tree_sitter/bits.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/tree_sitter/bits.h b/src/tree_sitter/bits.h new file mode 100644 index 0000000000..3bec455dd1 --- /dev/null +++ b/src/tree_sitter/bits.h @@ -0,0 +1,29 @@ +#ifndef TREE_SITTER_BITS_H_ +#define TREE_SITTER_BITS_H_ + +#include <stdint.h> + +static inline uint32_t bitmask_for_index(uint16_t id) { + return (1u << (31 - id)); +} + +#ifdef _WIN32 + +#include <intrin.h> + +static inline uint32_t count_leading_zeros(uint32_t x) { + if (x == 0) return 32; + uint32_t result; + _BitScanReverse(&result, x); + return 31 - result; +} + +#else + +static inline uint32_t count_leading_zeros(uint32_t x) { + if (x == 0) return 32; + return __builtin_clz(x); +} + +#endif +#endif // TREE_SITTER_BITS_H_ |