// IWYU pragma: private, include "nvim/mbyte.h"
#define DEFINE_FUNC_ATTRIBUTES
#include "nvim/func_attr.h"
#undef DEFINE_FUNC_ATTRIBUTES
#ifndef DLLEXPORT
#  ifdef MSWIN
#    define DLLEXPORT __declspec(dllexport)
#  else
#    define DLLEXPORT
#  endif
#endif
DLLEXPORT int enc_canon_props(const char *name) FUNC_ATTR_PURE;
DLLEXPORT int bomb_size(void) FUNC_ATTR_PURE;
DLLEXPORT void remove_bom(char *s);
DLLEXPORT int mb_get_class(const char *p) FUNC_ATTR_PURE;
DLLEXPORT int mb_get_class_tab(const char *p, const uint64_t *const chartab) FUNC_ATTR_PURE;
DLLEXPORT int utf_char2cells(int c);
DLLEXPORT int utf_ptr2cells(const char *p_in);
DLLEXPORT int32_t utf_ptr2CharInfo_impl(uint8_t const *p, uintptr_t const len) FUNC_ATTR_PURE FUNC_ATTR_NONNULL_ALL FUNC_ATTR_WARN_UNUSED_RESULT;
DLLEXPORT int utf_ptr2cells_len(const char *p, int size);
DLLEXPORT size_t mb_string2cells(const char *str);
DLLEXPORT size_t mb_string2cells_len(const char *str, size_t size) FUNC_ATTR_NONNULL_ARG(1);
DLLEXPORT int utf_ptr2char(const char *const p_in) FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL;
DLLEXPORT int mb_ptr2char_adv(const char **const pp);
DLLEXPORT int mb_cptr2char_adv(const char **pp);
DLLEXPORT bool utf_iscomposing_first(int c);
DLLEXPORT bool utf_composinglike(const char *p1, const char *p2, GraphemeState *state) FUNC_ATTR_NONNULL_ARG(1, 2);
DLLEXPORT bool utf_iscomposing(int c1, int c2, GraphemeState *state);
DLLEXPORT schar_T utfc_ptr2schar(const char *p, int *firstc) FUNC_ATTR_NONNULL_ALL;
DLLEXPORT schar_T utfc_ptrlen2schar(const char *p, int len, int *firstc) FUNC_ATTR_NONNULL_ALL;
DLLEXPORT int utf_ptr2len(const char *const p_in) FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL;
DLLEXPORT int utf_byte2len(int b);
DLLEXPORT int utf_ptr2len_len(const char *p, int size);
DLLEXPORT int utfc_ptr2len(const char *const p) FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL;
DLLEXPORT int utfc_ptr2len_len(const char *p, int size);
DLLEXPORT int utf_char2len(const int c);
DLLEXPORT int utf_char2bytes(const int c, char *const buf);
DLLEXPORT bool utf_iscomposing_legacy(int c);
DLLEXPORT bool utf_printable(int c) FUNC_ATTR_CONST;
DLLEXPORT bool utf_printable(int c) FUNC_ATTR_CONST;
DLLEXPORT int utf_class(const int c);
DLLEXPORT int utf_class_tab(const int c, const uint64_t *const chartab) FUNC_ATTR_PURE;
DLLEXPORT bool utf_ambiguous_width(const char *p);
DLLEXPORT int utf_fold(int a);
DLLEXPORT int mb_toupper(int a);
DLLEXPORT bool mb_islower(int a);
DLLEXPORT int mb_tolower(int a);
DLLEXPORT bool mb_isupper(int a);
DLLEXPORT bool mb_isalpha(int a) FUNC_ATTR_WARN_UNUSED_RESULT;
DLLEXPORT int utf_strnicmp(const char *s1, const char *s2, size_t n1, size_t n2);
DLLEXPORT int utf8_to_utf16(const char *utf8, int utf8len, wchar_t **utf16) FUNC_ATTR_NONNULL_ALL;
DLLEXPORT int utf16_to_utf8(const wchar_t *utf16, int utf16len, char **utf8) FUNC_ATTR_NONNULL_ALL;
DLLEXPORT void mb_utflen(const char *s, size_t len, size_t *codepoints, size_t *codeunits) FUNC_ATTR_NONNULL_ALL;
DLLEXPORT ssize_t mb_utf_index_to_bytes(const char *s, size_t len, size_t index, bool use_utf16_units) FUNC_ATTR_NONNULL_ALL;
DLLEXPORT int mb_strnicmp(const char *s1, const char *s2, const size_t nn);
DLLEXPORT int mb_stricmp(const char *s1, const char *s2);
DLLEXPORT void show_utf8(void);
DLLEXPORT int utf_head_off(const char *base_in, const char *p_in);
DLLEXPORT StrCharInfo utfc_next_impl(StrCharInfo cur);
DLLEXPORT bool utf_eat_space(int cc) FUNC_ATTR_CONST FUNC_ATTR_WARN_UNUSED_RESULT;
DLLEXPORT bool utf_allow_break_before(int cc) FUNC_ATTR_CONST FUNC_ATTR_WARN_UNUSED_RESULT;
DLLEXPORT bool utf_allow_break_after(int cc) FUNC_ATTR_CONST FUNC_ATTR_WARN_UNUSED_RESULT;
DLLEXPORT bool utf_allow_break(int cc, int ncc) FUNC_ATTR_CONST FUNC_ATTR_WARN_UNUSED_RESULT;
DLLEXPORT void mb_copy_char(const char **const fp, char **const tp);
DLLEXPORT int mb_off_next(const char *base, const char *p);
DLLEXPORT CharBoundsOff utf_cp_bounds_len(char const *base, char const *p_in, int p_len) FUNC_ATTR_PURE FUNC_ATTR_NONNULL_ALL;
DLLEXPORT CharBoundsOff utf_cp_bounds(char const *base, char const *p_in) FUNC_ATTR_PURE FUNC_ATTR_NONNULL_ALL;
DLLEXPORT void utf_find_illegal(void);
DLLEXPORT bool utf_valid_string(const char *s, const char *end);
DLLEXPORT void mb_adjust_cursor(void);
DLLEXPORT void mb_check_adjust_col(void *win_);
DLLEXPORT char *mb_prevptr(char *line, char *p);
DLLEXPORT int mb_charlen(const char *str);
DLLEXPORT int mb_charlen_len(const char *str, int len);
DLLEXPORT const char *mb_unescape(const char **const pp) FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL;
DLLEXPORT char *enc_skip(char *p);
DLLEXPORT char *enc_canonize(char *enc) FUNC_ATTR_NONNULL_RET;
DLLEXPORT char *enc_locale(void);
DLLEXPORT void *my_iconv_open(char *to, char *from);
DLLEXPORT void f_iconv(typval_T *argvars, typval_T *rettv, EvalFuncData fptr);
DLLEXPORT int convert_setup(vimconv_T *vcp, char *from, char *to);
DLLEXPORT int convert_setup_ext(vimconv_T *vcp, char *from, bool from_unicode_is_utf8, char *to, bool to_unicode_is_utf8);
DLLEXPORT char *string_convert(const vimconv_T *const vcp, char *ptr, size_t *lenp);
DLLEXPORT char *string_convert_ext(const vimconv_T *const vcp, char *ptr, size_t *lenp, size_t *unconvlenp);
DLLEXPORT void f_setcellwidths(typval_T *argvars, typval_T *rettv, EvalFuncData fptr);
DLLEXPORT void f_getcellwidths(typval_T *argvars, typval_T *rettv, EvalFuncData fptr);
DLLEXPORT void f_charclass(typval_T *argvars, typval_T *rettv, EvalFuncData fptr);
DLLEXPORT char *get_encoding_name(expand_T *xp FUNC_ATTR_UNUSED, int idx);
DLLEXPORT int mb_strcmp_ic(bool ic, const char *s1, const char *s2) FUNC_ATTR_NONNULL_ALL FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT;
#include "nvim/func_attr.h"
