File: //home/ubuntu/neovim/build/src/nvim/auto/eval.c.i
# 1 "/home/ubuntu/neovim/src/nvim/eval.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "/home/ubuntu/neovim/src/nvim/eval.c"
# 1 "/usr/include/assert.h" 1 3 4
# 35 "/usr/include/assert.h" 3 4
# 1 "/usr/include/features.h" 1 3 4
# 461 "/usr/include/features.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 1 3 4
# 452 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 453 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/long-double.h" 1 3 4
# 454 "/usr/include/aarch64-linux-gnu/sys/cdefs.h" 2 3 4
# 462 "/usr/include/features.h" 2 3 4
# 485 "/usr/include/features.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/gnu/stubs.h" 1 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 6 "/usr/include/aarch64-linux-gnu/gnu/stubs.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/gnu/stubs-lp64.h" 1 3 4
# 9 "/usr/include/aarch64-linux-gnu/gnu/stubs.h" 2 3 4
# 486 "/usr/include/features.h" 2 3 4
# 36 "/usr/include/assert.h" 2 3 4
# 66 "/usr/include/assert.h" 3 4
# 69 "/usr/include/assert.h" 3 4
extern void __assert_fail (const char *__assertion, const char *__file,
unsigned int __line, const char *__function)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));
extern void __assert_perror_fail (int __errnum, const char *__file,
unsigned int __line, const char *__function)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));
extern void __assert (const char *__assertion, const char *__file, int __line)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));
# 4 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/usr/include/ctype.h" 1 3 4
# 26 "/usr/include/ctype.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/types.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 28 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/timesize.h" 1 3 4
# 19 "/usr/include/aarch64-linux-gnu/bits/timesize.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 20 "/usr/include/aarch64-linux-gnu/bits/timesize.h" 2 3 4
# 29 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4
typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;
typedef signed long int __int64_t;
typedef unsigned long int __uint64_t;
typedef __int8_t __int_least8_t;
typedef __uint8_t __uint_least8_t;
typedef __int16_t __int_least16_t;
typedef __uint16_t __uint_least16_t;
typedef __int32_t __int_least32_t;
typedef __uint32_t __uint_least32_t;
typedef __int64_t __int_least64_t;
typedef __uint64_t __uint_least64_t;
typedef long int __quad_t;
typedef unsigned long int __u_quad_t;
typedef long int __intmax_t;
typedef unsigned long int __uintmax_t;
# 141 "/usr/include/aarch64-linux-gnu/bits/types.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/typesizes.h" 1 3 4
# 142 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/time64.h" 1 3 4
# 143 "/usr/include/aarch64-linux-gnu/bits/types.h" 2 3 4
typedef unsigned long int __dev_t;
typedef unsigned int __uid_t;
typedef unsigned int __gid_t;
typedef unsigned long int __ino_t;
typedef unsigned long int __ino64_t;
typedef unsigned int __mode_t;
typedef unsigned int __nlink_t;
typedef long int __off_t;
typedef long int __off64_t;
typedef int __pid_t;
typedef struct { int __val[2]; } __fsid_t;
typedef long int __clock_t;
typedef unsigned long int __rlim_t;
typedef unsigned long int __rlim64_t;
typedef unsigned int __id_t;
typedef long int __time_t;
typedef unsigned int __useconds_t;
typedef long int __suseconds_t;
typedef int __daddr_t;
typedef int __key_t;
typedef int __clockid_t;
typedef void * __timer_t;
typedef int __blksize_t;
typedef long int __blkcnt_t;
typedef long int __blkcnt64_t;
typedef unsigned long int __fsblkcnt_t;
typedef unsigned long int __fsblkcnt64_t;
typedef unsigned long int __fsfilcnt_t;
typedef unsigned long int __fsfilcnt64_t;
typedef long int __fsword_t;
typedef long int __ssize_t;
typedef long int __syscall_slong_t;
typedef unsigned long int __syscall_ulong_t;
typedef __off64_t __loff_t;
typedef char *__caddr_t;
typedef long int __intptr_t;
typedef unsigned int __socklen_t;
typedef int __sig_atomic_t;
# 27 "/usr/include/ctype.h" 2 3 4
# 39 "/usr/include/ctype.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/endian.h" 1 3 4
# 35 "/usr/include/aarch64-linux-gnu/bits/endian.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/endianness.h" 1 3 4
# 36 "/usr/include/aarch64-linux-gnu/bits/endian.h" 2 3 4
# 40 "/usr/include/ctype.h" 2 3 4
enum
{
_ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),
_ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),
_ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),
_ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),
_ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),
_ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),
_ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),
_ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),
_ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),
_IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),
_ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),
_ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))
};
# 79 "/usr/include/ctype.h" 3 4
extern const unsigned short int **__ctype_b_loc (void)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern const __int32_t **__ctype_tolower_loc (void)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern const __int32_t **__ctype_toupper_loc (void)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
# 108 "/usr/include/ctype.h" 3 4
extern int isalnum (int) __attribute__ ((__nothrow__ , __leaf__));
extern int isalpha (int) __attribute__ ((__nothrow__ , __leaf__));
extern int iscntrl (int) __attribute__ ((__nothrow__ , __leaf__));
extern int isdigit (int) __attribute__ ((__nothrow__ , __leaf__));
extern int islower (int) __attribute__ ((__nothrow__ , __leaf__));
extern int isgraph (int) __attribute__ ((__nothrow__ , __leaf__));
extern int isprint (int) __attribute__ ((__nothrow__ , __leaf__));
extern int ispunct (int) __attribute__ ((__nothrow__ , __leaf__));
extern int isspace (int) __attribute__ ((__nothrow__ , __leaf__));
extern int isupper (int) __attribute__ ((__nothrow__ , __leaf__));
extern int isxdigit (int) __attribute__ ((__nothrow__ , __leaf__));
extern int tolower (int __c) __attribute__ ((__nothrow__ , __leaf__));
extern int toupper (int __c) __attribute__ ((__nothrow__ , __leaf__));
extern int isblank (int) __attribute__ ((__nothrow__ , __leaf__));
extern int isctype (int __c, int __mask) __attribute__ ((__nothrow__ , __leaf__));
extern int isascii (int __c) __attribute__ ((__nothrow__ , __leaf__));
extern int toascii (int __c) __attribute__ ((__nothrow__ , __leaf__));
extern int _toupper (int) __attribute__ ((__nothrow__ , __leaf__));
extern int _tolower (int) __attribute__ ((__nothrow__ , __leaf__));
# 237 "/usr/include/ctype.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/locale_t.h" 1 3 4
# 22 "/usr/include/aarch64-linux-gnu/bits/types/locale_t.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/__locale_t.h" 1 3 4
# 28 "/usr/include/aarch64-linux-gnu/bits/types/__locale_t.h" 3 4
struct __locale_struct
{
struct __locale_data *__locales[13];
const unsigned short int *__ctype_b;
const int *__ctype_tolower;
const int *__ctype_toupper;
const char *__names[13];
};
typedef struct __locale_struct *__locale_t;
# 23 "/usr/include/aarch64-linux-gnu/bits/types/locale_t.h" 2 3 4
typedef __locale_t locale_t;
# 238 "/usr/include/ctype.h" 2 3 4
# 251 "/usr/include/ctype.h" 3 4
extern int isalnum_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int isalpha_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int iscntrl_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int isdigit_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int islower_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int isgraph_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int isprint_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int ispunct_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int isspace_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int isupper_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int isxdigit_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int isblank_l (int, locale_t) __attribute__ ((__nothrow__ , __leaf__));
extern int __tolower_l (int __c, locale_t __l) __attribute__ ((__nothrow__ , __leaf__));
extern int tolower_l (int __c, locale_t __l) __attribute__ ((__nothrow__ , __leaf__));
extern int __toupper_l (int __c, locale_t __l) __attribute__ ((__nothrow__ , __leaf__));
extern int toupper_l (int __c, locale_t __l) __attribute__ ((__nothrow__ , __leaf__));
# 327 "/usr/include/ctype.h" 3 4
# 5 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/usr/include/math.h" 1 3 4
# 27 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4
# 28 "/usr/include/math.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/math-vector.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/math-vector.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/libm-simd-decl-stubs.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/math-vector.h" 2 3 4
# 41 "/usr/include/math.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/long-double.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 2 3 4
# 95 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/long-double.h" 1 3 4
# 25 "/usr/include/aarch64-linux-gnu/bits/floatn-common.h" 2 3 4
# 96 "/usr/include/aarch64-linux-gnu/bits/floatn.h" 2 3 4
# 44 "/usr/include/math.h" 2 3 4
# 138 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/flt-eval-method.h" 1 3 4
# 139 "/usr/include/math.h" 2 3 4
# 149 "/usr/include/math.h" 3 4
typedef float float_t;
typedef double double_t;
# 190 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/fp-logb.h" 1 3 4
# 191 "/usr/include/math.h" 2 3 4
# 233 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/fp-fast.h" 1 3 4
# 234 "/usr/include/math.h" 2 3 4
enum
{
FP_INT_UPWARD =
0,
FP_INT_DOWNWARD =
1,
FP_INT_TOWARDZERO =
2,
FP_INT_TONEARESTFROMZERO =
3,
FP_INT_TONEAREST =
4,
};
# 289 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 1 3 4
# 21 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 3 4
extern int __fpclassify (double __value) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__const__));
extern int __signbit (double __value) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__const__));
extern int __isinf (double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int __finite (double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int __isnan (double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int __iseqsig (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__));
extern int __issignaling (double __value) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__const__));
# 290 "/usr/include/math.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4
# 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern double acos (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __acos (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double asin (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __asin (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double atan (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __atan (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double atan2 (double __y, double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __atan2 (double __y, double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double cos (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __cos (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double sin (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __sin (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double tan (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __tan (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double cosh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __cosh (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double sinh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __sinh (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double tanh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __tanh (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern void sincos (double __x, double *__sinx, double *__cosx) __attribute__ ((__nothrow__ , __leaf__)); extern void __sincos (double __x, double *__sinx, double *__cosx) __attribute__ ((__nothrow__ , __leaf__))
;
extern double acosh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __acosh (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double asinh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __asinh (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double atanh (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __atanh (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double exp (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __exp (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double frexp (double __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern double __frexp (double __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
extern double ldexp (double __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern double __ldexp (double __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__));
extern double log (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __log (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double log10 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __log10 (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double modf (double __x, double *__iptr) __attribute__ ((__nothrow__ , __leaf__)); extern double __modf (double __x, double *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern double exp10 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __exp10 (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double expm1 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __expm1 (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double log1p (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __log1p (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double logb (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __logb (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double exp2 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __exp2 (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double log2 (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __log2 (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double pow (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __pow (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__));
extern double sqrt (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __sqrt (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double hypot (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __hypot (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__));
extern double cbrt (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __cbrt (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double ceil (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __ceil (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double fabs (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __fabs (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double floor (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __floor (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double fmod (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __fmod (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__));
# 177 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern int isinf (double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int finite (double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double drem (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __drem (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__));
extern double significand (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __significand (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double copysign (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __copysign (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double nan (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern double __nan (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
# 211 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern int isnan (double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double j0 (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __j0 (double) __attribute__ ((__nothrow__ , __leaf__));
extern double j1 (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __j1 (double) __attribute__ ((__nothrow__ , __leaf__));
extern double jn (int, double) __attribute__ ((__nothrow__ , __leaf__)); extern double __jn (int, double) __attribute__ ((__nothrow__ , __leaf__));
extern double y0 (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __y0 (double) __attribute__ ((__nothrow__ , __leaf__));
extern double y1 (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __y1 (double) __attribute__ ((__nothrow__ , __leaf__));
extern double yn (int, double) __attribute__ ((__nothrow__ , __leaf__)); extern double __yn (int, double) __attribute__ ((__nothrow__ , __leaf__));
extern double erf (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __erf (double) __attribute__ ((__nothrow__ , __leaf__));
extern double erfc (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __erfc (double) __attribute__ ((__nothrow__ , __leaf__));
extern double lgamma (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __lgamma (double) __attribute__ ((__nothrow__ , __leaf__));
extern double tgamma (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __tgamma (double) __attribute__ ((__nothrow__ , __leaf__));
extern double gamma (double) __attribute__ ((__nothrow__ , __leaf__)); extern double __gamma (double) __attribute__ ((__nothrow__ , __leaf__));
extern double lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern double __lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
extern double rint (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __rint (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double nextafter (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __nextafter (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__));
extern double nexttoward (double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __nexttoward (double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern double nextdown (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __nextdown (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double nextup (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __nextup (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double remainder (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __remainder (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__));
extern double scalbn (double __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern double __scalbn (double __x, int __n) __attribute__ ((__nothrow__ , __leaf__));
extern int ilogb (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern int __ilogb (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int llogb (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __llogb (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double scalbln (double __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern double __scalbln (double __x, long int __n) __attribute__ ((__nothrow__ , __leaf__));
extern double nearbyint (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern double __nearbyint (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double round (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __round (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double trunc (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __trunc (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern double __remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__));
extern long int lrint (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lrint (double __x) __attribute__ ((__nothrow__ , __leaf__));
__extension__
extern long long int llrint (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llrint (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int lround (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lround (double __x) __attribute__ ((__nothrow__ , __leaf__));
__extension__
extern long long int llround (double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llround (double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double fdim (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)); extern double __fdim (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__));
extern double fmax (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __fmax (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double fmin (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __fmin (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double fma (double __x, double __y, double __z) __attribute__ ((__nothrow__ , __leaf__)); extern double __fma (double __x, double __y, double __z) __attribute__ ((__nothrow__ , __leaf__));
extern double roundeven (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __roundeven (double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern __intmax_t fromfp (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfp (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __uintmax_t ufromfp (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfp (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __intmax_t fromfpx (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpx (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __uintmax_t ufromfpx (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpx (double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern double fmaxmag (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __fmaxmag (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double fminmag (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern double __fminmag (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int canonicalize (double *__cx, const double *__x) __attribute__ ((__nothrow__ , __leaf__));
extern int totalorder (const double *__x, const double *__y) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__pure__));
extern int totalordermag (const double *__x, const double *__y) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__pure__));
extern double getpayload (const double *__x) __attribute__ ((__nothrow__ , __leaf__)); extern double __getpayload (const double *__x) __attribute__ ((__nothrow__ , __leaf__));
extern int setpayload (double *__x, double __payload) __attribute__ ((__nothrow__ , __leaf__));
extern int setpayloadsig (double *__x, double __payload) __attribute__ ((__nothrow__ , __leaf__));
extern double scalb (double __x, double __n) __attribute__ ((__nothrow__ , __leaf__)); extern double __scalb (double __x, double __n) __attribute__ ((__nothrow__ , __leaf__));
# 291 "/usr/include/math.h" 2 3 4
# 306 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 1 3 4
# 21 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 3 4
extern int __fpclassifyf (float __value) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__const__));
extern int __signbitf (float __value) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__const__));
extern int __isinff (float __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int __finitef (float __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int __isnanf (float __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int __iseqsigf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__));
extern int __issignalingf (float __value) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__const__));
# 307 "/usr/include/math.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4
# 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern float acosf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __acosf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float asinf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __asinf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float atanf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __atanf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float atan2f (float __y, float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __atan2f (float __y, float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float cosf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __cosf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float sinf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __sinf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float tanf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __tanf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float coshf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __coshf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float sinhf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __sinhf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float tanhf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __tanhf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern void sincosf (float __x, float *__sinx, float *__cosx) __attribute__ ((__nothrow__ , __leaf__)); extern void __sincosf (float __x, float *__sinx, float *__cosx) __attribute__ ((__nothrow__ , __leaf__))
;
extern float acoshf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __acoshf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float asinhf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __asinhf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float atanhf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __atanhf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float expf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __expf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern float __frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
extern float ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern float __ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__));
extern float logf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __logf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float log10f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __log10f (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float modff (float __x, float *__iptr) __attribute__ ((__nothrow__ , __leaf__)); extern float __modff (float __x, float *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern float exp10f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __exp10f (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float expm1f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __expm1f (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float log1pf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __log1pf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float logbf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __logbf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float exp2f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __exp2f (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float log2f (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __log2f (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float powf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __powf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__));
extern float sqrtf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __sqrtf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float hypotf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __hypotf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__));
extern float cbrtf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __cbrtf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float ceilf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __ceilf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float fabsf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __fabsf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float floorf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __floorf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float fmodf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __fmodf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__));
# 177 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern int isinff (float __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int finitef (float __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float dremf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __dremf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__));
extern float significandf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __significandf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float copysignf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float nanf (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern float __nanf (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
# 211 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern int isnanf (float __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float j0f (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __j0f (float) __attribute__ ((__nothrow__ , __leaf__));
extern float j1f (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __j1f (float) __attribute__ ((__nothrow__ , __leaf__));
extern float jnf (int, float) __attribute__ ((__nothrow__ , __leaf__)); extern float __jnf (int, float) __attribute__ ((__nothrow__ , __leaf__));
extern float y0f (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __y0f (float) __attribute__ ((__nothrow__ , __leaf__));
extern float y1f (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __y1f (float) __attribute__ ((__nothrow__ , __leaf__));
extern float ynf (int, float) __attribute__ ((__nothrow__ , __leaf__)); extern float __ynf (int, float) __attribute__ ((__nothrow__ , __leaf__));
extern float erff (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __erff (float) __attribute__ ((__nothrow__ , __leaf__));
extern float erfcf (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __erfcf (float) __attribute__ ((__nothrow__ , __leaf__));
extern float lgammaf (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __lgammaf (float) __attribute__ ((__nothrow__ , __leaf__));
extern float tgammaf (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __tgammaf (float) __attribute__ ((__nothrow__ , __leaf__));
extern float gammaf (float) __attribute__ ((__nothrow__ , __leaf__)); extern float __gammaf (float) __attribute__ ((__nothrow__ , __leaf__));
extern float lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern float __lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
extern float rintf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __rintf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float nextafterf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __nextafterf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__));
extern float nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern float nextdownf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __nextdownf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float nextupf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __nextupf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float remainderf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __remainderf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__));
extern float scalbnf (float __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern float __scalbnf (float __x, int __n) __attribute__ ((__nothrow__ , __leaf__));
extern int ilogbf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern int __ilogbf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int llogbf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __llogbf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float scalblnf (float __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern float __scalblnf (float __x, long int __n) __attribute__ ((__nothrow__ , __leaf__));
extern float nearbyintf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern float __nearbyintf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float roundf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __roundf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float truncf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __truncf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern float __remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__));
extern long int lrintf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lrintf (float __x) __attribute__ ((__nothrow__ , __leaf__));
__extension__
extern long long int llrintf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llrintf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int lroundf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lroundf (float __x) __attribute__ ((__nothrow__ , __leaf__));
__extension__
extern long long int llroundf (float __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llroundf (float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float fdimf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)); extern float __fdimf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__));
extern float fmaxf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __fmaxf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float fminf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __fminf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__ , __leaf__)); extern float __fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__ , __leaf__));
extern float roundevenf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __roundevenf (float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern __intmax_t fromfpf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __uintmax_t ufromfpf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __intmax_t fromfpxf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpxf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __uintmax_t ufromfpxf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpxf (float __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern float fmaxmagf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __fmaxmagf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float fminmagf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern float __fminmagf (float __x, float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int canonicalizef (float *__cx, const float *__x) __attribute__ ((__nothrow__ , __leaf__));
extern int totalorderf (const float *__x, const float *__y) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__pure__));
extern int totalordermagf (const float *__x, const float *__y) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__pure__));
extern float getpayloadf (const float *__x) __attribute__ ((__nothrow__ , __leaf__)); extern float __getpayloadf (const float *__x) __attribute__ ((__nothrow__ , __leaf__));
extern int setpayloadf (float *__x, float __payload) __attribute__ ((__nothrow__ , __leaf__));
extern int setpayloadsigf (float *__x, float __payload) __attribute__ ((__nothrow__ , __leaf__));
extern float scalbf (float __x, float __n) __attribute__ ((__nothrow__ , __leaf__)); extern float __scalbf (float __x, float __n) __attribute__ ((__nothrow__ , __leaf__));
# 308 "/usr/include/math.h" 2 3 4
# 349 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 1 3 4
# 21 "/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h" 3 4
extern int __fpclassifyl (long double __value) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__const__));
extern int __signbitl (long double __value) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__const__));
extern int __isinfl (long double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int __finitel (long double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int __isnanl (long double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int __iseqsigl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern int __issignalingl (long double __value) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__const__));
# 350 "/usr/include/math.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4
# 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern long double acosl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __acosl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double asinl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __asinl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double atanl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __atanl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double atan2l (long double __y, long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __atan2l (long double __y, long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double cosl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __cosl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double sinl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __sinl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double tanl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __tanl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double coshl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __coshl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double sinhl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __sinhl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double tanhl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __tanhl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern void sincosl (long double __x, long double *__sinx, long double *__cosx) __attribute__ ((__nothrow__ , __leaf__)); extern void __sincosl (long double __x, long double *__sinx, long double *__cosx) __attribute__ ((__nothrow__ , __leaf__))
;
extern long double acoshl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __acoshl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double asinhl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __asinhl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double atanhl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __atanhl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double expl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __expl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern long double __frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
extern long double ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern long double __ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__));
extern long double logl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __logl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double log10l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __log10l (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__ , __leaf__)); extern long double __modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern long double exp10l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __exp10l (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double expm1l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __expm1l (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double log1pl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __log1pl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double logbl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __logbl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double exp2l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __exp2l (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double log2l (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __log2l (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double powl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __powl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern long double sqrtl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __sqrtl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double hypotl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __hypotl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern long double cbrtl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __cbrtl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double ceill (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __ceill (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double fabsl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __fabsl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double floorl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __floorl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double fmodl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __fmodl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__));
# 177 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern int isinfl (long double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int finitel (long double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double dreml (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __dreml (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern long double significandl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __significandl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double copysignl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double nanl (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern long double __nanl (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
# 211 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern int isnanl (long double __value) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double j0l (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __j0l (long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double j1l (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __j1l (long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double jnl (int, long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __jnl (int, long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double y0l (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __y0l (long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double y1l (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __y1l (long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double ynl (int, long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __ynl (int, long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double erfl (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __erfl (long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double erfcl (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __erfcl (long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double lgammal (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __lgammal (long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double tgammal (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __tgammal (long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double gammal (long double) __attribute__ ((__nothrow__ , __leaf__)); extern long double __gammal (long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern long double __lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
extern long double rintl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __rintl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern long double nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern long double nextdownl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __nextdownl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double nextupl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __nextupl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double remainderl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __remainderl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern long double scalbnl (long double __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern long double __scalbnl (long double __x, int __n) __attribute__ ((__nothrow__ , __leaf__));
extern int ilogbl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern int __ilogbl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int llogbl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __llogbl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern long double __scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__ , __leaf__));
extern long double nearbyintl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __nearbyintl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double roundl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __roundl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double truncl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __truncl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern long double __remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__));
extern long int lrintl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lrintl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
__extension__
extern long long int llrintl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llrintl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int lroundl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lroundl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
__extension__
extern long long int llroundl (long double __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llroundl (long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double fdiml (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)); extern long double __fdiml (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern long double fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double fminl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __fminl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__ , __leaf__)); extern long double __fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__ , __leaf__));
extern long double roundevenl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __roundevenl (long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern __intmax_t fromfpl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __uintmax_t ufromfpl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __intmax_t fromfpxl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpxl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __uintmax_t ufromfpxl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpxl (long double __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern long double fmaxmagl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __fmaxmagl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double fminmagl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern long double __fminmagl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int canonicalizel (long double *__cx, const long double *__x) __attribute__ ((__nothrow__ , __leaf__));
extern int totalorderl (const long double *__x, const long double *__y) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__pure__));
extern int totalordermagl (const long double *__x, const long double *__y) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__pure__));
extern long double getpayloadl (const long double *__x) __attribute__ ((__nothrow__ , __leaf__)); extern long double __getpayloadl (const long double *__x) __attribute__ ((__nothrow__ , __leaf__));
extern int setpayloadl (long double *__x, long double __payload) __attribute__ ((__nothrow__ , __leaf__));
extern int setpayloadsigl (long double *__x, long double __payload) __attribute__ ((__nothrow__ , __leaf__));
extern long double scalbl (long double __x, long double __n) __attribute__ ((__nothrow__ , __leaf__)); extern long double __scalbl (long double __x, long double __n) __attribute__ ((__nothrow__ , __leaf__));
# 351 "/usr/include/math.h" 2 3 4
# 389 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4
# 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern _Float32 acosf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __acosf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 asinf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __asinf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 atanf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __atanf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 atan2f32 (_Float32 __y, _Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __atan2f32 (_Float32 __y, _Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 cosf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __cosf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 sinf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __sinf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 tanf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __tanf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 coshf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __coshf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 sinhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __sinhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 tanhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __tanhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern void sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) __attribute__ ((__nothrow__ , __leaf__)); extern void __sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) __attribute__ ((__nothrow__ , __leaf__))
;
extern _Float32 acoshf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __acoshf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 asinhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __asinhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 atanhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __atanhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 expf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __expf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 frexpf32 (_Float32 __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __frexpf32 (_Float32 __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 ldexpf32 (_Float32 __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __ldexpf32 (_Float32 __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 logf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __logf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 log10f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __log10f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 modff32 (_Float32 __x, _Float32 *__iptr) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __modff32 (_Float32 __x, _Float32 *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern _Float32 exp10f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __exp10f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 expm1f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __expm1f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 log1pf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __log1pf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 logbf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __logbf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 exp2f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __exp2f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 log2f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __log2f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 powf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __powf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 sqrtf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __sqrtf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 hypotf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __hypotf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 cbrtf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __cbrtf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 ceilf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __ceilf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 fabsf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __fabsf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 floorf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __floorf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 fmodf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __fmodf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__));
# 196 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern _Float32 copysignf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __copysignf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 nanf32 (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __nanf32 (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
# 217 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern _Float32 j0f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __j0f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 j1f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __j1f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 jnf32 (int, _Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __jnf32 (int, _Float32) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 y0f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __y0f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 y1f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __y1f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 ynf32 (int, _Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __ynf32 (int, _Float32) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 erff32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __erff32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 erfcf32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __erfcf32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 lgammaf32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __lgammaf32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 tgammaf32 (_Float32) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __tgammaf32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
# 249 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern _Float32 lgammaf32_r (_Float32, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __lgammaf32_r (_Float32, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 rintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __rintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 nextafterf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __nextafterf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 nextdownf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __nextdownf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 nextupf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __nextupf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 remainderf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __remainderf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 scalbnf32 (_Float32 __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __scalbnf32 (_Float32 __x, int __n) __attribute__ ((__nothrow__ , __leaf__));
extern int ilogbf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern int __ilogbf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int llogbf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __llogbf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 scalblnf32 (_Float32 __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __scalblnf32 (_Float32 __x, long int __n) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 nearbyintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __nearbyintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 roundf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __roundf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 truncf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __truncf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 remquof32 (_Float32 __x, _Float32 __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __remquof32 (_Float32 __x, _Float32 __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__));
extern long int lrintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lrintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
__extension__
extern long long int llrintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llrintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int lroundf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lroundf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
__extension__
extern long long int llroundf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llroundf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 fdimf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __fdimf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 fmaxf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __fmaxf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 fminf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __fminf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 roundevenf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __roundevenf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern __intmax_t fromfpf32 (_Float32 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpf32 (_Float32 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __uintmax_t ufromfpf32 (_Float32 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpf32 (_Float32 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __intmax_t fromfpxf32 (_Float32 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpxf32 (_Float32 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __uintmax_t ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpxf32 (_Float32 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern _Float32 fmaxmagf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __fmaxmagf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 fminmagf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32 __fminmagf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int canonicalizef32 (_Float32 *__cx, const _Float32 *__x) __attribute__ ((__nothrow__ , __leaf__));
extern int totalorderf32 (const _Float32 *__x, const _Float32 *__y) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__pure__));
extern int totalordermagf32 (const _Float32 *__x, const _Float32 *__y) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__pure__));
extern _Float32 getpayloadf32 (const _Float32 *__x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32 __getpayloadf32 (const _Float32 *__x) __attribute__ ((__nothrow__ , __leaf__));
extern int setpayloadf32 (_Float32 *__x, _Float32 __payload) __attribute__ ((__nothrow__ , __leaf__));
extern int setpayloadsigf32 (_Float32 *__x, _Float32 __payload) __attribute__ ((__nothrow__ , __leaf__));
# 390 "/usr/include/math.h" 2 3 4
# 406 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4
# 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern _Float64 acosf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __acosf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 asinf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __asinf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 atanf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __atanf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 atan2f64 (_Float64 __y, _Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __atan2f64 (_Float64 __y, _Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 cosf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __cosf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 sinf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __sinf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 tanf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __tanf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 coshf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __coshf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 sinhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __sinhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 tanhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __tanhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern void sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) __attribute__ ((__nothrow__ , __leaf__)); extern void __sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) __attribute__ ((__nothrow__ , __leaf__))
;
extern _Float64 acoshf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __acoshf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 asinhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __asinhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 atanhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __atanhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 expf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __expf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 frexpf64 (_Float64 __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __frexpf64 (_Float64 __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 ldexpf64 (_Float64 __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __ldexpf64 (_Float64 __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 logf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __logf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 log10f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __log10f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 modff64 (_Float64 __x, _Float64 *__iptr) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __modff64 (_Float64 __x, _Float64 *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern _Float64 exp10f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __exp10f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 expm1f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __expm1f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 log1pf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __log1pf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 logbf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __logbf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 exp2f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __exp2f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 log2f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __log2f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 powf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __powf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 sqrtf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __sqrtf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 hypotf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __hypotf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 cbrtf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __cbrtf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 ceilf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __ceilf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 fabsf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __fabsf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 floorf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __floorf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 fmodf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __fmodf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
# 196 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern _Float64 copysignf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __copysignf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 nanf64 (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __nanf64 (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
# 217 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern _Float64 j0f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __j0f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 j1f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __j1f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 jnf64 (int, _Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __jnf64 (int, _Float64) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 y0f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __y0f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 y1f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __y1f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 ynf64 (int, _Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __ynf64 (int, _Float64) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 erff64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __erff64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 erfcf64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __erfcf64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 lgammaf64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __lgammaf64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 tgammaf64 (_Float64) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __tgammaf64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
# 249 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern _Float64 lgammaf64_r (_Float64, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __lgammaf64_r (_Float64, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 rintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __rintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 nextafterf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __nextafterf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 nextdownf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __nextdownf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 nextupf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __nextupf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 remainderf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __remainderf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 scalbnf64 (_Float64 __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __scalbnf64 (_Float64 __x, int __n) __attribute__ ((__nothrow__ , __leaf__));
extern int ilogbf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern int __ilogbf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int llogbf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __llogbf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 scalblnf64 (_Float64 __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __scalblnf64 (_Float64 __x, long int __n) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 nearbyintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __nearbyintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 roundf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __roundf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 truncf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __truncf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 remquof64 (_Float64 __x, _Float64 __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __remquof64 (_Float64 __x, _Float64 __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__));
extern long int lrintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lrintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
__extension__
extern long long int llrintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llrintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int lroundf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lroundf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
__extension__
extern long long int llroundf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llroundf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 fdimf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __fdimf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 fmaxf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __fmaxf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 fminf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __fminf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 roundevenf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __roundevenf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern __intmax_t fromfpf64 (_Float64 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpf64 (_Float64 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __uintmax_t ufromfpf64 (_Float64 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpf64 (_Float64 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __intmax_t fromfpxf64 (_Float64 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpxf64 (_Float64 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __uintmax_t ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpxf64 (_Float64 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern _Float64 fmaxmagf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __fmaxmagf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 fminmagf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64 __fminmagf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int canonicalizef64 (_Float64 *__cx, const _Float64 *__x) __attribute__ ((__nothrow__ , __leaf__));
extern int totalorderf64 (const _Float64 *__x, const _Float64 *__y) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__pure__));
extern int totalordermagf64 (const _Float64 *__x, const _Float64 *__y) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__pure__));
extern _Float64 getpayloadf64 (const _Float64 *__x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64 __getpayloadf64 (const _Float64 *__x) __attribute__ ((__nothrow__ , __leaf__));
extern int setpayloadf64 (_Float64 *__x, _Float64 __payload) __attribute__ ((__nothrow__ , __leaf__));
extern int setpayloadsigf64 (_Float64 *__x, _Float64 __payload) __attribute__ ((__nothrow__ , __leaf__));
# 407 "/usr/include/math.h" 2 3 4
# 423 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4
# 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern _Float128 acosf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __acosf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 asinf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __asinf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 atanf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __atanf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 atan2f128 (_Float128 __y, _Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __atan2f128 (_Float128 __y, _Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 cosf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __cosf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 sinf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __sinf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 tanf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __tanf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 coshf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __coshf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 sinhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __sinhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 tanhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __tanhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern void sincosf128 (_Float128 __x, _Float128 *__sinx, _Float128 *__cosx) __attribute__ ((__nothrow__ , __leaf__)); extern void __sincosf128 (_Float128 __x, _Float128 *__sinx, _Float128 *__cosx) __attribute__ ((__nothrow__ , __leaf__))
;
extern _Float128 acoshf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __acoshf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 asinhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __asinhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 atanhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __atanhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 expf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __expf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 frexpf128 (_Float128 __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __frexpf128 (_Float128 __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 ldexpf128 (_Float128 __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __ldexpf128 (_Float128 __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 logf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __logf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 log10f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __log10f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 modff128 (_Float128 __x, _Float128 *__iptr) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __modff128 (_Float128 __x, _Float128 *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern _Float128 exp10f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __exp10f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 expm1f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __expm1f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 log1pf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __log1pf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 logbf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __logbf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 exp2f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __exp2f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 log2f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __log2f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 powf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __powf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 sqrtf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __sqrtf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 hypotf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __hypotf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 cbrtf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __cbrtf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 ceilf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __ceilf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 fabsf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __fabsf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 floorf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __floorf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 fmodf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __fmodf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
# 196 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern _Float128 copysignf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __copysignf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 nanf128 (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __nanf128 (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
# 217 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern _Float128 j0f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __j0f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 j1f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __j1f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 jnf128 (int, _Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __jnf128 (int, _Float128) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 y0f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __y0f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 y1f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __y1f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 ynf128 (int, _Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __ynf128 (int, _Float128) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 erff128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __erff128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 erfcf128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __erfcf128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 lgammaf128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __lgammaf128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 tgammaf128 (_Float128) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __tgammaf128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
# 249 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern _Float128 lgammaf128_r (_Float128, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __lgammaf128_r (_Float128, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 rintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __rintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 nextafterf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __nextafterf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 nextdownf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __nextdownf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 nextupf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __nextupf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 remainderf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __remainderf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 scalbnf128 (_Float128 __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __scalbnf128 (_Float128 __x, int __n) __attribute__ ((__nothrow__ , __leaf__));
extern int ilogbf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern int __ilogbf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int llogbf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __llogbf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 scalblnf128 (_Float128 __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __scalblnf128 (_Float128 __x, long int __n) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 nearbyintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __nearbyintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 roundf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __roundf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 truncf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __truncf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 remquof128 (_Float128 __x, _Float128 __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __remquof128 (_Float128 __x, _Float128 __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__));
extern long int lrintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lrintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
__extension__
extern long long int llrintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llrintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int lroundf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lroundf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
__extension__
extern long long int llroundf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llroundf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 fdimf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __fdimf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 fmaxf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __fmaxf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 fminf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __fminf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 roundevenf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __roundevenf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern __intmax_t fromfpf128 (_Float128 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpf128 (_Float128 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __uintmax_t ufromfpf128 (_Float128 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpf128 (_Float128 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __intmax_t fromfpxf128 (_Float128 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpxf128 (_Float128 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __uintmax_t ufromfpxf128 (_Float128 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpxf128 (_Float128 __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern _Float128 fmaxmagf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __fmaxmagf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 fminmagf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float128 __fminmagf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int canonicalizef128 (_Float128 *__cx, const _Float128 *__x) __attribute__ ((__nothrow__ , __leaf__));
extern int totalorderf128 (const _Float128 *__x, const _Float128 *__y) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__pure__));
extern int totalordermagf128 (const _Float128 *__x, const _Float128 *__y) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__pure__));
extern _Float128 getpayloadf128 (const _Float128 *__x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float128 __getpayloadf128 (const _Float128 *__x) __attribute__ ((__nothrow__ , __leaf__));
extern int setpayloadf128 (_Float128 *__x, _Float128 __payload) __attribute__ ((__nothrow__ , __leaf__));
extern int setpayloadsigf128 (_Float128 *__x, _Float128 __payload) __attribute__ ((__nothrow__ , __leaf__));
# 424 "/usr/include/math.h" 2 3 4
# 440 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4
# 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern _Float32x acosf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __acosf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x asinf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __asinf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x atanf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __atanf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x atan2f32x (_Float32x __y, _Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __atan2f32x (_Float32x __y, _Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x cosf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __cosf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x sinf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __sinf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x tanf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __tanf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x coshf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __coshf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x sinhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __sinhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x tanhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __tanhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern void sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) __attribute__ ((__nothrow__ , __leaf__)); extern void __sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) __attribute__ ((__nothrow__ , __leaf__))
;
extern _Float32x acoshf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __acoshf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x asinhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __asinhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x atanhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __atanhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x expf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __expf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x frexpf32x (_Float32x __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __frexpf32x (_Float32x __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x ldexpf32x (_Float32x __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __ldexpf32x (_Float32x __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x logf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __logf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x log10f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __log10f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x modff32x (_Float32x __x, _Float32x *__iptr) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __modff32x (_Float32x __x, _Float32x *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern _Float32x exp10f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __exp10f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x expm1f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __expm1f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x log1pf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __log1pf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x logbf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __logbf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x exp2f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __exp2f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x log2f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __log2f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x powf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __powf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x sqrtf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __sqrtf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x hypotf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __hypotf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x cbrtf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __cbrtf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x ceilf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __ceilf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x fabsf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __fabsf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x floorf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __floorf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x fmodf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __fmodf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
# 196 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern _Float32x copysignf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __copysignf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x nanf32x (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __nanf32x (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
# 217 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern _Float32x j0f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __j0f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x j1f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __j1f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x jnf32x (int, _Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __jnf32x (int, _Float32x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x y0f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __y0f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x y1f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __y1f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x ynf32x (int, _Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __ynf32x (int, _Float32x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x erff32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __erff32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x erfcf32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __erfcf32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x lgammaf32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __lgammaf32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x tgammaf32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __tgammaf32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
# 249 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern _Float32x lgammaf32x_r (_Float32x, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __lgammaf32x_r (_Float32x, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x rintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __rintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x nextafterf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __nextafterf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x nextdownf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __nextdownf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x nextupf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __nextupf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x remainderf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __remainderf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x scalbnf32x (_Float32x __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __scalbnf32x (_Float32x __x, int __n) __attribute__ ((__nothrow__ , __leaf__));
extern int ilogbf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern int __ilogbf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int llogbf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __llogbf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x scalblnf32x (_Float32x __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __scalblnf32x (_Float32x __x, long int __n) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x nearbyintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __nearbyintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x roundf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __roundf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x truncf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __truncf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x remquof32x (_Float32x __x, _Float32x __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __remquof32x (_Float32x __x, _Float32x __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__));
extern long int lrintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lrintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
__extension__
extern long long int llrintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llrintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int lroundf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lroundf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
__extension__
extern long long int llroundf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llroundf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x fdimf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __fdimf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x fmaxf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __fmaxf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x fminf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __fminf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x roundevenf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __roundevenf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern __intmax_t fromfpf32x (_Float32x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpf32x (_Float32x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __uintmax_t ufromfpf32x (_Float32x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpf32x (_Float32x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __intmax_t fromfpxf32x (_Float32x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpxf32x (_Float32x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __uintmax_t ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpxf32x (_Float32x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern _Float32x fmaxmagf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __fmaxmagf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x fminmagf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float32x __fminmagf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int canonicalizef32x (_Float32x *__cx, const _Float32x *__x) __attribute__ ((__nothrow__ , __leaf__));
extern int totalorderf32x (const _Float32x *__x, const _Float32x *__y) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__pure__));
extern int totalordermagf32x (const _Float32x *__x, const _Float32x *__y) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__pure__));
extern _Float32x getpayloadf32x (const _Float32x *__x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float32x __getpayloadf32x (const _Float32x *__x) __attribute__ ((__nothrow__ , __leaf__));
extern int setpayloadf32x (_Float32x *__x, _Float32x __payload) __attribute__ ((__nothrow__ , __leaf__));
extern int setpayloadsigf32x (_Float32x *__x, _Float32x __payload) __attribute__ ((__nothrow__ , __leaf__));
# 441 "/usr/include/math.h" 2 3 4
# 457 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 1 3 4
# 53 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern _Float64x acosf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __acosf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x asinf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __asinf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x atanf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __atanf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x atan2f64x (_Float64x __y, _Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __atan2f64x (_Float64x __y, _Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x cosf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __cosf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x sinf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __sinf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x tanf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __tanf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x coshf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __coshf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x sinhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __sinhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x tanhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __tanhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern void sincosf64x (_Float64x __x, _Float64x *__sinx, _Float64x *__cosx) __attribute__ ((__nothrow__ , __leaf__)); extern void __sincosf64x (_Float64x __x, _Float64x *__sinx, _Float64x *__cosx) __attribute__ ((__nothrow__ , __leaf__))
;
extern _Float64x acoshf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __acoshf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x asinhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __asinhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x atanhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __atanhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x expf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __expf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x frexpf64x (_Float64x __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __frexpf64x (_Float64x __x, int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x ldexpf64x (_Float64x __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __ldexpf64x (_Float64x __x, int __exponent) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x logf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __logf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x log10f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __log10f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x modff64x (_Float64x __x, _Float64x *__iptr) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __modff64x (_Float64x __x, _Float64x *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern _Float64x exp10f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __exp10f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x expm1f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __expm1f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x log1pf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __log1pf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x logbf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __logbf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x exp2f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __exp2f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x log2f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __log2f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x powf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __powf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x sqrtf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __sqrtf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x hypotf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __hypotf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x cbrtf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __cbrtf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x ceilf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __ceilf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x fabsf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __fabsf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x floorf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __floorf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x fmodf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __fmodf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
# 196 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern _Float64x copysignf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __copysignf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x nanf64x (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __nanf64x (const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
# 217 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern _Float64x j0f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __j0f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x j1f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __j1f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x jnf64x (int, _Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __jnf64x (int, _Float64x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x y0f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __y0f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x y1f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __y1f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x ynf64x (int, _Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __ynf64x (int, _Float64x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x erff64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __erff64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x erfcf64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __erfcf64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x lgammaf64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __lgammaf64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x tgammaf64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __tgammaf64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
# 249 "/usr/include/aarch64-linux-gnu/bits/mathcalls.h" 3 4
extern _Float64x lgammaf64x_r (_Float64x, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __lgammaf64x_r (_Float64x, int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x rintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __rintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x nextafterf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __nextafterf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x nextdownf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __nextdownf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x nextupf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __nextupf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x remainderf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __remainderf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x scalbnf64x (_Float64x __x, int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __scalbnf64x (_Float64x __x, int __n) __attribute__ ((__nothrow__ , __leaf__));
extern int ilogbf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern int __ilogbf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int llogbf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __llogbf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x scalblnf64x (_Float64x __x, long int __n) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __scalblnf64x (_Float64x __x, long int __n) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x nearbyintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __nearbyintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x roundf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __roundf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x truncf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __truncf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x remquof64x (_Float64x __x, _Float64x __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __remquof64x (_Float64x __x, _Float64x __y, int *__quo) __attribute__ ((__nothrow__ , __leaf__));
extern long int lrintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lrintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
__extension__
extern long long int llrintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llrintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int lroundf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long int __lroundf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
__extension__
extern long long int llroundf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)); extern long long int __llroundf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x fdimf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __fdimf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x fmaxf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __fmaxf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x fminf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __fminf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x roundevenf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __roundevenf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern __intmax_t fromfpf64x (_Float64x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpf64x (_Float64x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __uintmax_t ufromfpf64x (_Float64x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpf64x (_Float64x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __intmax_t fromfpxf64x (_Float64x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __intmax_t __fromfpxf64x (_Float64x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern __uintmax_t ufromfpxf64x (_Float64x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__)); extern __uintmax_t __ufromfpxf64x (_Float64x __x, int __round, unsigned int __width) __attribute__ ((__nothrow__ , __leaf__))
;
extern _Float64x fmaxmagf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __fmaxmagf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x fminmagf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)); extern _Float64x __fminmagf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int canonicalizef64x (_Float64x *__cx, const _Float64x *__x) __attribute__ ((__nothrow__ , __leaf__));
extern int totalorderf64x (const _Float64x *__x, const _Float64x *__y) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__pure__));
extern int totalordermagf64x (const _Float64x *__x, const _Float64x *__y) __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__pure__));
extern _Float64x getpayloadf64x (const _Float64x *__x) __attribute__ ((__nothrow__ , __leaf__)); extern _Float64x __getpayloadf64x (const _Float64x *__x) __attribute__ ((__nothrow__ , __leaf__));
extern int setpayloadf64x (_Float64x *__x, _Float64x __payload) __attribute__ ((__nothrow__ , __leaf__));
extern int setpayloadsigf64x (_Float64x *__x, _Float64x __payload) __attribute__ ((__nothrow__ , __leaf__));
# 458 "/usr/include/math.h" 2 3 4
# 503 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4
extern float fadd (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__));
extern float fdiv (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__));
extern float fmul (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__));
extern float fsub (double __x, double __y) __attribute__ ((__nothrow__ , __leaf__));
# 504 "/usr/include/math.h" 2 3 4
# 517 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4
extern float faddl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern float fdivl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern float fmull (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern float fsubl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__));
# 518 "/usr/include/math.h" 2 3 4
# 537 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4
extern double daddl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern double ddivl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern double dmull (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern double dsubl (long double __x, long double __y) __attribute__ ((__nothrow__ , __leaf__));
# 538 "/usr/include/math.h" 2 3 4
# 616 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4
extern _Float32 f32addf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 f32divf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 f32mulf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 f32subf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
# 617 "/usr/include/math.h" 2 3 4
# 626 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4
extern _Float32 f32addf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 f32divf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 f32mulf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 f32subf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
# 627 "/usr/include/math.h" 2 3 4
# 636 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4
extern _Float32 f32addf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 f32divf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 f32mulf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 f32subf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
# 637 "/usr/include/math.h" 2 3 4
# 646 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4
extern _Float32 f32addf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 f32divf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 f32mulf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 f32subf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
# 647 "/usr/include/math.h" 2 3 4
# 666 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4
extern _Float32x f32xaddf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x f32xdivf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x f32xmulf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x f32xsubf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
# 667 "/usr/include/math.h" 2 3 4
# 676 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4
extern _Float32x f32xaddf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x f32xdivf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x f32xmulf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x f32xsubf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
# 677 "/usr/include/math.h" 2 3 4
# 686 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4
extern _Float32x f32xaddf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x f32xdivf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x f32xmulf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x f32xsubf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
# 687 "/usr/include/math.h" 2 3 4
# 706 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4
extern _Float64 f64addf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 f64divf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 f64mulf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 f64subf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
# 707 "/usr/include/math.h" 2 3 4
# 716 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4
extern _Float64 f64addf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 f64divf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 f64mulf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 f64subf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
# 717 "/usr/include/math.h" 2 3 4
# 736 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h" 3 4
extern _Float64x f64xaddf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x f64xdivf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x f64xmulf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x f64xsubf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
# 737 "/usr/include/math.h" 2 3 4
# 773 "/usr/include/math.h" 3 4
extern int signgam;
# 853 "/usr/include/math.h" 3 4
enum
{
FP_NAN =
0,
FP_INFINITE =
1,
FP_ZERO =
2,
FP_SUBNORMAL =
3,
FP_NORMAL =
4
};
# 973 "/usr/include/math.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/iscanonical.h" 1 3 4
# 974 "/usr/include/math.h" 2 3 4
# 1338 "/usr/include/math.h" 3 4
# 6 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/usr/include/stdio.h" 1 3 4
# 27 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4
# 28 "/usr/include/stdio.h" 2 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 209 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 3 4
typedef long unsigned int size_t;
# 34 "/usr/include/stdio.h" 2 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stdarg.h" 1 3 4
# 40 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 37 "/usr/include/stdio.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/__fpos_t.h" 1 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/__mbstate_t.h" 1 3 4
# 13 "/usr/include/aarch64-linux-gnu/bits/types/__mbstate_t.h" 3 4
typedef struct
{
int __count;
union
{
unsigned int __wch;
char __wchb[4];
} __value;
} __mbstate_t;
# 6 "/usr/include/aarch64-linux-gnu/bits/types/__fpos_t.h" 2 3 4
typedef struct _G_fpos_t
{
__off_t __pos;
__mbstate_t __state;
} __fpos_t;
# 40 "/usr/include/stdio.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/__fpos64_t.h" 1 3 4
# 10 "/usr/include/aarch64-linux-gnu/bits/types/__fpos64_t.h" 3 4
typedef struct _G_fpos64_t
{
__off64_t __pos;
__mbstate_t __state;
} __fpos64_t;
# 41 "/usr/include/stdio.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/__FILE.h" 1 3 4
struct _IO_FILE;
typedef struct _IO_FILE __FILE;
# 42 "/usr/include/stdio.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/FILE.h" 1 3 4
struct _IO_FILE;
typedef struct _IO_FILE FILE;
# 43 "/usr/include/stdio.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_FILE.h" 1 3 4
# 35 "/usr/include/aarch64-linux-gnu/bits/types/struct_FILE.h" 3 4
struct _IO_FILE;
struct _IO_marker;
struct _IO_codecvt;
struct _IO_wide_data;
typedef void _IO_lock_t;
struct _IO_FILE
{
int _flags;
char *_IO_read_ptr;
char *_IO_read_end;
char *_IO_read_base;
char *_IO_write_base;
char *_IO_write_ptr;
char *_IO_write_end;
char *_IO_buf_base;
char *_IO_buf_end;
char *_IO_save_base;
char *_IO_backup_base;
char *_IO_save_end;
struct _IO_marker *_markers;
struct _IO_FILE *_chain;
int _fileno;
int _flags2;
__off_t _old_offset;
unsigned short _cur_column;
signed char _vtable_offset;
char _shortbuf[1];
_IO_lock_t *_lock;
__off64_t _offset;
struct _IO_codecvt *_codecvt;
struct _IO_wide_data *_wide_data;
struct _IO_FILE *_freeres_list;
void *_freeres_buf;
size_t __pad5;
int _mode;
char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
};
# 44 "/usr/include/stdio.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/cookie_io_functions_t.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/types/cookie_io_functions_t.h" 3 4
typedef __ssize_t cookie_read_function_t (void *__cookie, char *__buf,
size_t __nbytes);
typedef __ssize_t cookie_write_function_t (void *__cookie, const char *__buf,
size_t __nbytes);
typedef int cookie_seek_function_t (void *__cookie, __off64_t *__pos, int __w);
typedef int cookie_close_function_t (void *__cookie);
typedef struct _IO_cookie_io_functions_t
{
cookie_read_function_t *read;
cookie_write_function_t *write;
cookie_seek_function_t *seek;
cookie_close_function_t *close;
} cookie_io_functions_t;
# 47 "/usr/include/stdio.h" 2 3 4
typedef __gnuc_va_list va_list;
# 63 "/usr/include/stdio.h" 3 4
typedef __off_t off_t;
typedef __off64_t off64_t;
typedef __ssize_t ssize_t;
typedef __fpos_t fpos_t;
typedef __fpos64_t fpos64_t;
# 133 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/stdio_lim.h" 1 3 4
# 134 "/usr/include/stdio.h" 2 3 4
extern FILE *stdin;
extern FILE *stdout;
extern FILE *stderr;
extern int remove (const char *__filename) __attribute__ ((__nothrow__ , __leaf__));
extern int rename (const char *__old, const char *__new) __attribute__ ((__nothrow__ , __leaf__));
extern int renameat (int __oldfd, const char *__old, int __newfd,
const char *__new) __attribute__ ((__nothrow__ , __leaf__));
# 164 "/usr/include/stdio.h" 3 4
extern int renameat2 (int __oldfd, const char *__old, int __newfd,
const char *__new, unsigned int __flags) __attribute__ ((__nothrow__ , __leaf__));
extern FILE *tmpfile (void) ;
# 183 "/usr/include/stdio.h" 3 4
extern FILE *tmpfile64 (void) ;
extern char *tmpnam (char *__s) __attribute__ ((__nothrow__ , __leaf__)) ;
extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__ , __leaf__)) ;
# 204 "/usr/include/stdio.h" 3 4
extern char *tempnam (const char *__dir, const char *__pfx)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) ;
extern int fclose (FILE *__stream);
extern int fflush (FILE *__stream);
# 227 "/usr/include/stdio.h" 3 4
extern int fflush_unlocked (FILE *__stream);
# 237 "/usr/include/stdio.h" 3 4
extern int fcloseall (void);
# 246 "/usr/include/stdio.h" 3 4
extern FILE *fopen (const char *__restrict __filename,
const char *__restrict __modes) ;
extern FILE *freopen (const char *__restrict __filename,
const char *__restrict __modes,
FILE *__restrict __stream) ;
# 270 "/usr/include/stdio.h" 3 4
extern FILE *fopen64 (const char *__restrict __filename,
const char *__restrict __modes) ;
extern FILE *freopen64 (const char *__restrict __filename,
const char *__restrict __modes,
FILE *__restrict __stream) ;
extern FILE *fdopen (int __fd, const char *__modes) __attribute__ ((__nothrow__ , __leaf__)) ;
extern FILE *fopencookie (void *__restrict __magic_cookie,
const char *__restrict __modes,
cookie_io_functions_t __io_funcs) __attribute__ ((__nothrow__ , __leaf__)) ;
extern FILE *fmemopen (void *__s, size_t __len, const char *__modes)
__attribute__ ((__nothrow__ , __leaf__)) ;
extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__ , __leaf__)) ;
extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__));
extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
int __modes, size_t __n) __attribute__ ((__nothrow__ , __leaf__));
extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
size_t __size) __attribute__ ((__nothrow__ , __leaf__));
extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
extern int fprintf (FILE *__restrict __stream,
const char *__restrict __format, ...);
extern int printf (const char *__restrict __format, ...);
extern int sprintf (char *__restrict __s,
const char *__restrict __format, ...) __attribute__ ((__nothrow__));
extern int vfprintf (FILE *__restrict __s, const char *__restrict __format,
__gnuc_va_list __arg);
extern int vprintf (const char *__restrict __format, __gnuc_va_list __arg);
extern int vsprintf (char *__restrict __s, const char *__restrict __format,
__gnuc_va_list __arg) __attribute__ ((__nothrow__));
extern int snprintf (char *__restrict __s, size_t __maxlen,
const char *__restrict __format, ...)
__attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
extern int vsnprintf (char *__restrict __s, size_t __maxlen,
const char *__restrict __format, __gnuc_va_list __arg)
__attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
extern int vasprintf (char **__restrict __ptr, const char *__restrict __f,
__gnuc_va_list __arg)
__attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))) ;
extern int __asprintf (char **__restrict __ptr,
const char *__restrict __fmt, ...)
__attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;
extern int asprintf (char **__restrict __ptr,
const char *__restrict __fmt, ...)
__attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;
extern int vdprintf (int __fd, const char *__restrict __fmt,
__gnuc_va_list __arg)
__attribute__ ((__format__ (__printf__, 2, 0)));
extern int dprintf (int __fd, const char *__restrict __fmt, ...)
__attribute__ ((__format__ (__printf__, 2, 3)));
extern int fscanf (FILE *__restrict __stream,
const char *__restrict __format, ...) ;
extern int scanf (const char *__restrict __format, ...) ;
extern int sscanf (const char *__restrict __s,
const char *__restrict __format, ...) __attribute__ ((__nothrow__ , __leaf__));
extern int fscanf (FILE *__restrict __stream, const char *__restrict __format, ...) __asm__ ("" "__isoc99_fscanf")
;
extern int scanf (const char *__restrict __format, ...) __asm__ ("" "__isoc99_scanf")
;
extern int sscanf (const char *__restrict __s, const char *__restrict __format, ...) __asm__ ("" "__isoc99_sscanf") __attribute__ ((__nothrow__ , __leaf__))
;
# 432 "/usr/include/stdio.h" 3 4
extern int vfscanf (FILE *__restrict __s, const char *__restrict __format,
__gnuc_va_list __arg)
__attribute__ ((__format__ (__scanf__, 2, 0))) ;
extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg)
__attribute__ ((__format__ (__scanf__, 1, 0))) ;
extern int vsscanf (const char *__restrict __s,
const char *__restrict __format, __gnuc_va_list __arg)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfscanf")
__attribute__ ((__format__ (__scanf__, 2, 0))) ;
extern int vscanf (const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vscanf")
__attribute__ ((__format__ (__scanf__, 1, 0))) ;
extern int vsscanf (const char *__restrict __s, const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vsscanf") __attribute__ ((__nothrow__ , __leaf__))
__attribute__ ((__format__ (__scanf__, 2, 0)));
# 485 "/usr/include/stdio.h" 3 4
extern int fgetc (FILE *__stream);
extern int getc (FILE *__stream);
extern int getchar (void);
extern int getc_unlocked (FILE *__stream);
extern int getchar_unlocked (void);
# 510 "/usr/include/stdio.h" 3 4
extern int fgetc_unlocked (FILE *__stream);
# 521 "/usr/include/stdio.h" 3 4
extern int fputc (int __c, FILE *__stream);
extern int putc (int __c, FILE *__stream);
extern int putchar (int __c);
# 537 "/usr/include/stdio.h" 3 4
extern int fputc_unlocked (int __c, FILE *__stream);
extern int putc_unlocked (int __c, FILE *__stream);
extern int putchar_unlocked (int __c);
extern int getw (FILE *__stream);
extern int putw (int __w, FILE *__stream);
extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
;
# 587 "/usr/include/stdio.h" 3 4
extern char *fgets_unlocked (char *__restrict __s, int __n,
FILE *__restrict __stream) ;
# 603 "/usr/include/stdio.h" 3 4
extern __ssize_t __getdelim (char **__restrict __lineptr,
size_t *__restrict __n, int __delimiter,
FILE *__restrict __stream) ;
extern __ssize_t getdelim (char **__restrict __lineptr,
size_t *__restrict __n, int __delimiter,
FILE *__restrict __stream) ;
extern __ssize_t getline (char **__restrict __lineptr,
size_t *__restrict __n,
FILE *__restrict __stream) ;
extern int fputs (const char *__restrict __s, FILE *__restrict __stream);
extern int puts (const char *__s);
extern int ungetc (int __c, FILE *__stream);
extern size_t fread (void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream) ;
extern size_t fwrite (const void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __s);
# 662 "/usr/include/stdio.h" 3 4
extern int fputs_unlocked (const char *__restrict __s,
FILE *__restrict __stream);
# 673 "/usr/include/stdio.h" 3 4
extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream) ;
extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream);
extern int fseek (FILE *__stream, long int __off, int __whence);
extern long int ftell (FILE *__stream) ;
extern void rewind (FILE *__stream);
# 707 "/usr/include/stdio.h" 3 4
extern int fseeko (FILE *__stream, __off_t __off, int __whence);
extern __off_t ftello (FILE *__stream) ;
# 731 "/usr/include/stdio.h" 3 4
extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
extern int fsetpos (FILE *__stream, const fpos_t *__pos);
# 750 "/usr/include/stdio.h" 3 4
extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
extern __off64_t ftello64 (FILE *__stream) ;
extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos);
extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
extern int feof (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
extern int ferror (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
extern void perror (const char *__s);
# 1 "/usr/include/aarch64-linux-gnu/bits/sys_errlist.h" 1 3 4
# 26 "/usr/include/aarch64-linux-gnu/bits/sys_errlist.h" 3 4
extern int sys_nerr;
extern const char *const sys_errlist[];
extern int _sys_nerr;
extern const char *const _sys_errlist[];
# 782 "/usr/include/stdio.h" 2 3 4
extern int fileno (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
# 800 "/usr/include/stdio.h" 3 4
extern FILE *popen (const char *__command, const char *__modes) ;
extern int pclose (FILE *__stream);
extern char *ctermid (char *__s) __attribute__ ((__nothrow__ , __leaf__));
extern char *cuserid (char *__s);
struct obstack;
extern int obstack_printf (struct obstack *__restrict __obstack,
const char *__restrict __format, ...)
__attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3)));
extern int obstack_vprintf (struct obstack *__restrict __obstack,
const char *__restrict __format,
__gnuc_va_list __args)
__attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0)));
extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) ;
extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
# 858 "/usr/include/stdio.h" 3 4
extern int __uflow (FILE *);
extern int __overflow (FILE *, int);
# 873 "/usr/include/stdio.h" 3 4
# 7 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/usr/include/stdlib.h" 1 3 4
# 25 "/usr/include/stdlib.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4
# 26 "/usr/include/stdlib.h" 2 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 321 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 3 4
typedef unsigned int wchar_t;
# 32 "/usr/include/stdlib.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/waitflags.h" 1 3 4
# 52 "/usr/include/aarch64-linux-gnu/bits/waitflags.h" 3 4
typedef enum
{
P_ALL,
P_PID,
P_PGID
} idtype_t;
# 40 "/usr/include/stdlib.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/waitstatus.h" 1 3 4
# 41 "/usr/include/stdlib.h" 2 3 4
# 58 "/usr/include/stdlib.h" 3 4
typedef struct
{
int quot;
int rem;
} div_t;
typedef struct
{
long int quot;
long int rem;
} ldiv_t;
__extension__ typedef struct
{
long long int quot;
long long int rem;
} lldiv_t;
# 97 "/usr/include/stdlib.h" 3 4
extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__ , __leaf__)) ;
extern double atof (const char *__nptr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
extern int atoi (const char *__nptr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
extern long int atol (const char *__nptr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
__extension__ extern long long int atoll (const char *__nptr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
extern double strtod (const char *__restrict __nptr,
char **__restrict __endptr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern float strtof (const char *__restrict __nptr,
char **__restrict __endptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern long double strtold (const char *__restrict __nptr,
char **__restrict __endptr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 140 "/usr/include/stdlib.h" 3 4
extern _Float32 strtof32 (const char *__restrict __nptr,
char **__restrict __endptr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern _Float64 strtof64 (const char *__restrict __nptr,
char **__restrict __endptr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern _Float128 strtof128 (const char *__restrict __nptr,
char **__restrict __endptr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern _Float32x strtof32x (const char *__restrict __nptr,
char **__restrict __endptr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern _Float64x strtof64x (const char *__restrict __nptr,
char **__restrict __endptr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 176 "/usr/include/stdlib.h" 3 4
extern long int strtol (const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern unsigned long int strtoul (const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
__extension__
extern long long int strtoq (const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
__extension__
extern unsigned long long int strtouq (const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
__extension__
extern long long int strtoll (const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
__extension__
extern unsigned long long int strtoull (const char *__restrict __nptr,
char **__restrict __endptr, int __base)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int strfromd (char *__dest, size_t __size, const char *__format,
double __f)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
extern int strfromf (char *__dest, size_t __size, const char *__format,
float __f)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
extern int strfroml (char *__dest, size_t __size, const char *__format,
long double __f)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
# 232 "/usr/include/stdlib.h" 3 4
extern int strfromf32 (char *__dest, size_t __size, const char * __format,
_Float32 __f)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
extern int strfromf64 (char *__dest, size_t __size, const char * __format,
_Float64 __f)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
extern int strfromf128 (char *__dest, size_t __size, const char * __format,
_Float128 __f)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
extern int strfromf32x (char *__dest, size_t __size, const char * __format,
_Float32x __f)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
extern int strfromf64x (char *__dest, size_t __size, const char * __format,
_Float64x __f)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
# 274 "/usr/include/stdlib.h" 3 4
extern long int strtol_l (const char *__restrict __nptr,
char **__restrict __endptr, int __base,
locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4)));
extern unsigned long int strtoul_l (const char *__restrict __nptr,
char **__restrict __endptr,
int __base, locale_t __loc)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4)));
__extension__
extern long long int strtoll_l (const char *__restrict __nptr,
char **__restrict __endptr, int __base,
locale_t __loc)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4)));
__extension__
extern unsigned long long int strtoull_l (const char *__restrict __nptr,
char **__restrict __endptr,
int __base, locale_t __loc)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4)));
extern double strtod_l (const char *__restrict __nptr,
char **__restrict __endptr, locale_t __loc)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
extern float strtof_l (const char *__restrict __nptr,
char **__restrict __endptr, locale_t __loc)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
extern long double strtold_l (const char *__restrict __nptr,
char **__restrict __endptr,
locale_t __loc)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
# 316 "/usr/include/stdlib.h" 3 4
extern _Float32 strtof32_l (const char *__restrict __nptr,
char **__restrict __endptr,
locale_t __loc)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
extern _Float64 strtof64_l (const char *__restrict __nptr,
char **__restrict __endptr,
locale_t __loc)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
extern _Float128 strtof128_l (const char *__restrict __nptr,
char **__restrict __endptr,
locale_t __loc)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
extern _Float32x strtof32x_l (const char *__restrict __nptr,
char **__restrict __endptr,
locale_t __loc)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
extern _Float64x strtof64x_l (const char *__restrict __nptr,
char **__restrict __endptr,
locale_t __loc)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
# 385 "/usr/include/stdlib.h" 3 4
extern char *l64a (long int __n) __attribute__ ((__nothrow__ , __leaf__)) ;
extern long int a64l (const char *__s)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
# 1 "/usr/include/aarch64-linux-gnu/sys/types.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4
typedef __u_char u_char;
typedef __u_short u_short;
typedef __u_int u_int;
typedef __u_long u_long;
typedef __quad_t quad_t;
typedef __u_quad_t u_quad_t;
typedef __fsid_t fsid_t;
typedef __loff_t loff_t;
typedef __ino_t ino_t;
typedef __ino64_t ino64_t;
typedef __dev_t dev_t;
typedef __gid_t gid_t;
typedef __mode_t mode_t;
typedef __nlink_t nlink_t;
typedef __uid_t uid_t;
# 97 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4
typedef __pid_t pid_t;
typedef __id_t id_t;
# 114 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4
typedef __daddr_t daddr_t;
typedef __caddr_t caddr_t;
typedef __key_t key_t;
# 1 "/usr/include/aarch64-linux-gnu/bits/types/clock_t.h" 1 3 4
typedef __clock_t clock_t;
# 127 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/clockid_t.h" 1 3 4
typedef __clockid_t clockid_t;
# 129 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/time_t.h" 1 3 4
typedef __time_t time_t;
# 130 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/timer_t.h" 1 3 4
typedef __timer_t timer_t;
# 131 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4
typedef __useconds_t useconds_t;
typedef __suseconds_t suseconds_t;
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 145 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4
typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;
# 1 "/usr/include/aarch64-linux-gnu/bits/stdint-intn.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/stdint-intn.h" 3 4
typedef __int8_t int8_t;
typedef __int16_t int16_t;
typedef __int32_t int32_t;
typedef __int64_t int64_t;
# 156 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4
typedef __uint8_t u_int8_t;
typedef __uint16_t u_int16_t;
typedef __uint32_t u_int32_t;
typedef __uint64_t u_int64_t;
typedef int register_t __attribute__ ((__mode__ (__word__)));
# 176 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4
# 1 "/usr/include/endian.h" 1 3 4
# 35 "/usr/include/endian.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/byteswap.h" 1 3 4
# 33 "/usr/include/aarch64-linux-gnu/bits/byteswap.h" 3 4
static __inline __uint16_t
__bswap_16 (__uint16_t __bsx)
{
return __builtin_bswap16 (__bsx);
}
static __inline __uint32_t
__bswap_32 (__uint32_t __bsx)
{
return __builtin_bswap32 (__bsx);
}
# 69 "/usr/include/aarch64-linux-gnu/bits/byteswap.h" 3 4
__extension__ static __inline __uint64_t
__bswap_64 (__uint64_t __bsx)
{
return __builtin_bswap64 (__bsx);
}
# 36 "/usr/include/endian.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/uintn-identity.h" 1 3 4
# 32 "/usr/include/aarch64-linux-gnu/bits/uintn-identity.h" 3 4
static __inline __uint16_t
__uint16_identity (__uint16_t __x)
{
return __x;
}
static __inline __uint32_t
__uint32_identity (__uint32_t __x)
{
return __x;
}
static __inline __uint64_t
__uint64_identity (__uint64_t __x)
{
return __x;
}
# 37 "/usr/include/endian.h" 2 3 4
# 177 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/sys/select.h" 1 3 4
# 30 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/select.h" 1 3 4
# 31 "/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/sigset_t.h" 1 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/__sigset_t.h" 1 3 4
typedef struct
{
unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
} __sigset_t;
# 5 "/usr/include/aarch64-linux-gnu/bits/types/sigset_t.h" 2 3 4
typedef __sigset_t sigset_t;
# 34 "/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_timeval.h" 1 3 4
struct timeval
{
__time_t tv_sec;
__suseconds_t tv_usec;
};
# 38 "/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_timespec.h" 1 3 4
# 10 "/usr/include/aarch64-linux-gnu/bits/types/struct_timespec.h" 3 4
struct timespec
{
__time_t tv_sec;
__syscall_slong_t tv_nsec;
# 26 "/usr/include/aarch64-linux-gnu/bits/types/struct_timespec.h" 3 4
};
# 40 "/usr/include/aarch64-linux-gnu/sys/select.h" 2 3 4
# 49 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4
typedef long int __fd_mask;
# 59 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4
typedef struct
{
__fd_mask fds_bits[1024 / (8 * (int) sizeof (__fd_mask))];
} fd_set;
typedef __fd_mask fd_mask;
# 91 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4
# 101 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4
extern int select (int __nfds, fd_set *__restrict __readfds,
fd_set *__restrict __writefds,
fd_set *__restrict __exceptfds,
struct timeval *__restrict __timeout);
# 113 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4
extern int pselect (int __nfds, fd_set *__restrict __readfds,
fd_set *__restrict __writefds,
fd_set *__restrict __exceptfds,
const struct timespec *__restrict __timeout,
const __sigset_t *__restrict __sigmask);
# 126 "/usr/include/aarch64-linux-gnu/sys/select.h" 3 4
# 180 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4
typedef __blksize_t blksize_t;
typedef __blkcnt_t blkcnt_t;
typedef __fsblkcnt_t fsblkcnt_t;
typedef __fsfilcnt_t fsfilcnt_t;
# 219 "/usr/include/aarch64-linux-gnu/sys/types.h" 3 4
typedef __blkcnt64_t blkcnt64_t;
typedef __fsblkcnt64_t fsblkcnt64_t;
typedef __fsfilcnt64_t fsfilcnt64_t;
# 1 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 1 3 4
# 44 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes-arch.h" 1 3 4
# 45 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 2 3 4
typedef struct __pthread_internal_list
{
struct __pthread_internal_list *__prev;
struct __pthread_internal_list *__next;
} __pthread_list_t;
typedef struct __pthread_internal_slist
{
struct __pthread_internal_slist *__next;
} __pthread_slist_t;
# 74 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/struct_mutex.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/struct_mutex.h" 3 4
struct __pthread_mutex_s
{
int __lock ;
unsigned int __count;
int __owner;
unsigned int __nusers;
# 58 "/usr/include/aarch64-linux-gnu/bits/struct_mutex.h" 3 4
int __kind;
int __spins;
__pthread_list_t __list;
# 74 "/usr/include/aarch64-linux-gnu/bits/struct_mutex.h" 3 4
};
# 75 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 2 3 4
# 87 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/struct_rwlock.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/bits/struct_rwlock.h" 3 4
struct __pthread_rwlock_arch_t
{
unsigned int __readers;
unsigned int __writers;
unsigned int __wrphase_futex;
unsigned int __writers_futex;
unsigned int __pad3;
unsigned int __pad4;
int __cur_writer;
int __shared;
unsigned long int __pad1;
unsigned long int __pad2;
unsigned int __flags;
};
# 88 "/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h" 2 3 4
struct __pthread_cond_s
{
__extension__ union
{
__extension__ unsigned long long int __wseq;
struct
{
unsigned int __low;
unsigned int __high;
} __wseq32;
};
__extension__ union
{
__extension__ unsigned long long int __g1_start;
struct
{
unsigned int __low;
unsigned int __high;
} __g1_start32;
};
unsigned int __g_refs[2] ;
unsigned int __g_size[2];
unsigned int __g1_orig_size;
unsigned int __wrefs;
unsigned int __g_signals[2];
};
# 24 "/usr/include/aarch64-linux-gnu/bits/pthreadtypes.h" 2 3 4
typedef unsigned long int pthread_t;
typedef union
{
char __size[8];
int __align;
} pthread_mutexattr_t;
typedef union
{
char __size[8];
int __align;
} pthread_condattr_t;
typedef unsigned int pthread_key_t;
typedef int pthread_once_t;
union pthread_attr_t
{
char __size[64];
long int __align;
};
typedef union pthread_attr_t pthread_attr_t;
typedef union
{
struct __pthread_mutex_s __data;
char __size[48];
long int __align;
} pthread_mutex_t;
typedef union
{
struct __pthread_cond_s __data;
char __size[48];
__extension__ long long int __align;
} pthread_cond_t;
typedef union
{
struct __pthread_rwlock_arch_t __data;
char __size[56];
long int __align;
} pthread_rwlock_t;
typedef union
{
char __size[8];
long int __align;
} pthread_rwlockattr_t;
typedef volatile int pthread_spinlock_t;
typedef union
{
char __size[32];
long int __align;
} pthread_barrier_t;
typedef union
{
char __size[8];
int __align;
} pthread_barrierattr_t;
# 228 "/usr/include/aarch64-linux-gnu/sys/types.h" 2 3 4
# 395 "/usr/include/stdlib.h" 2 3 4
extern long int random (void) __attribute__ ((__nothrow__ , __leaf__));
extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__ , __leaf__));
extern char *initstate (unsigned int __seed, char *__statebuf,
size_t __statelen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
struct random_data
{
int32_t *fptr;
int32_t *rptr;
int32_t *state;
int rand_type;
int rand_deg;
int rand_sep;
int32_t *end_ptr;
};
extern int random_r (struct random_data *__restrict __buf,
int32_t *__restrict __result) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int srandom_r (unsigned int __seed, struct random_data *__buf)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
size_t __statelen,
struct random_data *__restrict __buf)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4)));
extern int setstate_r (char *__restrict __statebuf,
struct random_data *__restrict __buf)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int rand (void) __attribute__ ((__nothrow__ , __leaf__));
extern void srand (unsigned int __seed) __attribute__ ((__nothrow__ , __leaf__));
extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__ , __leaf__));
extern double drand48 (void) __attribute__ ((__nothrow__ , __leaf__));
extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern long int lrand48 (void) __attribute__ ((__nothrow__ , __leaf__));
extern long int nrand48 (unsigned short int __xsubi[3])
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern long int mrand48 (void) __attribute__ ((__nothrow__ , __leaf__));
extern long int jrand48 (unsigned short int __xsubi[3])
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern void srand48 (long int __seedval) __attribute__ ((__nothrow__ , __leaf__));
extern unsigned short int *seed48 (unsigned short int __seed16v[3])
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
struct drand48_data
{
unsigned short int __x[3];
unsigned short int __old_x[3];
unsigned short int __c;
unsigned short int __init;
__extension__ unsigned long long int __a;
};
extern int drand48_r (struct drand48_data *__restrict __buffer,
double *__restrict __result) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int erand48_r (unsigned short int __xsubi[3],
struct drand48_data *__restrict __buffer,
double *__restrict __result) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int lrand48_r (struct drand48_data *__restrict __buffer,
long int *__restrict __result)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int nrand48_r (unsigned short int __xsubi[3],
struct drand48_data *__restrict __buffer,
long int *__restrict __result)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int mrand48_r (struct drand48_data *__restrict __buffer,
long int *__restrict __result)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int jrand48_r (unsigned short int __xsubi[3],
struct drand48_data *__restrict __buffer,
long int *__restrict __result)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern int seed48_r (unsigned short int __seed16v[3],
struct drand48_data *__buffer) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int lcong48_r (unsigned short int __param[7],
struct drand48_data *__buffer)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *malloc (size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__))
__attribute__ ((__alloc_size__ (1))) ;
extern void *calloc (size_t __nmemb, size_t __size)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1, 2))) ;
extern void *realloc (void *__ptr, size_t __size)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2)));
extern void *reallocarray (void *__ptr, size_t __nmemb, size_t __size)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__))
__attribute__ ((__alloc_size__ (2, 3)));
extern void free (void *__ptr) __attribute__ ((__nothrow__ , __leaf__));
# 1 "/usr/include/alloca.h" 1 3 4
# 24 "/usr/include/alloca.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 25 "/usr/include/alloca.h" 2 3 4
extern void *alloca (size_t __size) __attribute__ ((__nothrow__ , __leaf__));
# 569 "/usr/include/stdlib.h" 2 3 4
extern void *valloc (size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__))
__attribute__ ((__alloc_size__ (1))) ;
extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
extern void *aligned_alloc (size_t __alignment, size_t __size)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (2))) ;
extern void abort (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));
extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int at_quick_exit (void (*__func) (void)) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern void exit (int __status) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));
extern void quick_exit (int __status) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));
extern void _Exit (int __status) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));
extern char *getenv (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
extern char *secure_getenv (const char *__name)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
extern int putenv (char *__string) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int setenv (const char *__name, const char *__value, int __replace)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern int unsetenv (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int clearenv (void) __attribute__ ((__nothrow__ , __leaf__));
# 675 "/usr/include/stdlib.h" 3 4
extern char *mktemp (char *__template) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 688 "/usr/include/stdlib.h" 3 4
extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ;
# 698 "/usr/include/stdlib.h" 3 4
extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ;
# 710 "/usr/include/stdlib.h" 3 4
extern int mkstemps (char *__template, int __suffixlen) __attribute__ ((__nonnull__ (1))) ;
# 720 "/usr/include/stdlib.h" 3 4
extern int mkstemps64 (char *__template, int __suffixlen)
__attribute__ ((__nonnull__ (1))) ;
# 731 "/usr/include/stdlib.h" 3 4
extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
# 742 "/usr/include/stdlib.h" 3 4
extern int mkostemp (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ;
# 752 "/usr/include/stdlib.h" 3 4
extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ;
# 762 "/usr/include/stdlib.h" 3 4
extern int mkostemps (char *__template, int __suffixlen, int __flags)
__attribute__ ((__nonnull__ (1))) ;
# 774 "/usr/include/stdlib.h" 3 4
extern int mkostemps64 (char *__template, int __suffixlen, int __flags)
__attribute__ ((__nonnull__ (1))) ;
# 784 "/usr/include/stdlib.h" 3 4
extern int system (const char *__command) ;
extern char *canonicalize_file_name (const char *__name)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
# 800 "/usr/include/stdlib.h" 3 4
extern char *realpath (const char *__restrict __name,
char *__restrict __resolved) __attribute__ ((__nothrow__ , __leaf__)) ;
typedef int (*__compar_fn_t) (const void *, const void *);
typedef __compar_fn_t comparison_fn_t;
typedef int (*__compar_d_fn_t) (const void *, const void *, void *);
extern void *bsearch (const void *__key, const void *__base,
size_t __nmemb, size_t __size, __compar_fn_t __compar)
__attribute__ ((__nonnull__ (1, 2, 5))) ;
extern void qsort (void *__base, size_t __nmemb, size_t __size,
__compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
extern void qsort_r (void *__base, size_t __nmemb, size_t __size,
__compar_d_fn_t __compar, void *__arg)
__attribute__ ((__nonnull__ (1, 4)));
extern int abs (int __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ;
extern long int labs (long int __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ;
__extension__ extern long long int llabs (long long int __x)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ;
extern div_t div (int __numer, int __denom)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ;
extern ldiv_t ldiv (long int __numer, long int __denom)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ;
__extension__ extern lldiv_t lldiv (long long int __numer,
long long int __denom)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) ;
# 872 "/usr/include/stdlib.h" 3 4
extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *gcvt (double __value, int __ndigit, char *__buf)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))) ;
extern char *qecvt (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *qfcvt (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) ;
extern char *qgcvt (long double __value, int __ndigit, char *__buf)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))) ;
extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign, char *__restrict __buf,
size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
int *__restrict __sign, char *__restrict __buf,
size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int qecvt_r (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign,
char *__restrict __buf, size_t __len)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int qfcvt_r (long double __value, int __ndigit,
int *__restrict __decpt, int *__restrict __sign,
char *__restrict __buf, size_t __len)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4, 5)));
extern int mblen (const char *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__));
extern int mbtowc (wchar_t *__restrict __pwc,
const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__ , __leaf__));
extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__ , __leaf__));
extern size_t mbstowcs (wchar_t *__restrict __pwcs,
const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__ , __leaf__));
extern size_t wcstombs (char *__restrict __s,
const wchar_t *__restrict __pwcs, size_t __n)
__attribute__ ((__nothrow__ , __leaf__));
extern int rpmatch (const char *__response) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
# 957 "/usr/include/stdlib.h" 3 4
extern int getsubopt (char **__restrict __optionp,
char *const *__restrict __tokens,
char **__restrict __valuep)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2, 3))) ;
extern int posix_openpt (int __oflag) ;
extern int grantpt (int __fd) __attribute__ ((__nothrow__ , __leaf__));
extern int unlockpt (int __fd) __attribute__ ((__nothrow__ , __leaf__));
extern char *ptsname (int __fd) __attribute__ ((__nothrow__ , __leaf__)) ;
extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern int getpt (void);
extern int getloadavg (double __loadavg[], int __nelem)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 1013 "/usr/include/stdlib.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/stdlib-float.h" 1 3 4
# 1014 "/usr/include/stdlib.h" 2 3 4
# 1023 "/usr/include/stdlib.h" 3 4
# 8 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/usr/include/string.h" 1 3 4
# 26 "/usr/include/string.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4
# 27 "/usr/include/string.h" 2 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 34 "/usr/include/string.h" 2 3 4
# 43 "/usr/include/string.h" 3 4
extern void *memcpy (void *__restrict __dest, const void *__restrict __src,
size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *memmove (void *__dest, const void *__src, size_t __n)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *memccpy (void *__restrict __dest, const void *__restrict __src,
int __c, size_t __n)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int memcmp (const void *__s1, const void *__s2, size_t __n)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 91 "/usr/include/string.h" 3 4
extern void *memchr (const void *__s, int __c, size_t __n)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 104 "/usr/include/string.h" 3 4
extern void *rawmemchr (const void *__s, int __c)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 115 "/usr/include/string.h" 3 4
extern void *memrchr (const void *__s, int __c, size_t __n)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
extern char *strcpy (char *__restrict __dest, const char *__restrict __src)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strncpy (char *__restrict __dest,
const char *__restrict __src, size_t __n)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strcat (char *__restrict __dest, const char *__restrict __src)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strncat (char *__restrict __dest, const char *__restrict __src,
size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int strcmp (const char *__s1, const char *__s2)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern int strncmp (const char *__s1, const char *__s2, size_t __n)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern int strcoll (const char *__s1, const char *__s2)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern size_t strxfrm (char *__restrict __dest,
const char *__restrict __src, size_t __n)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n,
locale_t __l) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4)));
extern char *strdup (const char *__s)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
extern char *strndup (const char *__string, size_t __n)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
# 226 "/usr/include/string.h" 3 4
extern char *strchr (const char *__s, int __c)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 253 "/usr/include/string.h" 3 4
extern char *strrchr (const char *__s, int __c)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 266 "/usr/include/string.h" 3 4
extern char *strchrnul (const char *__s, int __c)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
extern size_t strcspn (const char *__s, const char *__reject)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern size_t strspn (const char *__s, const char *__accept)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 303 "/usr/include/string.h" 3 4
extern char *strpbrk (const char *__s, const char *__accept)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 330 "/usr/include/string.h" 3 4
extern char *strstr (const char *__haystack, const char *__needle)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strtok (char *__restrict __s, const char *__restrict __delim)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern char *__strtok_r (char *__restrict __s,
const char *__restrict __delim,
char **__restrict __save_ptr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
extern char *strtok_r (char *__restrict __s, const char *__restrict __delim,
char **__restrict __save_ptr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
# 360 "/usr/include/string.h" 3 4
extern char *strcasestr (const char *__haystack, const char *__needle)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *memmem (const void *__haystack, size_t __haystacklen,
const void *__needle, size_t __needlelen)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)));
extern void *__mempcpy (void *__restrict __dest,
const void *__restrict __src, size_t __n)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *mempcpy (void *__restrict __dest,
const void *__restrict __src, size_t __n)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern size_t strlen (const char *__s)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
extern size_t strnlen (const char *__string, size_t __maxlen)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
extern char *strerror (int __errnum) __attribute__ ((__nothrow__ , __leaf__));
# 421 "/usr/include/string.h" 3 4
extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) ;
extern char *strerror_l (int __errnum, locale_t __l) __attribute__ ((__nothrow__ , __leaf__));
# 1 "/usr/include/strings.h" 1 3 4
# 23 "/usr/include/strings.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 24 "/usr/include/strings.h" 2 3 4
extern int bcmp (const void *__s1, const void *__s2, size_t __n)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern void bcopy (const void *__src, void *__dest, size_t __n)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 68 "/usr/include/strings.h" 3 4
extern char *index (const char *__s, int __c)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
# 96 "/usr/include/strings.h" 3 4
extern char *rindex (const char *__s, int __c)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
extern int ffs (int __i) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int ffsl (long int __l) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
__extension__ extern int ffsll (long long int __ll)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int strcasecmp (const char *__s1, const char *__s2)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern int strncasecmp (const char *__s1, const char *__s2, size_t __n)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern int strcasecmp_l (const char *__s1, const char *__s2, locale_t __loc)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
extern int strncasecmp_l (const char *__s1, const char *__s2,
size_t __n, locale_t __loc)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4)));
# 433 "/usr/include/string.h" 2 3 4
extern void explicit_bzero (void *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern char *strsep (char **__restrict __stringp,
const char *__restrict __delim)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strsignal (int __sig) __attribute__ ((__nothrow__ , __leaf__));
extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *stpcpy (char *__restrict __dest, const char *__restrict __src)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *__stpncpy (char *__restrict __dest,
const char *__restrict __src, size_t __n)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *stpncpy (char *__restrict __dest,
const char *__restrict __src, size_t __n)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int strverscmp (const char *__s1, const char *__s2)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strfry (char *__string) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern void *memfrob (void *__s, size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 487 "/usr/include/string.h" 3 4
extern char *basename (const char *__filename) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 499 "/usr/include/string.h" 3 4
# 9 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 1
# 56 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
# 1 "/home/ubuntu/neovim/.deps/usr/include/uv/errno.h" 1
# 25 "/home/ubuntu/neovim/.deps/usr/include/uv/errno.h"
# 1 "/usr/include/errno.h" 1 3 4
# 28 "/usr/include/errno.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/errno.h" 1 3 4
# 26 "/usr/include/aarch64-linux-gnu/bits/errno.h" 3 4
# 1 "/usr/include/linux/errno.h" 1 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/errno.h" 1 3 4
# 1 "/usr/include/asm-generic/errno.h" 1 3 4
# 1 "/usr/include/asm-generic/errno-base.h" 1 3 4
# 6 "/usr/include/asm-generic/errno.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/errno.h" 2 3 4
# 1 "/usr/include/linux/errno.h" 2 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/errno.h" 2 3 4
# 29 "/usr/include/errno.h" 2 3 4
extern int *__errno_location (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern char *program_invocation_name;
extern char *program_invocation_short_name;
# 1 "/usr/include/aarch64-linux-gnu/bits/types/error_t.h" 1 3 4
# 22 "/usr/include/aarch64-linux-gnu/bits/types/error_t.h" 3 4
typedef int error_t;
# 49 "/usr/include/errno.h" 2 3 4
# 26 "/home/ubuntu/neovim/.deps/usr/include/uv/errno.h" 2
# 57 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 2
# 1 "/home/ubuntu/neovim/.deps/usr/include/uv/version.h" 1
# 58 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 2
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 143 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 3 4
typedef long int ptrdiff_t;
# 415 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 3 4
typedef struct {
long long __max_align_ll __attribute__((__aligned__(__alignof__(long long))));
long double __max_align_ld __attribute__((__aligned__(__alignof__(long double))));
# 426 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 3 4
} max_align_t;
# 59 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 2
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stdint.h" 1 3 4
# 9 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stdint.h" 3 4
# 1 "/usr/include/stdint.h" 1 3 4
# 26 "/usr/include/stdint.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4
# 27 "/usr/include/stdint.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wchar.h" 1 3 4
# 29 "/usr/include/stdint.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 30 "/usr/include/stdint.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/stdint-uintn.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/stdint-uintn.h" 3 4
typedef __uint8_t uint8_t;
typedef __uint16_t uint16_t;
typedef __uint32_t uint32_t;
typedef __uint64_t uint64_t;
# 38 "/usr/include/stdint.h" 2 3 4
typedef __int_least8_t int_least8_t;
typedef __int_least16_t int_least16_t;
typedef __int_least32_t int_least32_t;
typedef __int_least64_t int_least64_t;
typedef __uint_least8_t uint_least8_t;
typedef __uint_least16_t uint_least16_t;
typedef __uint_least32_t uint_least32_t;
typedef __uint_least64_t uint_least64_t;
typedef signed char int_fast8_t;
typedef long int int_fast16_t;
typedef long int int_fast32_t;
typedef long int int_fast64_t;
# 71 "/usr/include/stdint.h" 3 4
typedef unsigned char uint_fast8_t;
typedef unsigned long int uint_fast16_t;
typedef unsigned long int uint_fast32_t;
typedef unsigned long int uint_fast64_t;
# 87 "/usr/include/stdint.h" 3 4
typedef long int intptr_t;
typedef unsigned long int uintptr_t;
# 101 "/usr/include/stdint.h" 3 4
typedef __intmax_t intmax_t;
typedef __uintmax_t uintmax_t;
# 10 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stdint.h" 2 3 4
# 61 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 2
# 63 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
struct uv__queue {
struct uv__queue* next;
struct uv__queue* prev;
};
# 1 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 1
# 26 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h"
# 1 "/usr/include/aarch64-linux-gnu/sys/stat.h" 1 3 4
# 99 "/usr/include/aarch64-linux-gnu/sys/stat.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/stat.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/stat.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 28 "/usr/include/aarch64-linux-gnu/bits/stat.h" 2 3 4
# 58 "/usr/include/aarch64-linux-gnu/bits/stat.h" 3 4
# 58 "/usr/include/aarch64-linux-gnu/bits/stat.h" 3 4
struct stat
{
__dev_t st_dev;
__ino_t st_ino;
__mode_t st_mode;
__nlink_t st_nlink;
__uid_t st_uid;
__gid_t st_gid;
__dev_t st_rdev;
__dev_t __pad1;
__off_t st_size;
__blksize_t st_blksize;
int __pad2;
__blkcnt_t st_blocks;
struct timespec st_atim;
struct timespec st_mtim;
struct timespec st_ctim;
# 93 "/usr/include/aarch64-linux-gnu/bits/stat.h" 3 4
int __glibc_reserved[2];
};
struct stat64
{
__dev_t st_dev;
__ino64_t st_ino;
__mode_t st_mode;
__nlink_t st_nlink;
__uid_t st_uid;
__gid_t st_gid;
__dev_t st_rdev;
__dev_t __pad1;
__off64_t st_size;
__blksize_t st_blksize;
int __pad2;
__blkcnt64_t st_blocks;
struct timespec st_atim;
struct timespec st_mtim;
struct timespec st_ctim;
# 131 "/usr/include/aarch64-linux-gnu/bits/stat.h" 3 4
int __glibc_reserved[2];
};
# 102 "/usr/include/aarch64-linux-gnu/sys/stat.h" 2 3 4
# 205 "/usr/include/aarch64-linux-gnu/sys/stat.h" 3 4
extern int stat (const char *__restrict __file,
struct stat *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int fstat (int __fd, struct stat *__buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
# 224 "/usr/include/aarch64-linux-gnu/sys/stat.h" 3 4
extern int stat64 (const char *__restrict __file,
struct stat64 *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int fstat64 (int __fd, struct stat64 *__buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern int fstatat (int __fd, const char *__restrict __file,
struct stat *__restrict __buf, int __flag)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
# 249 "/usr/include/aarch64-linux-gnu/sys/stat.h" 3 4
extern int fstatat64 (int __fd, const char *__restrict __file,
struct stat64 *__restrict __buf, int __flag)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
extern int lstat (const char *__restrict __file,
struct stat *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
# 272 "/usr/include/aarch64-linux-gnu/sys/stat.h" 3 4
extern int lstat64 (const char *__restrict __file,
struct stat64 *__restrict __buf)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int chmod (const char *__file, __mode_t __mode)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int lchmod (const char *__file, __mode_t __mode)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int fchmod (int __fd, __mode_t __mode) __attribute__ ((__nothrow__ , __leaf__));
extern int fchmodat (int __fd, const char *__file, __mode_t __mode,
int __flag)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) ;
extern __mode_t umask (__mode_t __mask) __attribute__ ((__nothrow__ , __leaf__));
extern __mode_t getumask (void) __attribute__ ((__nothrow__ , __leaf__));
extern int mkdir (const char *__path, __mode_t __mode)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int mkdirat (int __fd, const char *__path, __mode_t __mode)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern int mknod (const char *__path, __mode_t __mode, __dev_t __dev)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int mknodat (int __fd, const char *__path, __mode_t __mode,
__dev_t __dev) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern int mkfifo (const char *__path, __mode_t __mode)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int mkfifoat (int __fd, const char *__path, __mode_t __mode)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern int utimensat (int __fd, const char *__path,
const struct timespec __times[2],
int __flags)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern int futimens (int __fd, const struct timespec __times[2]) __attribute__ ((__nothrow__ , __leaf__));
# 395 "/usr/include/aarch64-linux-gnu/sys/stat.h" 3 4
extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
extern int __xstat (int __ver, const char *__filename,
struct stat *__stat_buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
extern int __lxstat (int __ver, const char *__filename,
struct stat *__stat_buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
extern int __fxstatat (int __ver, int __fildes, const char *__filename,
struct stat *__stat_buf, int __flag)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4)));
# 428 "/usr/include/aarch64-linux-gnu/sys/stat.h" 3 4
extern int __fxstat64 (int __ver, int __fildes, struct stat64 *__stat_buf)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
extern int __xstat64 (int __ver, const char *__filename,
struct stat64 *__stat_buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
extern int __lxstat64 (int __ver, const char *__filename,
struct stat64 *__stat_buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
extern int __fxstatat64 (int __ver, int __fildes, const char *__filename,
struct stat64 *__stat_buf, int __flag)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4)));
extern int __xmknod (int __ver, const char *__path, __mode_t __mode,
__dev_t *__dev) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4)));
extern int __xmknodat (int __ver, int __fd, const char *__path,
__mode_t __mode, __dev_t *__dev)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 5)));
# 1 "/usr/include/aarch64-linux-gnu/bits/statx.h" 1 3 4
# 31 "/usr/include/aarch64-linux-gnu/bits/statx.h" 3 4
# 1 "/usr/include/linux/stat.h" 1 3 4
# 1 "/usr/include/linux/types.h" 1 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/types.h" 1 3 4
# 1 "/usr/include/asm-generic/types.h" 1 3 4
# 1 "/usr/include/asm-generic/int-ll64.h" 1 3 4
# 12 "/usr/include/asm-generic/int-ll64.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/bitsperlong.h" 1 3 4
# 22 "/usr/include/aarch64-linux-gnu/asm/bitsperlong.h" 3 4
# 1 "/usr/include/asm-generic/bitsperlong.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/asm/bitsperlong.h" 2 3 4
# 13 "/usr/include/asm-generic/int-ll64.h" 2 3 4
typedef __signed__ char __s8;
typedef unsigned char __u8;
typedef __signed__ short __s16;
typedef unsigned short __u16;
typedef __signed__ int __s32;
typedef unsigned int __u32;
__extension__ typedef __signed__ long long __s64;
__extension__ typedef unsigned long long __u64;
# 8 "/usr/include/asm-generic/types.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/types.h" 2 3 4
# 6 "/usr/include/linux/types.h" 2 3 4
# 1 "/usr/include/linux/posix_types.h" 1 3 4
# 1 "/usr/include/linux/stddef.h" 1 3 4
# 6 "/usr/include/linux/posix_types.h" 2 3 4
# 25 "/usr/include/linux/posix_types.h" 3 4
typedef struct {
unsigned long fds_bits[1024 / (8 * sizeof(long))];
} __kernel_fd_set;
typedef void (*__kernel_sighandler_t)(int);
typedef int __kernel_key_t;
typedef int __kernel_mqd_t;
# 1 "/usr/include/aarch64-linux-gnu/asm/posix_types.h" 1 3 4
typedef unsigned short __kernel_old_uid_t;
typedef unsigned short __kernel_old_gid_t;
# 1 "/usr/include/asm-generic/posix_types.h" 1 3 4
# 15 "/usr/include/asm-generic/posix_types.h" 3 4
typedef long __kernel_long_t;
typedef unsigned long __kernel_ulong_t;
typedef __kernel_ulong_t __kernel_ino_t;
typedef unsigned int __kernel_mode_t;
typedef int __kernel_pid_t;
typedef int __kernel_ipc_pid_t;
typedef unsigned int __kernel_uid_t;
typedef unsigned int __kernel_gid_t;
typedef __kernel_long_t __kernel_suseconds_t;
typedef int __kernel_daddr_t;
typedef unsigned int __kernel_uid32_t;
typedef unsigned int __kernel_gid32_t;
# 59 "/usr/include/asm-generic/posix_types.h" 3 4
typedef unsigned int __kernel_old_dev_t;
# 72 "/usr/include/asm-generic/posix_types.h" 3 4
typedef __kernel_ulong_t __kernel_size_t;
typedef __kernel_long_t __kernel_ssize_t;
typedef __kernel_long_t __kernel_ptrdiff_t;
typedef struct {
int val[2];
} __kernel_fsid_t;
typedef __kernel_long_t __kernel_off_t;
typedef long long __kernel_loff_t;
typedef __kernel_long_t __kernel_time_t;
typedef long long __kernel_time64_t;
typedef __kernel_long_t __kernel_clock_t;
typedef int __kernel_timer_t;
typedef int __kernel_clockid_t;
typedef char * __kernel_caddr_t;
typedef unsigned short __kernel_uid16_t;
typedef unsigned short __kernel_gid16_t;
# 10 "/usr/include/aarch64-linux-gnu/asm/posix_types.h" 2 3 4
# 37 "/usr/include/linux/posix_types.h" 2 3 4
# 10 "/usr/include/linux/types.h" 2 3 4
# 24 "/usr/include/linux/types.h" 3 4
typedef __u16 __le16;
typedef __u16 __be16;
typedef __u32 __le32;
typedef __u32 __be32;
typedef __u64 __le64;
typedef __u64 __be64;
typedef __u16 __sum16;
typedef __u32 __wsum;
# 47 "/usr/include/linux/types.h" 3 4
typedef unsigned __poll_t;
# 6 "/usr/include/linux/stat.h" 2 3 4
# 56 "/usr/include/linux/stat.h" 3 4
struct statx_timestamp {
__s64 tv_sec;
__u32 tv_nsec;
__s32 __reserved;
};
# 99 "/usr/include/linux/stat.h" 3 4
struct statx {
__u32 stx_mask;
__u32 stx_blksize;
__u64 stx_attributes;
__u32 stx_nlink;
__u32 stx_uid;
__u32 stx_gid;
__u16 stx_mode;
__u16 __spare0[1];
__u64 stx_ino;
__u64 stx_size;
__u64 stx_blocks;
__u64 stx_attributes_mask;
struct statx_timestamp stx_atime;
struct statx_timestamp stx_btime;
struct statx_timestamp stx_ctime;
struct statx_timestamp stx_mtime;
__u32 stx_rdev_major;
__u32 stx_rdev_minor;
__u32 stx_dev_major;
__u32 stx_dev_minor;
__u64 __spare2[14];
};
# 32 "/usr/include/aarch64-linux-gnu/bits/statx.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/statx-generic.h" 1 3 4
# 25 "/usr/include/aarch64-linux-gnu/bits/statx-generic.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_statx_timestamp.h" 1 3 4
# 26 "/usr/include/aarch64-linux-gnu/bits/statx-generic.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_statx.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/statx-generic.h" 2 3 4
# 53 "/usr/include/aarch64-linux-gnu/bits/statx-generic.h" 3 4
int statx (int __dirfd, const char *__restrict __path, int __flags,
unsigned int __mask, struct statx *__restrict __buf)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 5)));
# 39 "/usr/include/aarch64-linux-gnu/bits/statx.h" 2 3 4
# 447 "/usr/include/aarch64-linux-gnu/sys/stat.h" 2 3 4
# 534 "/usr/include/aarch64-linux-gnu/sys/stat.h" 3 4
# 27 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2
# 1 "/usr/include/fcntl.h" 1 3 4
# 28 "/usr/include/fcntl.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/fcntl.h" 1 3 4
# 40 "/usr/include/aarch64-linux-gnu/bits/fcntl.h" 3 4
struct flock
{
short int l_type;
short int l_whence;
__off_t l_start;
__off_t l_len;
__pid_t l_pid;
};
struct flock64
{
short int l_type;
short int l_whence;
__off64_t l_start;
__off64_t l_len;
__pid_t l_pid;
};
# 1 "/usr/include/aarch64-linux-gnu/bits/fcntl-linux.h" 1 3 4
# 38 "/usr/include/aarch64-linux-gnu/bits/fcntl-linux.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_iovec.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/bits/types/struct_iovec.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/types/struct_iovec.h" 2 3 4
struct iovec
{
void *iov_base;
size_t iov_len;
};
# 39 "/usr/include/aarch64-linux-gnu/bits/fcntl-linux.h" 2 3 4
# 265 "/usr/include/aarch64-linux-gnu/bits/fcntl-linux.h" 3 4
enum __pid_type
{
F_OWNER_TID = 0,
F_OWNER_PID,
F_OWNER_PGRP,
F_OWNER_GID = F_OWNER_PGRP
};
struct f_owner_ex
{
enum __pid_type type;
__pid_t pid;
};
# 353 "/usr/include/aarch64-linux-gnu/bits/fcntl-linux.h" 3 4
# 1 "/usr/include/linux/falloc.h" 1 3 4
# 354 "/usr/include/aarch64-linux-gnu/bits/fcntl-linux.h" 2 3 4
struct file_handle
{
unsigned int handle_bytes;
int handle_type;
unsigned char f_handle[0];
};
# 392 "/usr/include/aarch64-linux-gnu/bits/fcntl-linux.h" 3 4
extern __ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
__attribute__ ((__nothrow__ , __leaf__));
extern int sync_file_range (int __fd, __off64_t __offset, __off64_t __count,
unsigned int __flags);
extern __ssize_t vmsplice (int __fdout, const struct iovec *__iov,
size_t __count, unsigned int __flags);
extern __ssize_t splice (int __fdin, __off64_t *__offin, int __fdout,
__off64_t *__offout, size_t __len,
unsigned int __flags);
extern __ssize_t tee (int __fdin, int __fdout, size_t __len,
unsigned int __flags);
extern int fallocate (int __fd, int __mode, __off_t __offset, __off_t __len);
# 447 "/usr/include/aarch64-linux-gnu/bits/fcntl-linux.h" 3 4
extern int fallocate64 (int __fd, int __mode, __off64_t __offset,
__off64_t __len);
extern int name_to_handle_at (int __dfd, const char *__name,
struct file_handle *__handle, int *__mnt_id,
int __flags) __attribute__ ((__nothrow__ , __leaf__));
extern int open_by_handle_at (int __mountdirfd, struct file_handle *__handle,
int __flags);
# 61 "/usr/include/aarch64-linux-gnu/bits/fcntl.h" 2 3 4
# 36 "/usr/include/fcntl.h" 2 3 4
# 78 "/usr/include/fcntl.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/stat.h" 1 3 4
# 79 "/usr/include/fcntl.h" 2 3 4
# 148 "/usr/include/fcntl.h" 3 4
extern int fcntl (int __fd, int __cmd, ...);
# 157 "/usr/include/fcntl.h" 3 4
extern int fcntl64 (int __fd, int __cmd, ...);
# 168 "/usr/include/fcntl.h" 3 4
extern int open (const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1)));
# 178 "/usr/include/fcntl.h" 3 4
extern int open64 (const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1)));
# 192 "/usr/include/fcntl.h" 3 4
extern int openat (int __fd, const char *__file, int __oflag, ...)
__attribute__ ((__nonnull__ (2)));
# 203 "/usr/include/fcntl.h" 3 4
extern int openat64 (int __fd, const char *__file, int __oflag, ...)
__attribute__ ((__nonnull__ (2)));
# 214 "/usr/include/fcntl.h" 3 4
extern int creat (const char *__file, mode_t __mode) __attribute__ ((__nonnull__ (1)));
# 224 "/usr/include/fcntl.h" 3 4
extern int creat64 (const char *__file, mode_t __mode) __attribute__ ((__nonnull__ (1)));
# 243 "/usr/include/fcntl.h" 3 4
extern int lockf (int __fd, int __cmd, off_t __len);
# 252 "/usr/include/fcntl.h" 3 4
extern int lockf64 (int __fd, int __cmd, off64_t __len);
extern int posix_fadvise (int __fd, off_t __offset, off_t __len,
int __advise) __attribute__ ((__nothrow__ , __leaf__));
# 272 "/usr/include/fcntl.h" 3 4
extern int posix_fadvise64 (int __fd, off64_t __offset, off64_t __len,
int __advise) __attribute__ ((__nothrow__ , __leaf__));
# 282 "/usr/include/fcntl.h" 3 4
extern int posix_fallocate (int __fd, off_t __offset, off_t __len);
# 293 "/usr/include/fcntl.h" 3 4
extern int posix_fallocate64 (int __fd, off64_t __offset, off64_t __len);
# 304 "/usr/include/fcntl.h" 3 4
# 28 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2
# 1 "/usr/include/dirent.h" 1 3 4
# 27 "/usr/include/dirent.h" 3 4
# 61 "/usr/include/dirent.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/dirent.h" 1 3 4
# 22 "/usr/include/aarch64-linux-gnu/bits/dirent.h" 3 4
struct dirent
{
__ino_t d_ino;
__off_t d_off;
unsigned short int d_reclen;
unsigned char d_type;
char d_name[256];
};
struct dirent64
{
__ino64_t d_ino;
__off64_t d_off;
unsigned short int d_reclen;
unsigned char d_type;
char d_name[256];
};
# 62 "/usr/include/dirent.h" 2 3 4
# 97 "/usr/include/dirent.h" 3 4
enum
{
DT_UNKNOWN = 0,
DT_FIFO = 1,
DT_CHR = 2,
DT_DIR = 4,
DT_BLK = 6,
DT_REG = 8,
DT_LNK = 10,
DT_SOCK = 12,
DT_WHT = 14
};
# 127 "/usr/include/dirent.h" 3 4
typedef struct __dirstream DIR;
extern DIR *opendir (const char *__name) __attribute__ ((__nonnull__ (1)));
extern DIR *fdopendir (int __fd);
extern int closedir (DIR *__dirp) __attribute__ ((__nonnull__ (1)));
# 162 "/usr/include/dirent.h" 3 4
extern struct dirent *readdir (DIR *__dirp) __attribute__ ((__nonnull__ (1)));
# 173 "/usr/include/dirent.h" 3 4
extern struct dirent64 *readdir64 (DIR *__dirp) __attribute__ ((__nonnull__ (1)));
# 183 "/usr/include/dirent.h" 3 4
extern int readdir_r (DIR *__restrict __dirp,
struct dirent *__restrict __entry,
struct dirent **__restrict __result)
__attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__deprecated__));
# 201 "/usr/include/dirent.h" 3 4
extern int readdir64_r (DIR *__restrict __dirp,
struct dirent64 *__restrict __entry,
struct dirent64 **__restrict __result)
__attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__deprecated__));
extern void rewinddir (DIR *__dirp) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern void seekdir (DIR *__dirp, long int __pos) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern long int telldir (DIR *__dirp) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int dirfd (DIR *__dirp) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 233 "/usr/include/dirent.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/posix1_lim.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/posix1_lim.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 28 "/usr/include/aarch64-linux-gnu/bits/posix1_lim.h" 2 3 4
# 161 "/usr/include/aarch64-linux-gnu/bits/posix1_lim.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/local_lim.h" 1 3 4
# 39 "/usr/include/aarch64-linux-gnu/bits/local_lim.h" 3 4
# 1 "/usr/include/linux/limits.h" 1 3 4
# 40 "/usr/include/aarch64-linux-gnu/bits/local_lim.h" 2 3 4
# 162 "/usr/include/aarch64-linux-gnu/bits/posix1_lim.h" 2 3 4
# 234 "/usr/include/dirent.h" 2 3 4
# 245 "/usr/include/dirent.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 246 "/usr/include/dirent.h" 2 3 4
# 255 "/usr/include/dirent.h" 3 4
extern int scandir (const char *__restrict __dir,
struct dirent ***__restrict __namelist,
int (*__selector) (const struct dirent *),
int (*__cmp) (const struct dirent **,
const struct dirent **))
__attribute__ ((__nonnull__ (1, 2)));
# 278 "/usr/include/dirent.h" 3 4
extern int scandir64 (const char *__restrict __dir,
struct dirent64 ***__restrict __namelist,
int (*__selector) (const struct dirent64 *),
int (*__cmp) (const struct dirent64 **,
const struct dirent64 **))
__attribute__ ((__nonnull__ (1, 2)));
# 293 "/usr/include/dirent.h" 3 4
extern int scandirat (int __dfd, const char *__restrict __dir,
struct dirent ***__restrict __namelist,
int (*__selector) (const struct dirent *),
int (*__cmp) (const struct dirent **,
const struct dirent **))
__attribute__ ((__nonnull__ (2, 3)));
# 315 "/usr/include/dirent.h" 3 4
extern int scandirat64 (int __dfd, const char *__restrict __dir,
struct dirent64 ***__restrict __namelist,
int (*__selector) (const struct dirent64 *),
int (*__cmp) (const struct dirent64 **,
const struct dirent64 **))
__attribute__ ((__nonnull__ (2, 3)));
extern int alphasort (const struct dirent **__e1,
const struct dirent **__e2)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 340 "/usr/include/dirent.h" 3 4
extern int alphasort64 (const struct dirent64 **__e1,
const struct dirent64 **__e2)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 353 "/usr/include/dirent.h" 3 4
extern __ssize_t getdirentries (int __fd, char *__restrict __buf,
size_t __nbytes,
__off_t *__restrict __basep)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4)));
# 370 "/usr/include/dirent.h" 3 4
extern __ssize_t getdirentries64 (int __fd, char *__restrict __buf,
size_t __nbytes,
__off64_t *__restrict __basep)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4)));
extern int versionsort (const struct dirent **__e1,
const struct dirent **__e2)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 396 "/usr/include/dirent.h" 3 4
extern int versionsort64 (const struct dirent64 **__e1,
const struct dirent64 **__e2)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
# 1 "/usr/include/aarch64-linux-gnu/bits/dirent_ext.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/bits/dirent_ext.h" 3 4
extern __ssize_t getdents64 (int __fd, void *__buffer, size_t __length)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
# 405 "/usr/include/dirent.h" 2 3 4
# 29 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2
# 1 "/usr/include/aarch64-linux-gnu/sys/socket.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/sys/socket.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 29 "/usr/include/aarch64-linux-gnu/sys/socket.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/socket.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/socket.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 28 "/usr/include/aarch64-linux-gnu/bits/socket.h" 2 3 4
typedef __socklen_t socklen_t;
# 1 "/usr/include/aarch64-linux-gnu/bits/socket_type.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/socket_type.h" 3 4
enum __socket_type
{
SOCK_STREAM = 1,
SOCK_DGRAM = 2,
SOCK_RAW = 3,
SOCK_RDM = 4,
SOCK_SEQPACKET = 5,
SOCK_DCCP = 6,
SOCK_PACKET = 10,
SOCK_CLOEXEC = 02000000,
SOCK_NONBLOCK = 00004000
};
# 39 "/usr/include/aarch64-linux-gnu/bits/socket.h" 2 3 4
# 175 "/usr/include/aarch64-linux-gnu/bits/socket.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/sockaddr.h" 1 3 4
# 28 "/usr/include/aarch64-linux-gnu/bits/sockaddr.h" 3 4
typedef unsigned short int sa_family_t;
# 176 "/usr/include/aarch64-linux-gnu/bits/socket.h" 2 3 4
struct sockaddr
{
sa_family_t sa_family;
char sa_data[14];
};
# 191 "/usr/include/aarch64-linux-gnu/bits/socket.h" 3 4
struct sockaddr_storage
{
sa_family_t ss_family;
char __ss_padding[(128 - (sizeof (unsigned short int)) - sizeof (unsigned long int))];
unsigned long int __ss_align;
};
enum
{
MSG_OOB = 0x01,
MSG_PEEK = 0x02,
MSG_DONTROUTE = 0x04,
MSG_TRYHARD = MSG_DONTROUTE,
MSG_CTRUNC = 0x08,
MSG_PROXY = 0x10,
MSG_TRUNC = 0x20,
MSG_DONTWAIT = 0x40,
MSG_EOR = 0x80,
MSG_WAITALL = 0x100,
MSG_FIN = 0x200,
MSG_SYN = 0x400,
MSG_CONFIRM = 0x800,
MSG_RST = 0x1000,
MSG_ERRQUEUE = 0x2000,
MSG_NOSIGNAL = 0x4000,
MSG_MORE = 0x8000,
MSG_WAITFORONE = 0x10000,
MSG_BATCH = 0x40000,
MSG_ZEROCOPY = 0x4000000,
MSG_FASTOPEN = 0x20000000,
MSG_CMSG_CLOEXEC = 0x40000000
};
struct msghdr
{
void *msg_name;
socklen_t msg_namelen;
struct iovec *msg_iov;
size_t msg_iovlen;
void *msg_control;
size_t msg_controllen;
int msg_flags;
};
struct cmsghdr
{
size_t cmsg_len;
int cmsg_level;
int cmsg_type;
__extension__ unsigned char __cmsg_data [];
};
# 305 "/usr/include/aarch64-linux-gnu/bits/socket.h" 3 4
extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr,
struct cmsghdr *__cmsg) __attribute__ ((__nothrow__ , __leaf__));
# 332 "/usr/include/aarch64-linux-gnu/bits/socket.h" 3 4
enum
{
SCM_RIGHTS = 0x01
, SCM_CREDENTIALS = 0x02
};
struct ucred
{
pid_t pid;
uid_t uid;
gid_t gid;
};
# 1 "/usr/include/aarch64-linux-gnu/asm/socket.h" 1 3 4
# 1 "/usr/include/asm-generic/socket.h" 1 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/sockios.h" 1 3 4
# 1 "/usr/include/asm-generic/sockios.h" 1 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/sockios.h" 2 3 4
# 7 "/usr/include/asm-generic/socket.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/socket.h" 2 3 4
# 355 "/usr/include/aarch64-linux-gnu/bits/socket.h" 2 3 4
struct linger
{
int l_onoff;
int l_linger;
};
# 34 "/usr/include/aarch64-linux-gnu/sys/socket.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_osockaddr.h" 1 3 4
struct osockaddr
{
unsigned short int sa_family;
unsigned char sa_data[14];
};
# 37 "/usr/include/aarch64-linux-gnu/sys/socket.h" 2 3 4
enum
{
SHUT_RD = 0,
SHUT_WR,
SHUT_RDWR
};
# 79 "/usr/include/aarch64-linux-gnu/sys/socket.h" 3 4
typedef union { struct sockaddr *__restrict __sockaddr__; struct sockaddr_at *__restrict __sockaddr_at__; struct sockaddr_ax25 *__restrict __sockaddr_ax25__; struct sockaddr_dl *__restrict __sockaddr_dl__; struct sockaddr_eon *__restrict __sockaddr_eon__; struct sockaddr_in *__restrict __sockaddr_in__; struct sockaddr_in6 *__restrict __sockaddr_in6__; struct sockaddr_inarp *__restrict __sockaddr_inarp__; struct sockaddr_ipx *__restrict __sockaddr_ipx__; struct sockaddr_iso *__restrict __sockaddr_iso__; struct sockaddr_ns *__restrict __sockaddr_ns__; struct sockaddr_un *__restrict __sockaddr_un__; struct sockaddr_x25 *__restrict __sockaddr_x25__;
} __SOCKADDR_ARG __attribute__ ((__transparent_union__));
typedef union { const struct sockaddr *__restrict __sockaddr__; const struct sockaddr_at *__restrict __sockaddr_at__; const struct sockaddr_ax25 *__restrict __sockaddr_ax25__; const struct sockaddr_dl *__restrict __sockaddr_dl__; const struct sockaddr_eon *__restrict __sockaddr_eon__; const struct sockaddr_in *__restrict __sockaddr_in__; const struct sockaddr_in6 *__restrict __sockaddr_in6__; const struct sockaddr_inarp *__restrict __sockaddr_inarp__; const struct sockaddr_ipx *__restrict __sockaddr_ipx__; const struct sockaddr_iso *__restrict __sockaddr_iso__; const struct sockaddr_ns *__restrict __sockaddr_ns__; const struct sockaddr_un *__restrict __sockaddr_un__; const struct sockaddr_x25 *__restrict __sockaddr_x25__;
} __CONST_SOCKADDR_ARG __attribute__ ((__transparent_union__));
struct mmsghdr
{
struct msghdr msg_hdr;
unsigned int msg_len;
};
extern int socket (int __domain, int __type, int __protocol) __attribute__ ((__nothrow__ , __leaf__));
extern int socketpair (int __domain, int __type, int __protocol,
int __fds[2]) __attribute__ ((__nothrow__ , __leaf__));
extern int bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
__attribute__ ((__nothrow__ , __leaf__));
extern int getsockname (int __fd, __SOCKADDR_ARG __addr,
socklen_t *__restrict __len) __attribute__ ((__nothrow__ , __leaf__));
# 126 "/usr/include/aarch64-linux-gnu/sys/socket.h" 3 4
extern int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len);
extern int getpeername (int __fd, __SOCKADDR_ARG __addr,
socklen_t *__restrict __len) __attribute__ ((__nothrow__ , __leaf__));
extern ssize_t send (int __fd, const void *__buf, size_t __n, int __flags);
extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags);
extern ssize_t sendto (int __fd, const void *__buf, size_t __n,
int __flags, __CONST_SOCKADDR_ARG __addr,
socklen_t __addr_len);
# 163 "/usr/include/aarch64-linux-gnu/sys/socket.h" 3 4
extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n,
int __flags, __SOCKADDR_ARG __addr,
socklen_t *__restrict __addr_len);
extern ssize_t sendmsg (int __fd, const struct msghdr *__message,
int __flags);
extern int sendmmsg (int __fd, struct mmsghdr *__vmessages,
unsigned int __vlen, int __flags);
extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);
extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
unsigned int __vlen, int __flags,
struct timespec *__tmo);
extern int getsockopt (int __fd, int __level, int __optname,
void *__restrict __optval,
socklen_t *__restrict __optlen) __attribute__ ((__nothrow__ , __leaf__));
extern int setsockopt (int __fd, int __level, int __optname,
const void *__optval, socklen_t __optlen) __attribute__ ((__nothrow__ , __leaf__));
extern int listen (int __fd, int __n) __attribute__ ((__nothrow__ , __leaf__));
# 232 "/usr/include/aarch64-linux-gnu/sys/socket.h" 3 4
extern int accept (int __fd, __SOCKADDR_ARG __addr,
socklen_t *__restrict __addr_len);
extern int accept4 (int __fd, __SOCKADDR_ARG __addr,
socklen_t *__restrict __addr_len, int __flags);
# 250 "/usr/include/aarch64-linux-gnu/sys/socket.h" 3 4
extern int shutdown (int __fd, int __how) __attribute__ ((__nothrow__ , __leaf__));
extern int sockatmark (int __fd) __attribute__ ((__nothrow__ , __leaf__));
extern int isfdtype (int __fd, int __fdtype) __attribute__ ((__nothrow__ , __leaf__));
# 272 "/usr/include/aarch64-linux-gnu/sys/socket.h" 3 4
# 31 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2
# 1 "/usr/include/netinet/in.h" 1 3 4
# 27 "/usr/include/netinet/in.h" 3 4
typedef uint32_t in_addr_t;
struct in_addr
{
in_addr_t s_addr;
};
# 1 "/usr/include/aarch64-linux-gnu/bits/in.h" 1 3 4
# 142 "/usr/include/aarch64-linux-gnu/bits/in.h" 3 4
struct ip_opts
{
struct in_addr ip_dst;
char ip_opts[40];
};
struct ip_mreqn
{
struct in_addr imr_multiaddr;
struct in_addr imr_address;
int imr_ifindex;
};
struct in_pktinfo
{
int ipi_ifindex;
struct in_addr ipi_spec_dst;
struct in_addr ipi_addr;
};
# 38 "/usr/include/netinet/in.h" 2 3 4
enum
{
IPPROTO_IP = 0,
IPPROTO_ICMP = 1,
IPPROTO_IGMP = 2,
IPPROTO_IPIP = 4,
IPPROTO_TCP = 6,
IPPROTO_EGP = 8,
IPPROTO_PUP = 12,
IPPROTO_UDP = 17,
IPPROTO_IDP = 22,
IPPROTO_TP = 29,
IPPROTO_DCCP = 33,
IPPROTO_IPV6 = 41,
IPPROTO_RSVP = 46,
IPPROTO_GRE = 47,
IPPROTO_ESP = 50,
IPPROTO_AH = 51,
IPPROTO_MTP = 92,
IPPROTO_BEETPH = 94,
IPPROTO_ENCAP = 98,
IPPROTO_PIM = 103,
IPPROTO_COMP = 108,
IPPROTO_SCTP = 132,
IPPROTO_UDPLITE = 136,
IPPROTO_MPLS = 137,
IPPROTO_RAW = 255,
IPPROTO_MAX
};
enum
{
IPPROTO_HOPOPTS = 0,
IPPROTO_ROUTING = 43,
IPPROTO_FRAGMENT = 44,
IPPROTO_ICMPV6 = 58,
IPPROTO_NONE = 59,
IPPROTO_DSTOPTS = 60,
IPPROTO_MH = 135
};
typedef uint16_t in_port_t;
enum
{
IPPORT_ECHO = 7,
IPPORT_DISCARD = 9,
IPPORT_SYSTAT = 11,
IPPORT_DAYTIME = 13,
IPPORT_NETSTAT = 15,
IPPORT_FTP = 21,
IPPORT_TELNET = 23,
IPPORT_SMTP = 25,
IPPORT_TIMESERVER = 37,
IPPORT_NAMESERVER = 42,
IPPORT_WHOIS = 43,
IPPORT_MTP = 57,
IPPORT_TFTP = 69,
IPPORT_RJE = 77,
IPPORT_FINGER = 79,
IPPORT_TTYLINK = 87,
IPPORT_SUPDUP = 95,
IPPORT_EXECSERVER = 512,
IPPORT_LOGINSERVER = 513,
IPPORT_CMDSERVER = 514,
IPPORT_EFSSERVER = 520,
IPPORT_BIFFUDP = 512,
IPPORT_WHOSERVER = 513,
IPPORT_ROUTESERVER = 520,
IPPORT_RESERVED = 1024,
IPPORT_USERRESERVED = 5000
};
# 212 "/usr/include/netinet/in.h" 3 4
struct in6_addr
{
union
{
uint8_t __u6_addr8[16];
uint16_t __u6_addr16[8];
uint32_t __u6_addr32[4];
} __in6_u;
};
extern const struct in6_addr in6addr_any;
extern const struct in6_addr in6addr_loopback;
# 238 "/usr/include/netinet/in.h" 3 4
struct sockaddr_in
{
sa_family_t sin_family;
in_port_t sin_port;
struct in_addr sin_addr;
unsigned char sin_zero[sizeof (struct sockaddr)
- (sizeof (unsigned short int))
- sizeof (in_port_t)
- sizeof (struct in_addr)];
};
struct sockaddr_in6
{
sa_family_t sin6_family;
in_port_t sin6_port;
uint32_t sin6_flowinfo;
struct in6_addr sin6_addr;
uint32_t sin6_scope_id;
};
struct ip_mreq
{
struct in_addr imr_multiaddr;
struct in_addr imr_interface;
};
struct ip_mreq_source
{
struct in_addr imr_multiaddr;
struct in_addr imr_interface;
struct in_addr imr_sourceaddr;
};
struct ipv6_mreq
{
struct in6_addr ipv6mr_multiaddr;
unsigned int ipv6mr_interface;
};
struct group_req
{
uint32_t gr_interface;
struct sockaddr_storage gr_group;
};
struct group_source_req
{
uint32_t gsr_interface;
struct sockaddr_storage gsr_group;
struct sockaddr_storage gsr_source;
};
struct ip_msfilter
{
struct in_addr imsf_multiaddr;
struct in_addr imsf_interface;
uint32_t imsf_fmode;
uint32_t imsf_numsrc;
struct in_addr imsf_slist[1];
};
struct group_filter
{
uint32_t gf_interface;
struct sockaddr_storage gf_group;
uint32_t gf_fmode;
uint32_t gf_numsrc;
struct sockaddr_storage gf_slist[1];
};
# 375 "/usr/include/netinet/in.h" 3 4
extern uint32_t ntohl (uint32_t __netlong) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern uint16_t ntohs (uint16_t __netshort)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern uint32_t htonl (uint32_t __hostlong)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern uint16_t htons (uint16_t __hostshort)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
# 1 "/usr/include/aarch64-linux-gnu/bits/byteswap.h" 1 3 4
# 387 "/usr/include/netinet/in.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/uintn-identity.h" 1 3 4
# 388 "/usr/include/netinet/in.h" 2 3 4
# 503 "/usr/include/netinet/in.h" 3 4
extern int bindresvport (int __sockfd, struct sockaddr_in *__sock_in) __attribute__ ((__nothrow__ , __leaf__));
extern int bindresvport6 (int __sockfd, struct sockaddr_in6 *__sock_in)
__attribute__ ((__nothrow__ , __leaf__));
# 533 "/usr/include/netinet/in.h" 3 4
struct cmsghdr;
struct in6_pktinfo
{
struct in6_addr ipi6_addr;
unsigned int ipi6_ifindex;
};
struct ip6_mtuinfo
{
struct sockaddr_in6 ip6m_addr;
uint32_t ip6m_mtu;
};
extern int inet6_option_space (int __nbytes)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));
extern int inet6_option_init (void *__bp, struct cmsghdr **__cmsgp,
int __type) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));
extern int inet6_option_append (struct cmsghdr *__cmsg,
const uint8_t *__typep, int __multx,
int __plusy) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));
extern uint8_t *inet6_option_alloc (struct cmsghdr *__cmsg, int __datalen,
int __multx, int __plusy)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));
extern int inet6_option_next (const struct cmsghdr *__cmsg,
uint8_t **__tptrp)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));
extern int inet6_option_find (const struct cmsghdr *__cmsg,
uint8_t **__tptrp, int __type)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));
extern int inet6_opt_init (void *__extbuf, socklen_t __extlen) __attribute__ ((__nothrow__ , __leaf__));
extern int inet6_opt_append (void *__extbuf, socklen_t __extlen, int __offset,
uint8_t __type, socklen_t __len, uint8_t __align,
void **__databufp) __attribute__ ((__nothrow__ , __leaf__));
extern int inet6_opt_finish (void *__extbuf, socklen_t __extlen, int __offset)
__attribute__ ((__nothrow__ , __leaf__));
extern int inet6_opt_set_val (void *__databuf, int __offset, void *__val,
socklen_t __vallen) __attribute__ ((__nothrow__ , __leaf__));
extern int inet6_opt_next (void *__extbuf, socklen_t __extlen, int __offset,
uint8_t *__typep, socklen_t *__lenp,
void **__databufp) __attribute__ ((__nothrow__ , __leaf__));
extern int inet6_opt_find (void *__extbuf, socklen_t __extlen, int __offset,
uint8_t __type, socklen_t *__lenp,
void **__databufp) __attribute__ ((__nothrow__ , __leaf__));
extern int inet6_opt_get_val (void *__databuf, int __offset, void *__val,
socklen_t __vallen) __attribute__ ((__nothrow__ , __leaf__));
extern socklen_t inet6_rth_space (int __type, int __segments) __attribute__ ((__nothrow__ , __leaf__));
extern void *inet6_rth_init (void *__bp, socklen_t __bp_len, int __type,
int __segments) __attribute__ ((__nothrow__ , __leaf__));
extern int inet6_rth_add (void *__bp, const struct in6_addr *__addr) __attribute__ ((__nothrow__ , __leaf__));
extern int inet6_rth_reverse (const void *__in, void *__out) __attribute__ ((__nothrow__ , __leaf__));
extern int inet6_rth_segments (const void *__bp) __attribute__ ((__nothrow__ , __leaf__));
extern struct in6_addr *inet6_rth_getaddr (const void *__bp, int __index)
__attribute__ ((__nothrow__ , __leaf__));
extern int getipv4sourcefilter (int __s, struct in_addr __interface_addr,
struct in_addr __group, uint32_t *__fmode,
uint32_t *__numsrc, struct in_addr *__slist)
__attribute__ ((__nothrow__ , __leaf__));
extern int setipv4sourcefilter (int __s, struct in_addr __interface_addr,
struct in_addr __group, uint32_t __fmode,
uint32_t __numsrc,
const struct in_addr *__slist)
__attribute__ ((__nothrow__ , __leaf__));
extern int getsourcefilter (int __s, uint32_t __interface_addr,
const struct sockaddr *__group,
socklen_t __grouplen, uint32_t *__fmode,
uint32_t *__numsrc,
struct sockaddr_storage *__slist) __attribute__ ((__nothrow__ , __leaf__));
extern int setsourcefilter (int __s, uint32_t __interface_addr,
const struct sockaddr *__group,
socklen_t __grouplen, uint32_t __fmode,
uint32_t __numsrc,
const struct sockaddr_storage *__slist) __attribute__ ((__nothrow__ , __leaf__));
# 32 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2
# 1 "/usr/include/netinet/tcp.h" 1 3 4
# 93 "/usr/include/netinet/tcp.h" 3 4
typedef uint32_t tcp_seq;
struct tcphdr
{
__extension__ union
{
struct
{
uint16_t th_sport;
uint16_t th_dport;
tcp_seq th_seq;
tcp_seq th_ack;
uint8_t th_x2:4;
uint8_t th_off:4;
uint8_t th_flags;
uint16_t th_win;
uint16_t th_sum;
uint16_t th_urp;
};
struct
{
uint16_t source;
uint16_t dest;
uint32_t seq;
uint32_t ack_seq;
uint16_t res1:4;
uint16_t doff:4;
uint16_t fin:1;
uint16_t syn:1;
uint16_t rst:1;
uint16_t psh:1;
uint16_t ack:1;
uint16_t urg:1;
uint16_t res2:2;
# 156 "/usr/include/netinet/tcp.h" 3 4
uint16_t window;
uint16_t check;
uint16_t urg_ptr;
};
};
};
enum
{
TCP_ESTABLISHED = 1,
TCP_SYN_SENT,
TCP_SYN_RECV,
TCP_FIN_WAIT1,
TCP_FIN_WAIT2,
TCP_TIME_WAIT,
TCP_CLOSE,
TCP_CLOSE_WAIT,
TCP_LAST_ACK,
TCP_LISTEN,
TCP_CLOSING
};
# 217 "/usr/include/netinet/tcp.h" 3 4
enum tcp_ca_state
{
TCP_CA_Open = 0,
TCP_CA_Disorder = 1,
TCP_CA_CWR = 2,
TCP_CA_Recovery = 3,
TCP_CA_Loss = 4
};
struct tcp_info
{
uint8_t tcpi_state;
uint8_t tcpi_ca_state;
uint8_t tcpi_retransmits;
uint8_t tcpi_probes;
uint8_t tcpi_backoff;
uint8_t tcpi_options;
uint8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
uint32_t tcpi_rto;
uint32_t tcpi_ato;
uint32_t tcpi_snd_mss;
uint32_t tcpi_rcv_mss;
uint32_t tcpi_unacked;
uint32_t tcpi_sacked;
uint32_t tcpi_lost;
uint32_t tcpi_retrans;
uint32_t tcpi_fackets;
uint32_t tcpi_last_data_sent;
uint32_t tcpi_last_ack_sent;
uint32_t tcpi_last_data_recv;
uint32_t tcpi_last_ack_recv;
uint32_t tcpi_pmtu;
uint32_t tcpi_rcv_ssthresh;
uint32_t tcpi_rtt;
uint32_t tcpi_rttvar;
uint32_t tcpi_snd_ssthresh;
uint32_t tcpi_snd_cwnd;
uint32_t tcpi_advmss;
uint32_t tcpi_reordering;
uint32_t tcpi_rcv_rtt;
uint32_t tcpi_rcv_space;
uint32_t tcpi_total_retrans;
};
# 276 "/usr/include/netinet/tcp.h" 3 4
struct tcp_md5sig
{
struct sockaddr_storage tcpm_addr;
uint8_t tcpm_flags;
uint8_t tcpm_prefixlen;
uint16_t tcpm_keylen;
uint32_t __tcpm_pad;
uint8_t tcpm_key[80];
};
struct tcp_repair_opt
{
uint32_t opt_code;
uint32_t opt_val;
};
enum
{
TCP_NO_QUEUE,
TCP_RECV_QUEUE,
TCP_SEND_QUEUE,
TCP_QUEUES_NR,
};
# 319 "/usr/include/netinet/tcp.h" 3 4
struct tcp_cookie_transactions
{
uint16_t tcpct_flags;
uint8_t __tcpct_pad1;
uint8_t tcpct_cookie_desired;
uint16_t tcpct_s_data_desired;
uint16_t tcpct_used;
uint8_t tcpct_value[536U];
};
struct tcp_repair_window
{
uint32_t snd_wl1;
uint32_t snd_wnd;
uint32_t max_window;
uint32_t rcv_wnd;
uint32_t rcv_wup;
};
struct tcp_zerocopy_receive
{
uint64_t address;
uint32_t length;
uint32_t recv_skip_hint;
};
# 33 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2
# 1 "/usr/include/arpa/inet.h" 1 3 4
# 30 "/usr/include/arpa/inet.h" 3 4
extern in_addr_t inet_addr (const char *__cp) __attribute__ ((__nothrow__ , __leaf__));
extern in_addr_t inet_lnaof (struct in_addr __in) __attribute__ ((__nothrow__ , __leaf__));
extern struct in_addr inet_makeaddr (in_addr_t __net, in_addr_t __host)
__attribute__ ((__nothrow__ , __leaf__));
extern in_addr_t inet_netof (struct in_addr __in) __attribute__ ((__nothrow__ , __leaf__));
extern in_addr_t inet_network (const char *__cp) __attribute__ ((__nothrow__ , __leaf__));
extern char *inet_ntoa (struct in_addr __in) __attribute__ ((__nothrow__ , __leaf__));
extern int inet_pton (int __af, const char *__restrict __cp,
void *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__));
extern const char *inet_ntop (int __af, const void *__restrict __cp,
char *__restrict __buf, socklen_t __len)
__attribute__ ((__nothrow__ , __leaf__));
extern int inet_aton (const char *__cp, struct in_addr *__inp) __attribute__ ((__nothrow__ , __leaf__));
extern char *inet_neta (in_addr_t __net, char *__buf, size_t __len) __attribute__ ((__nothrow__ , __leaf__));
extern char *inet_net_ntop (int __af, const void *__cp, int __bits,
char *__buf, size_t __len) __attribute__ ((__nothrow__ , __leaf__));
extern int inet_net_pton (int __af, const char *__cp,
void *__buf, size_t __len) __attribute__ ((__nothrow__ , __leaf__));
extern unsigned int inet_nsap_addr (const char *__cp,
unsigned char *__buf, int __len) __attribute__ ((__nothrow__ , __leaf__));
extern char *inet_nsap_ntoa (int __len, const unsigned char *__cp,
char *__buf) __attribute__ ((__nothrow__ , __leaf__));
# 34 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2
# 1 "/usr/include/netdb.h" 1 3 4
# 32 "/usr/include/netdb.h" 3 4
# 1 "/usr/include/rpc/netdb.h" 1 3 4
# 42 "/usr/include/rpc/netdb.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 43 "/usr/include/rpc/netdb.h" 2 3 4
struct rpcent
{
char *r_name;
char **r_aliases;
int r_number;
};
extern void setrpcent (int __stayopen) __attribute__ ((__nothrow__ , __leaf__));
extern void endrpcent (void) __attribute__ ((__nothrow__ , __leaf__));
extern struct rpcent *getrpcbyname (const char *__name) __attribute__ ((__nothrow__ , __leaf__));
extern struct rpcent *getrpcbynumber (int __number) __attribute__ ((__nothrow__ , __leaf__));
extern struct rpcent *getrpcent (void) __attribute__ ((__nothrow__ , __leaf__));
extern int getrpcbyname_r (const char *__name, struct rpcent *__result_buf,
char *__buffer, size_t __buflen,
struct rpcent **__result) __attribute__ ((__nothrow__ , __leaf__));
extern int getrpcbynumber_r (int __number, struct rpcent *__result_buf,
char *__buffer, size_t __buflen,
struct rpcent **__result) __attribute__ ((__nothrow__ , __leaf__));
extern int getrpcent_r (struct rpcent *__result_buf, char *__buffer,
size_t __buflen, struct rpcent **__result) __attribute__ ((__nothrow__ , __leaf__));
# 33 "/usr/include/netdb.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/sigevent_t.h" 1 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 5 "/usr/include/aarch64-linux-gnu/bits/types/sigevent_t.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/__sigval_t.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/types/__sigval_t.h" 3 4
union sigval
{
int sival_int;
void *sival_ptr;
};
typedef union sigval __sigval_t;
# 7 "/usr/include/aarch64-linux-gnu/bits/types/sigevent_t.h" 2 3 4
# 22 "/usr/include/aarch64-linux-gnu/bits/types/sigevent_t.h" 3 4
typedef struct sigevent
{
__sigval_t sigev_value;
int sigev_signo;
int sigev_notify;
union
{
int _pad[((64 / sizeof (int)) - 4)];
__pid_t _tid;
struct
{
void (*_function) (__sigval_t);
pthread_attr_t *_attribute;
} _sigev_thread;
} _sigev_un;
} sigevent_t;
# 37 "/usr/include/netdb.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/netdb.h" 1 3 4
# 26 "/usr/include/aarch64-linux-gnu/bits/netdb.h" 3 4
struct netent
{
char *n_name;
char **n_aliases;
int n_addrtype;
uint32_t n_net;
};
# 41 "/usr/include/netdb.h" 2 3 4
# 51 "/usr/include/netdb.h" 3 4
extern int *__h_errno_location (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
# 90 "/usr/include/netdb.h" 3 4
extern void herror (const char *__str) __attribute__ ((__nothrow__ , __leaf__));
extern const char *hstrerror (int __err_num) __attribute__ ((__nothrow__ , __leaf__));
struct hostent
{
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;
char **h_addr_list;
};
extern void sethostent (int __stay_open);
extern void endhostent (void);
extern struct hostent *gethostent (void);
extern struct hostent *gethostbyaddr (const void *__addr, __socklen_t __len,
int __type);
extern struct hostent *gethostbyname (const char *__name);
# 153 "/usr/include/netdb.h" 3 4
extern struct hostent *gethostbyname2 (const char *__name, int __af);
# 165 "/usr/include/netdb.h" 3 4
extern int gethostent_r (struct hostent *__restrict __result_buf,
char *__restrict __buf, size_t __buflen,
struct hostent **__restrict __result,
int *__restrict __h_errnop);
extern int gethostbyaddr_r (const void *__restrict __addr, __socklen_t __len,
int __type,
struct hostent *__restrict __result_buf,
char *__restrict __buf, size_t __buflen,
struct hostent **__restrict __result,
int *__restrict __h_errnop);
extern int gethostbyname_r (const char *__restrict __name,
struct hostent *__restrict __result_buf,
char *__restrict __buf, size_t __buflen,
struct hostent **__restrict __result,
int *__restrict __h_errnop);
extern int gethostbyname2_r (const char *__restrict __name, int __af,
struct hostent *__restrict __result_buf,
char *__restrict __buf, size_t __buflen,
struct hostent **__restrict __result,
int *__restrict __h_errnop);
# 196 "/usr/include/netdb.h" 3 4
extern void setnetent (int __stay_open);
extern void endnetent (void);
extern struct netent *getnetent (void);
extern struct netent *getnetbyaddr (uint32_t __net, int __type);
extern struct netent *getnetbyname (const char *__name);
# 235 "/usr/include/netdb.h" 3 4
extern int getnetent_r (struct netent *__restrict __result_buf,
char *__restrict __buf, size_t __buflen,
struct netent **__restrict __result,
int *__restrict __h_errnop);
extern int getnetbyaddr_r (uint32_t __net, int __type,
struct netent *__restrict __result_buf,
char *__restrict __buf, size_t __buflen,
struct netent **__restrict __result,
int *__restrict __h_errnop);
extern int getnetbyname_r (const char *__restrict __name,
struct netent *__restrict __result_buf,
char *__restrict __buf, size_t __buflen,
struct netent **__restrict __result,
int *__restrict __h_errnop);
struct servent
{
char *s_name;
char **s_aliases;
int s_port;
char *s_proto;
};
extern void setservent (int __stay_open);
extern void endservent (void);
extern struct servent *getservent (void);
extern struct servent *getservbyname (const char *__name, const char *__proto);
extern struct servent *getservbyport (int __port, const char *__proto);
# 306 "/usr/include/netdb.h" 3 4
extern int getservent_r (struct servent *__restrict __result_buf,
char *__restrict __buf, size_t __buflen,
struct servent **__restrict __result);
extern int getservbyname_r (const char *__restrict __name,
const char *__restrict __proto,
struct servent *__restrict __result_buf,
char *__restrict __buf, size_t __buflen,
struct servent **__restrict __result);
extern int getservbyport_r (int __port, const char *__restrict __proto,
struct servent *__restrict __result_buf,
char *__restrict __buf, size_t __buflen,
struct servent **__restrict __result);
struct protoent
{
char *p_name;
char **p_aliases;
int p_proto;
};
extern void setprotoent (int __stay_open);
extern void endprotoent (void);
extern struct protoent *getprotoent (void);
extern struct protoent *getprotobyname (const char *__name);
extern struct protoent *getprotobynumber (int __proto);
# 372 "/usr/include/netdb.h" 3 4
extern int getprotoent_r (struct protoent *__restrict __result_buf,
char *__restrict __buf, size_t __buflen,
struct protoent **__restrict __result);
extern int getprotobyname_r (const char *__restrict __name,
struct protoent *__restrict __result_buf,
char *__restrict __buf, size_t __buflen,
struct protoent **__restrict __result);
extern int getprotobynumber_r (int __proto,
struct protoent *__restrict __result_buf,
char *__restrict __buf, size_t __buflen,
struct protoent **__restrict __result);
# 393 "/usr/include/netdb.h" 3 4
extern int setnetgrent (const char *__netgroup);
extern void endnetgrent (void);
# 410 "/usr/include/netdb.h" 3 4
extern int getnetgrent (char **__restrict __hostp,
char **__restrict __userp,
char **__restrict __domainp);
# 421 "/usr/include/netdb.h" 3 4
extern int innetgr (const char *__netgroup, const char *__host,
const char *__user, const char *__domain);
extern int getnetgrent_r (char **__restrict __hostp,
char **__restrict __userp,
char **__restrict __domainp,
char *__restrict __buffer, size_t __buflen);
# 449 "/usr/include/netdb.h" 3 4
extern int rcmd (char **__restrict __ahost, unsigned short int __rport,
const char *__restrict __locuser,
const char *__restrict __remuser,
const char *__restrict __cmd, int *__restrict __fd2p);
# 461 "/usr/include/netdb.h" 3 4
extern int rcmd_af (char **__restrict __ahost, unsigned short int __rport,
const char *__restrict __locuser,
const char *__restrict __remuser,
const char *__restrict __cmd, int *__restrict __fd2p,
sa_family_t __af);
# 477 "/usr/include/netdb.h" 3 4
extern int rexec (char **__restrict __ahost, int __rport,
const char *__restrict __name,
const char *__restrict __pass,
const char *__restrict __cmd, int *__restrict __fd2p);
# 489 "/usr/include/netdb.h" 3 4
extern int rexec_af (char **__restrict __ahost, int __rport,
const char *__restrict __name,
const char *__restrict __pass,
const char *__restrict __cmd, int *__restrict __fd2p,
sa_family_t __af);
# 503 "/usr/include/netdb.h" 3 4
extern int ruserok (const char *__rhost, int __suser,
const char *__remuser, const char *__locuser);
# 513 "/usr/include/netdb.h" 3 4
extern int ruserok_af (const char *__rhost, int __suser,
const char *__remuser, const char *__locuser,
sa_family_t __af);
# 526 "/usr/include/netdb.h" 3 4
extern int iruserok (uint32_t __raddr, int __suser,
const char *__remuser, const char *__locuser);
# 537 "/usr/include/netdb.h" 3 4
extern int iruserok_af (const void *__raddr, int __suser,
const char *__remuser, const char *__locuser,
sa_family_t __af);
# 549 "/usr/include/netdb.h" 3 4
extern int rresvport (int *__alport);
# 558 "/usr/include/netdb.h" 3 4
extern int rresvport_af (int *__alport, sa_family_t __af);
struct addrinfo
{
int ai_flags;
int ai_family;
int ai_socktype;
int ai_protocol;
socklen_t ai_addrlen;
struct sockaddr *ai_addr;
char *ai_canonname;
struct addrinfo *ai_next;
};
struct gaicb
{
const char *ar_name;
const char *ar_service;
const struct addrinfo *ar_request;
struct addrinfo *ar_result;
int __return;
int __glibc_reserved[5];
};
# 660 "/usr/include/netdb.h" 3 4
extern int getaddrinfo (const char *__restrict __name,
const char *__restrict __service,
const struct addrinfo *__restrict __req,
struct addrinfo **__restrict __pai);
extern void freeaddrinfo (struct addrinfo *__ai) __attribute__ ((__nothrow__ , __leaf__));
extern const char *gai_strerror (int __ecode) __attribute__ ((__nothrow__ , __leaf__));
extern int getnameinfo (const struct sockaddr *__restrict __sa,
socklen_t __salen, char *__restrict __host,
socklen_t __hostlen, char *__restrict __serv,
socklen_t __servlen, int __flags);
# 690 "/usr/include/netdb.h" 3 4
extern int getaddrinfo_a (int __mode, struct gaicb *__list[__restrict],
int __ent, struct sigevent *__restrict __sig);
# 701 "/usr/include/netdb.h" 3 4
extern int gai_suspend (const struct gaicb *const __list[], int __ent,
const struct timespec *__timeout);
extern int gai_error (struct gaicb *__req) __attribute__ ((__nothrow__ , __leaf__));
extern int gai_cancel (struct gaicb *__gaicbp) __attribute__ ((__nothrow__ , __leaf__));
# 35 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2
# 1 "/usr/include/termios.h" 1 3 4
# 35 "/usr/include/termios.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/termios.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/bits/termios.h" 3 4
typedef unsigned char cc_t;
typedef unsigned int speed_t;
typedef unsigned int tcflag_t;
# 1 "/usr/include/aarch64-linux-gnu/bits/termios-struct.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/termios-struct.h" 3 4
struct termios
{
tcflag_t c_iflag;
tcflag_t c_oflag;
tcflag_t c_cflag;
tcflag_t c_lflag;
cc_t c_line;
cc_t c_cc[32];
speed_t c_ispeed;
speed_t c_ospeed;
};
# 28 "/usr/include/aarch64-linux-gnu/bits/termios.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/termios-c_cc.h" 1 3 4
# 29 "/usr/include/aarch64-linux-gnu/bits/termios.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/termios-c_iflag.h" 1 3 4
# 30 "/usr/include/aarch64-linux-gnu/bits/termios.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/termios-c_oflag.h" 1 3 4
# 31 "/usr/include/aarch64-linux-gnu/bits/termios.h" 2 3 4
# 53 "/usr/include/aarch64-linux-gnu/bits/termios.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/termios-baud.h" 1 3 4
# 54 "/usr/include/aarch64-linux-gnu/bits/termios.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/termios-c_cflag.h" 1 3 4
# 56 "/usr/include/aarch64-linux-gnu/bits/termios.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/termios-c_lflag.h" 1 3 4
# 57 "/usr/include/aarch64-linux-gnu/bits/termios.h" 2 3 4
# 74 "/usr/include/aarch64-linux-gnu/bits/termios.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/termios-tcflow.h" 1 3 4
# 75 "/usr/include/aarch64-linux-gnu/bits/termios.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/termios-misc.h" 1 3 4
# 76 "/usr/include/aarch64-linux-gnu/bits/termios.h" 2 3 4
# 40 "/usr/include/termios.h" 2 3 4
# 48 "/usr/include/termios.h" 3 4
extern speed_t cfgetospeed (const struct termios *__termios_p) __attribute__ ((__nothrow__ , __leaf__));
extern speed_t cfgetispeed (const struct termios *__termios_p) __attribute__ ((__nothrow__ , __leaf__));
extern int cfsetospeed (struct termios *__termios_p, speed_t __speed) __attribute__ ((__nothrow__ , __leaf__));
extern int cfsetispeed (struct termios *__termios_p, speed_t __speed) __attribute__ ((__nothrow__ , __leaf__));
extern int cfsetspeed (struct termios *__termios_p, speed_t __speed) __attribute__ ((__nothrow__ , __leaf__));
extern int tcgetattr (int __fd, struct termios *__termios_p) __attribute__ ((__nothrow__ , __leaf__));
extern int tcsetattr (int __fd, int __optional_actions,
const struct termios *__termios_p) __attribute__ ((__nothrow__ , __leaf__));
extern void cfmakeraw (struct termios *__termios_p) __attribute__ ((__nothrow__ , __leaf__));
extern int tcsendbreak (int __fd, int __duration) __attribute__ ((__nothrow__ , __leaf__));
extern int tcdrain (int __fd);
extern int tcflush (int __fd, int __queue_selector) __attribute__ ((__nothrow__ , __leaf__));
extern int tcflow (int __fd, int __action) __attribute__ ((__nothrow__ , __leaf__));
extern __pid_t tcgetsid (int __fd) __attribute__ ((__nothrow__ , __leaf__));
# 1 "/usr/include/aarch64-linux-gnu/sys/ttydefaults.h" 1 3 4
# 105 "/usr/include/termios.h" 2 3 4
# 37 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2
# 1 "/usr/include/pwd.h" 1 3 4
# 27 "/usr/include/pwd.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 33 "/usr/include/pwd.h" 2 3 4
# 49 "/usr/include/pwd.h" 3 4
struct passwd
{
char *pw_name;
char *pw_passwd;
__uid_t pw_uid;
__gid_t pw_gid;
char *pw_gecos;
char *pw_dir;
char *pw_shell;
};
# 72 "/usr/include/pwd.h" 3 4
extern void setpwent (void);
extern void endpwent (void);
extern struct passwd *getpwent (void);
# 94 "/usr/include/pwd.h" 3 4
extern struct passwd *fgetpwent (FILE *__stream) __attribute__ ((__nonnull__ (1)));
extern int putpwent (const struct passwd *__restrict __p,
FILE *__restrict __f);
extern struct passwd *getpwuid (__uid_t __uid);
extern struct passwd *getpwnam (const char *__name) __attribute__ ((__nonnull__ (1)));
# 139 "/usr/include/pwd.h" 3 4
extern int getpwent_r (struct passwd *__restrict __resultbuf,
char *__restrict __buffer, size_t __buflen,
struct passwd **__restrict __result)
__attribute__ ((__nonnull__ (1, 2, 4)));
extern int getpwuid_r (__uid_t __uid,
struct passwd *__restrict __resultbuf,
char *__restrict __buffer, size_t __buflen,
struct passwd **__restrict __result)
__attribute__ ((__nonnull__ (2, 3, 5)));
extern int getpwnam_r (const char *__restrict __name,
struct passwd *__restrict __resultbuf,
char *__restrict __buffer, size_t __buflen,
struct passwd **__restrict __result)
__attribute__ ((__nonnull__ (1, 2, 3, 5)));
# 166 "/usr/include/pwd.h" 3 4
extern int fgetpwent_r (FILE *__restrict __stream,
struct passwd *__restrict __resultbuf,
char *__restrict __buffer, size_t __buflen,
struct passwd **__restrict __result)
__attribute__ ((__nonnull__ (1, 2, 3, 5)));
# 184 "/usr/include/pwd.h" 3 4
extern int getpw (__uid_t __uid, char *__buffer);
# 38 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2
# 1 "/usr/include/semaphore.h" 1 3 4
# 28 "/usr/include/semaphore.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/semaphore.h" 1 3 4
# 35 "/usr/include/aarch64-linux-gnu/bits/semaphore.h" 3 4
typedef union
{
char __size[32];
long long int __align;
} sem_t;
# 29 "/usr/include/semaphore.h" 2 3 4
extern int sem_init (sem_t *__sem, int __pshared, unsigned int __value)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int sem_destroy (sem_t *__sem) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern sem_t *sem_open (const char *__name, int __oflag, ...)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int sem_close (sem_t *__sem) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int sem_unlink (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int sem_wait (sem_t *__sem) __attribute__ ((__nonnull__ (1)));
extern int sem_timedwait (sem_t *__restrict __sem,
const struct timespec *__restrict __abstime)
__attribute__ ((__nonnull__ (1, 2)));
extern int sem_clockwait (sem_t *__restrict __sem,
clockid_t clock,
const struct timespec *__restrict __abstime)
__attribute__ ((__nonnull__ (1, 3)));
extern int sem_trywait (sem_t *__sem) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int sem_post (sem_t *__sem) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int sem_getvalue (sem_t *__restrict __sem, int *__restrict __sval)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
# 41 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2
# 1 "/usr/include/aarch64-linux-gnu/sys/param.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/sys/param.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/sys/param.h" 2 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/limits.h" 1 3 4
# 34 "/usr/lib/gcc/aarch64-linux-gnu/9/include/limits.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/syslimits.h" 1 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/limits.h" 1 3 4
# 194 "/usr/lib/gcc/aarch64-linux-gnu/9/include/limits.h" 3 4
# 1 "/usr/include/limits.h" 1 3 4
# 26 "/usr/include/limits.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/libc-header-start.h" 1 3 4
# 27 "/usr/include/limits.h" 2 3 4
# 187 "/usr/include/limits.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/posix2_lim.h" 1 3 4
# 188 "/usr/include/limits.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/xopen_lim.h" 1 3 4
# 64 "/usr/include/aarch64-linux-gnu/bits/xopen_lim.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/uio_lim.h" 1 3 4
# 65 "/usr/include/aarch64-linux-gnu/bits/xopen_lim.h" 2 3 4
# 192 "/usr/include/limits.h" 2 3 4
# 195 "/usr/lib/gcc/aarch64-linux-gnu/9/include/limits.h" 2 3 4
# 8 "/usr/lib/gcc/aarch64-linux-gnu/9/include/syslimits.h" 2 3 4
# 35 "/usr/lib/gcc/aarch64-linux-gnu/9/include/limits.h" 2 3 4
# 27 "/usr/include/aarch64-linux-gnu/sys/param.h" 2 3 4
# 1 "/usr/include/signal.h" 1 3 4
# 27 "/usr/include/signal.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/signum.h" 1 3 4
# 26 "/usr/include/aarch64-linux-gnu/bits/signum.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/signum-generic.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/signum.h" 2 3 4
# 31 "/usr/include/signal.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/sig_atomic_t.h" 1 3 4
typedef __sig_atomic_t sig_atomic_t;
# 33 "/usr/include/signal.h" 2 3 4
# 57 "/usr/include/signal.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/siginfo_t.h" 1 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 5 "/usr/include/aarch64-linux-gnu/bits/types/siginfo_t.h" 2 3 4
# 16 "/usr/include/aarch64-linux-gnu/bits/types/siginfo_t.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/siginfo-arch.h" 1 3 4
# 17 "/usr/include/aarch64-linux-gnu/bits/types/siginfo_t.h" 2 3 4
# 36 "/usr/include/aarch64-linux-gnu/bits/types/siginfo_t.h" 3 4
typedef struct
{
int si_signo;
int si_errno;
int si_code;
int __pad0;
union
{
int _pad[((128 / sizeof (int)) - 4)];
struct
{
__pid_t si_pid;
__uid_t si_uid;
} _kill;
struct
{
int si_tid;
int si_overrun;
__sigval_t si_sigval;
} _timer;
struct
{
__pid_t si_pid;
__uid_t si_uid;
__sigval_t si_sigval;
} _rt;
struct
{
__pid_t si_pid;
__uid_t si_uid;
int si_status;
__clock_t si_utime;
__clock_t si_stime;
} _sigchld;
struct
{
void *si_addr;
short int si_addr_lsb;
union
{
struct
{
void *_lower;
void *_upper;
} _addr_bnd;
__uint32_t _pkey;
} _bounds;
} _sigfault;
struct
{
long int si_band;
int si_fd;
} _sigpoll;
struct
{
void *_call_addr;
int _syscall;
unsigned int _arch;
} _sigsys;
} _sifields;
} siginfo_t ;
# 58 "/usr/include/signal.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/siginfo-consts.h" 1 3 4
# 35 "/usr/include/aarch64-linux-gnu/bits/siginfo-consts.h" 3 4
enum
{
SI_ASYNCNL = -60,
SI_DETHREAD = -7,
SI_TKILL,
SI_SIGIO,
SI_ASYNCIO,
SI_MESGQ,
SI_TIMER,
SI_QUEUE,
SI_USER,
SI_KERNEL = 0x80
# 66 "/usr/include/aarch64-linux-gnu/bits/siginfo-consts.h" 3 4
};
enum
{
ILL_ILLOPC = 1,
ILL_ILLOPN,
ILL_ILLADR,
ILL_ILLTRP,
ILL_PRVOPC,
ILL_PRVREG,
ILL_COPROC,
ILL_BADSTK,
ILL_BADIADDR
};
enum
{
FPE_INTDIV = 1,
FPE_INTOVF,
FPE_FLTDIV,
FPE_FLTOVF,
FPE_FLTUND,
FPE_FLTRES,
FPE_FLTINV,
FPE_FLTSUB,
FPE_FLTUNK = 14,
FPE_CONDTRAP
};
enum
{
SEGV_MAPERR = 1,
SEGV_ACCERR,
SEGV_BNDERR,
SEGV_PKUERR,
SEGV_ACCADI,
SEGV_ADIDERR,
SEGV_ADIPERR
};
enum
{
BUS_ADRALN = 1,
BUS_ADRERR,
BUS_OBJERR,
BUS_MCEERR_AR,
BUS_MCEERR_AO
};
enum
{
TRAP_BRKPT = 1,
TRAP_TRACE,
TRAP_BRANCH,
TRAP_HWBKPT,
TRAP_UNK
};
enum
{
CLD_EXITED = 1,
CLD_KILLED,
CLD_DUMPED,
CLD_TRAPPED,
CLD_STOPPED,
CLD_CONTINUED
};
enum
{
POLL_IN = 1,
POLL_OUT,
POLL_MSG,
POLL_ERR,
POLL_PRI,
POLL_HUP
};
# 1 "/usr/include/aarch64-linux-gnu/bits/siginfo-consts-arch.h" 1 3 4
# 210 "/usr/include/aarch64-linux-gnu/bits/siginfo-consts.h" 2 3 4
# 59 "/usr/include/signal.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/sigval_t.h" 1 3 4
# 16 "/usr/include/aarch64-linux-gnu/bits/types/sigval_t.h" 3 4
typedef __sigval_t sigval_t;
# 63 "/usr/include/signal.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/sigevent-consts.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/sigevent-consts.h" 3 4
enum
{
SIGEV_SIGNAL = 0,
SIGEV_NONE,
SIGEV_THREAD,
SIGEV_THREAD_ID = 4
};
# 68 "/usr/include/signal.h" 2 3 4
typedef void (*__sighandler_t) (int);
extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler)
__attribute__ ((__nothrow__ , __leaf__));
extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler)
__attribute__ ((__nothrow__ , __leaf__));
extern __sighandler_t signal (int __sig, __sighandler_t __handler)
__attribute__ ((__nothrow__ , __leaf__));
# 112 "/usr/include/signal.h" 3 4
extern int kill (__pid_t __pid, int __sig) __attribute__ ((__nothrow__ , __leaf__));
extern int killpg (__pid_t __pgrp, int __sig) __attribute__ ((__nothrow__ , __leaf__));
extern int raise (int __sig) __attribute__ ((__nothrow__ , __leaf__));
extern __sighandler_t ssignal (int __sig, __sighandler_t __handler)
__attribute__ ((__nothrow__ , __leaf__));
extern int gsignal (int __sig) __attribute__ ((__nothrow__ , __leaf__));
extern void psignal (int __sig, const char *__s);
extern void psiginfo (const siginfo_t *__pinfo, const char *__s);
# 151 "/usr/include/signal.h" 3 4
extern int sigpause (int __sig) __asm__ ("__xpg_sigpause");
# 170 "/usr/include/signal.h" 3 4
extern int sigblock (int __mask) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));
extern int sigsetmask (int __mask) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));
extern int siggetmask (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));
# 185 "/usr/include/signal.h" 3 4
typedef __sighandler_t sighandler_t;
typedef __sighandler_t sig_t;
extern int sigemptyset (sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int sigfillset (sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int sigaddset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int sigdelset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int sigismember (const sigset_t *__set, int __signo)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int sigisemptyset (const sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int sigandset (sigset_t *__set, const sigset_t *__left,
const sigset_t *__right) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2, 3)));
extern int sigorset (sigset_t *__set, const sigset_t *__left,
const sigset_t *__right) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2, 3)));
# 1 "/usr/include/aarch64-linux-gnu/bits/sigaction.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/sigaction.h" 3 4
struct sigaction
{
union
{
__sighandler_t sa_handler;
void (*sa_sigaction) (int, siginfo_t *, void *);
}
__sigaction_handler;
__sigset_t sa_mask;
int sa_flags;
void (*sa_restorer) (void);
};
# 227 "/usr/include/signal.h" 2 3 4
extern int sigprocmask (int __how, const sigset_t *__restrict __set,
sigset_t *__restrict __oset) __attribute__ ((__nothrow__ , __leaf__));
extern int sigsuspend (const sigset_t *__set) __attribute__ ((__nonnull__ (1)));
extern int sigaction (int __sig, const struct sigaction *__restrict __act,
struct sigaction *__restrict __oact) __attribute__ ((__nothrow__ , __leaf__));
extern int sigpending (sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int sigwait (const sigset_t *__restrict __set, int *__restrict __sig)
__attribute__ ((__nonnull__ (1, 2)));
extern int sigwaitinfo (const sigset_t *__restrict __set,
siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1)));
extern int sigtimedwait (const sigset_t *__restrict __set,
siginfo_t *__restrict __info,
const struct timespec *__restrict __timeout)
__attribute__ ((__nonnull__ (1)));
extern int sigqueue (__pid_t __pid, int __sig, const union sigval __val)
__attribute__ ((__nothrow__ , __leaf__));
# 286 "/usr/include/signal.h" 3 4
extern const char *const _sys_siglist[(64 + 1)];
extern const char *const sys_siglist[(64 + 1)];
# 1 "/usr/include/aarch64-linux-gnu/bits/sigcontext.h" 1 3 4
# 30 "/usr/include/aarch64-linux-gnu/bits/sigcontext.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/sigcontext.h" 1 3 4
# 28 "/usr/include/aarch64-linux-gnu/asm/sigcontext.h" 3 4
struct sigcontext {
__u64 fault_address;
__u64 regs[31];
__u64 sp;
__u64 pc;
__u64 pstate;
__u8 __reserved[4096] __attribute__((__aligned__(16)));
};
# 66 "/usr/include/aarch64-linux-gnu/asm/sigcontext.h" 3 4
struct _aarch64_ctx {
__u32 magic;
__u32 size;
};
struct fpsimd_context {
struct _aarch64_ctx head;
__u32 fpsr;
__u32 fpcr;
__uint128_t vregs[32];
};
# 92 "/usr/include/aarch64-linux-gnu/asm/sigcontext.h" 3 4
struct esr_context {
struct _aarch64_ctx head;
__u64 esr;
};
# 125 "/usr/include/aarch64-linux-gnu/asm/sigcontext.h" 3 4
struct extra_context {
struct _aarch64_ctx head;
__u64 datap;
__u32 size;
__u32 __reserved[3];
};
struct sve_context {
struct _aarch64_ctx head;
__u16 vl;
__u16 __reserved[3];
};
# 1 "/usr/include/aarch64-linux-gnu/asm/sve_context.h" 1 3 4
# 143 "/usr/include/aarch64-linux-gnu/asm/sigcontext.h" 2 3 4
# 31 "/usr/include/aarch64-linux-gnu/bits/sigcontext.h" 2 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 35 "/usr/include/aarch64-linux-gnu/bits/sigcontext.h" 2 3 4
# 292 "/usr/include/signal.h" 2 3 4
extern int sigreturn (struct sigcontext *__scp) __attribute__ ((__nothrow__ , __leaf__));
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 302 "/usr/include/signal.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/stack_t.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/bits/types/stack_t.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/types/stack_t.h" 2 3 4
typedef struct
{
void *ss_sp;
int ss_flags;
size_t ss_size;
} stack_t;
# 304 "/usr/include/signal.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/sys/ucontext.h" 1 3 4
# 36 "/usr/include/aarch64-linux-gnu/sys/ucontext.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/sys/procfs.h" 1 3 4
# 33 "/usr/include/aarch64-linux-gnu/sys/procfs.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/sys/time.h" 1 3 4
# 34 "/usr/include/aarch64-linux-gnu/sys/time.h" 3 4
# 52 "/usr/include/aarch64-linux-gnu/sys/time.h" 3 4
struct timezone
{
int tz_minuteswest;
int tz_dsttime;
};
# 66 "/usr/include/aarch64-linux-gnu/sys/time.h" 3 4
extern int gettimeofday (struct timeval *__restrict __tv,
void *__restrict __tz) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int settimeofday (const struct timeval *__tv,
const struct timezone *__tz)
__attribute__ ((__nothrow__ , __leaf__));
extern int adjtime (const struct timeval *__delta,
struct timeval *__olddelta) __attribute__ ((__nothrow__ , __leaf__));
enum __itimer_which
{
ITIMER_REAL = 0,
ITIMER_VIRTUAL = 1,
ITIMER_PROF = 2
};
struct itimerval
{
struct timeval it_interval;
struct timeval it_value;
};
typedef enum __itimer_which __itimer_which_t;
extern int getitimer (__itimer_which_t __which,
struct itimerval *__value) __attribute__ ((__nothrow__ , __leaf__));
extern int setitimer (__itimer_which_t __which,
const struct itimerval *__restrict __new,
struct itimerval *__restrict __old) __attribute__ ((__nothrow__ , __leaf__));
extern int utimes (const char *__file, const struct timeval __tvp[2])
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int lutimes (const char *__file, const struct timeval __tvp[2])
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int futimes (int __fd, const struct timeval __tvp[2]) __attribute__ ((__nothrow__ , __leaf__));
extern int futimesat (int __fd, const char *__file,
const struct timeval __tvp[2]) __attribute__ ((__nothrow__ , __leaf__));
# 187 "/usr/include/aarch64-linux-gnu/sys/time.h" 3 4
# 34 "/usr/include/aarch64-linux-gnu/sys/procfs.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/sys/user.h" 1 3 4
# 22 "/usr/include/aarch64-linux-gnu/sys/user.h" 3 4
struct user_regs_struct
{
unsigned long long regs[31];
unsigned long long sp;
unsigned long long pc;
unsigned long long pstate;
};
struct user_fpsimd_struct
{
__uint128_t vregs[32];
unsigned int fpsr;
unsigned int fpcr;
};
# 36 "/usr/include/aarch64-linux-gnu/sys/procfs.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/procfs.h" 1 3 4
# 25 "/usr/include/aarch64-linux-gnu/bits/procfs.h" 3 4
typedef __uint64_t elf_greg_t;
typedef elf_greg_t elf_gregset_t[(sizeof (struct user_regs_struct) / sizeof (elf_greg_t))];
typedef struct user_fpsimd_struct elf_fpregset_t;
# 41 "/usr/include/aarch64-linux-gnu/sys/procfs.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/procfs-id.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/procfs-id.h" 3 4
typedef unsigned int __pr_uid_t;
typedef unsigned int __pr_gid_t;
# 45 "/usr/include/aarch64-linux-gnu/sys/procfs.h" 2 3 4
struct elf_siginfo
{
int si_signo;
int si_code;
int si_errno;
};
# 63 "/usr/include/aarch64-linux-gnu/sys/procfs.h" 3 4
struct elf_prstatus
{
struct elf_siginfo pr_info;
short int pr_cursig;
unsigned long int pr_sigpend;
unsigned long int pr_sighold;
__pid_t pr_pid;
__pid_t pr_ppid;
__pid_t pr_pgrp;
__pid_t pr_sid;
struct timeval pr_utime;
struct timeval pr_stime;
struct timeval pr_cutime;
struct timeval pr_cstime;
elf_gregset_t pr_reg;
int pr_fpvalid;
};
struct elf_prpsinfo
{
char pr_state;
char pr_sname;
char pr_zomb;
char pr_nice;
unsigned long int pr_flag;
__pr_uid_t pr_uid;
__pr_gid_t pr_gid;
int pr_pid, pr_ppid, pr_pgrp, pr_sid;
char pr_fname[16];
char pr_psargs[(80)];
};
typedef void *psaddr_t;
# 1 "/usr/include/aarch64-linux-gnu/bits/procfs-prregset.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/procfs-prregset.h" 3 4
typedef elf_gregset_t __prgregset_t;
typedef elf_fpregset_t __prfpregset_t;
# 107 "/usr/include/aarch64-linux-gnu/sys/procfs.h" 2 3 4
typedef __prgregset_t prgregset_t;
typedef __prfpregset_t prfpregset_t;
typedef __pid_t lwpid_t;
typedef struct elf_prstatus prstatus_t;
typedef struct elf_prpsinfo prpsinfo_t;
# 1 "/usr/include/aarch64-linux-gnu/bits/procfs-extra.h" 1 3 4
# 125 "/usr/include/aarch64-linux-gnu/sys/procfs.h" 2 3 4
# 37 "/usr/include/aarch64-linux-gnu/sys/ucontext.h" 2 3 4
typedef elf_greg_t greg_t;
typedef elf_gregset_t gregset_t;
typedef elf_fpregset_t fpregset_t;
typedef struct
{
unsigned long long int fault_address;
unsigned long long int regs[31];
unsigned long long int sp;
unsigned long long int pc;
unsigned long long int pstate;
unsigned char __reserved[4096] __attribute__ ((__aligned__ (16)));
} mcontext_t;
typedef struct ucontext_t
{
unsigned long uc_flags;
struct ucontext_t *uc_link;
stack_t uc_stack;
sigset_t uc_sigmask;
mcontext_t uc_mcontext;
} ucontext_t;
# 307 "/usr/include/signal.h" 2 3 4
extern int siginterrupt (int __sig, int __interrupt) __attribute__ ((__nothrow__ , __leaf__));
# 1 "/usr/include/aarch64-linux-gnu/bits/sigstack.h" 1 3 4
# 317 "/usr/include/signal.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/ss_flags.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/ss_flags.h" 3 4
enum
{
SS_ONSTACK = 1,
SS_DISABLE
};
# 318 "/usr/include/signal.h" 2 3 4
extern int sigaltstack (const stack_t *__restrict __ss,
stack_t *__restrict __oss) __attribute__ ((__nothrow__ , __leaf__));
# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_sigstack.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/bits/types/struct_sigstack.h" 3 4
struct sigstack
{
void *ss_sp;
int ss_onstack;
};
# 328 "/usr/include/signal.h" 2 3 4
extern int sigstack (struct sigstack *__ss, struct sigstack *__oss)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));
extern int sighold (int __sig) __attribute__ ((__nothrow__ , __leaf__));
extern int sigrelse (int __sig) __attribute__ ((__nothrow__ , __leaf__));
extern int sigignore (int __sig) __attribute__ ((__nothrow__ , __leaf__));
extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __attribute__ ((__nothrow__ , __leaf__));
# 1 "/usr/include/aarch64-linux-gnu/bits/sigthread.h" 1 3 4
# 31 "/usr/include/aarch64-linux-gnu/bits/sigthread.h" 3 4
extern int pthread_sigmask (int __how,
const __sigset_t *__restrict __newmask,
__sigset_t *__restrict __oldmask)__attribute__ ((__nothrow__ , __leaf__));
extern int pthread_kill (pthread_t __threadid, int __signo) __attribute__ ((__nothrow__ , __leaf__));
extern int pthread_sigqueue (pthread_t __threadid, int __signo,
const union sigval __value) __attribute__ ((__nothrow__ , __leaf__));
# 360 "/usr/include/signal.h" 2 3 4
extern int __libc_current_sigrtmin (void) __attribute__ ((__nothrow__ , __leaf__));
extern int __libc_current_sigrtmax (void) __attribute__ ((__nothrow__ , __leaf__));
# 1 "/usr/include/aarch64-linux-gnu/bits/signal_ext.h" 1 3 4
# 29 "/usr/include/aarch64-linux-gnu/bits/signal_ext.h" 3 4
extern int tgkill (__pid_t __tgid, __pid_t __tid, int __signal);
# 375 "/usr/include/signal.h" 2 3 4
# 29 "/usr/include/aarch64-linux-gnu/sys/param.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/param.h" 1 3 4
# 28 "/usr/include/aarch64-linux-gnu/bits/param.h" 3 4
# 1 "/usr/include/linux/param.h" 1 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/param.h" 1 3 4
# 22 "/usr/include/aarch64-linux-gnu/asm/param.h" 3 4
# 1 "/usr/include/asm-generic/param.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/asm/param.h" 2 3 4
# 6 "/usr/include/linux/param.h" 2 3 4
# 29 "/usr/include/aarch64-linux-gnu/bits/param.h" 2 3 4
# 32 "/usr/include/aarch64-linux-gnu/sys/param.h" 2 3 4
# 42 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2
# 1 "/usr/include/pthread.h" 1 3 4
# 22 "/usr/include/pthread.h" 3 4
# 1 "/usr/include/sched.h" 1 3 4
# 29 "/usr/include/sched.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 30 "/usr/include/sched.h" 2 3 4
# 43 "/usr/include/sched.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/sched.h" 1 3 4
# 76 "/usr/include/aarch64-linux-gnu/bits/sched.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_sched_param.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/bits/types/struct_sched_param.h" 3 4
struct sched_param
{
int sched_priority;
};
# 77 "/usr/include/aarch64-linux-gnu/bits/sched.h" 2 3 4
extern int clone (int (*__fn) (void *__arg), void *__child_stack,
int __flags, void *__arg, ...) __attribute__ ((__nothrow__ , __leaf__));
extern int unshare (int __flags) __attribute__ ((__nothrow__ , __leaf__));
extern int sched_getcpu (void) __attribute__ ((__nothrow__ , __leaf__));
extern int getcpu (unsigned int *, unsigned int *) __attribute__ ((__nothrow__ , __leaf__));
extern int setns (int __fd, int __nstype) __attribute__ ((__nothrow__ , __leaf__));
# 44 "/usr/include/sched.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/cpu-set.h" 1 3 4
# 32 "/usr/include/aarch64-linux-gnu/bits/cpu-set.h" 3 4
typedef unsigned long int __cpu_mask;
typedef struct
{
__cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))];
} cpu_set_t;
# 115 "/usr/include/aarch64-linux-gnu/bits/cpu-set.h" 3 4
extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp)
__attribute__ ((__nothrow__ , __leaf__));
extern cpu_set_t *__sched_cpualloc (size_t __count) __attribute__ ((__nothrow__ , __leaf__)) ;
extern void __sched_cpufree (cpu_set_t *__set) __attribute__ ((__nothrow__ , __leaf__));
# 45 "/usr/include/sched.h" 2 3 4
extern int sched_setparam (__pid_t __pid, const struct sched_param *__param)
__attribute__ ((__nothrow__ , __leaf__));
extern int sched_getparam (__pid_t __pid, struct sched_param *__param) __attribute__ ((__nothrow__ , __leaf__));
extern int sched_setscheduler (__pid_t __pid, int __policy,
const struct sched_param *__param) __attribute__ ((__nothrow__ , __leaf__));
extern int sched_getscheduler (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__));
extern int sched_yield (void) __attribute__ ((__nothrow__ , __leaf__));
extern int sched_get_priority_max (int __algorithm) __attribute__ ((__nothrow__ , __leaf__));
extern int sched_get_priority_min (int __algorithm) __attribute__ ((__nothrow__ , __leaf__));
extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __attribute__ ((__nothrow__ , __leaf__));
# 121 "/usr/include/sched.h" 3 4
extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize,
const cpu_set_t *__cpuset) __attribute__ ((__nothrow__ , __leaf__));
extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize,
cpu_set_t *__cpuset) __attribute__ ((__nothrow__ , __leaf__));
# 23 "/usr/include/pthread.h" 2 3 4
# 1 "/usr/include/time.h" 1 3 4
# 29 "/usr/include/time.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 30 "/usr/include/time.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/time.h" 1 3 4
# 73 "/usr/include/aarch64-linux-gnu/bits/time.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/timex.h" 1 3 4
# 26 "/usr/include/aarch64-linux-gnu/bits/timex.h" 3 4
struct timex
{
unsigned int modes;
__syscall_slong_t offset;
__syscall_slong_t freq;
__syscall_slong_t maxerror;
__syscall_slong_t esterror;
int status;
__syscall_slong_t constant;
__syscall_slong_t precision;
__syscall_slong_t tolerance;
struct timeval time;
__syscall_slong_t tick;
__syscall_slong_t ppsfreq;
__syscall_slong_t jitter;
int shift;
__syscall_slong_t stabil;
__syscall_slong_t jitcnt;
__syscall_slong_t calcnt;
__syscall_slong_t errcnt;
__syscall_slong_t stbcnt;
int tai;
int :32; int :32; int :32; int :32;
int :32; int :32; int :32; int :32;
int :32; int :32; int :32;
};
# 74 "/usr/include/aarch64-linux-gnu/bits/time.h" 2 3 4
extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __attribute__ ((__nothrow__ , __leaf__));
# 34 "/usr/include/time.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_tm.h" 1 3 4
struct tm
{
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
long int tm_gmtoff;
const char *tm_zone;
};
# 40 "/usr/include/time.h" 2 3 4
# 48 "/usr/include/time.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/types/struct_itimerspec.h" 1 3 4
struct itimerspec
{
struct timespec it_interval;
struct timespec it_value;
};
# 49 "/usr/include/time.h" 2 3 4
struct sigevent;
# 68 "/usr/include/time.h" 3 4
extern clock_t clock (void) __attribute__ ((__nothrow__ , __leaf__));
extern time_t time (time_t *__timer) __attribute__ ((__nothrow__ , __leaf__));
extern double difftime (time_t __time1, time_t __time0)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern time_t mktime (struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__));
extern size_t strftime (char *__restrict __s, size_t __maxsize,
const char *__restrict __format,
const struct tm *__restrict __tp) __attribute__ ((__nothrow__ , __leaf__));
extern char *strptime (const char *__restrict __s,
const char *__restrict __fmt, struct tm *__tp)
__attribute__ ((__nothrow__ , __leaf__));
extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
const char *__restrict __format,
const struct tm *__restrict __tp,
locale_t __loc) __attribute__ ((__nothrow__ , __leaf__));
extern char *strptime_l (const char *__restrict __s,
const char *__restrict __fmt, struct tm *__tp,
locale_t __loc) __attribute__ ((__nothrow__ , __leaf__));
extern struct tm *gmtime (const time_t *__timer) __attribute__ ((__nothrow__ , __leaf__));
extern struct tm *localtime (const time_t *__timer) __attribute__ ((__nothrow__ , __leaf__));
extern struct tm *gmtime_r (const time_t *__restrict __timer,
struct tm *__restrict __tp) __attribute__ ((__nothrow__ , __leaf__));
extern struct tm *localtime_r (const time_t *__restrict __timer,
struct tm *__restrict __tp) __attribute__ ((__nothrow__ , __leaf__));
extern char *asctime (const struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__));
extern char *ctime (const time_t *__timer) __attribute__ ((__nothrow__ , __leaf__));
extern char *asctime_r (const struct tm *__restrict __tp,
char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__));
extern char *ctime_r (const time_t *__restrict __timer,
char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__));
extern char *__tzname[2];
extern int __daylight;
extern long int __timezone;
extern char *tzname[2];
extern void tzset (void) __attribute__ ((__nothrow__ , __leaf__));
extern int daylight;
extern long int timezone;
# 190 "/usr/include/time.h" 3 4
extern time_t timegm (struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__));
extern time_t timelocal (struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__));
extern int dysize (int __year) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
# 205 "/usr/include/time.h" 3 4
extern int nanosleep (const struct timespec *__requested_time,
struct timespec *__remaining);
extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __attribute__ ((__nothrow__ , __leaf__));
extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __attribute__ ((__nothrow__ , __leaf__));
extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp)
__attribute__ ((__nothrow__ , __leaf__));
extern int clock_nanosleep (clockid_t __clock_id, int __flags,
const struct timespec *__req,
struct timespec *__rem);
extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __attribute__ ((__nothrow__ , __leaf__));
extern int timer_create (clockid_t __clock_id,
struct sigevent *__restrict __evp,
timer_t *__restrict __timerid) __attribute__ ((__nothrow__ , __leaf__));
extern int timer_delete (timer_t __timerid) __attribute__ ((__nothrow__ , __leaf__));
extern int timer_settime (timer_t __timerid, int __flags,
const struct itimerspec *__restrict __value,
struct itimerspec *__restrict __ovalue) __attribute__ ((__nothrow__ , __leaf__));
extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
__attribute__ ((__nothrow__ , __leaf__));
extern int timer_getoverrun (timer_t __timerid) __attribute__ ((__nothrow__ , __leaf__));
extern int timespec_get (struct timespec *__ts, int __base)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 274 "/usr/include/time.h" 3 4
extern int getdate_err;
# 283 "/usr/include/time.h" 3 4
extern struct tm *getdate (const char *__string);
# 297 "/usr/include/time.h" 3 4
extern int getdate_r (const char *__restrict __string,
struct tm *__restrict __resbufp);
# 24 "/usr/include/pthread.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/setjmp.h" 1 3 4
# 30 "/usr/include/aarch64-linux-gnu/bits/setjmp.h" 3 4
__extension__ typedef unsigned long long __jmp_buf [22];
# 28 "/usr/include/pthread.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 29 "/usr/include/pthread.h" 2 3 4
enum
{
PTHREAD_CREATE_JOINABLE,
PTHREAD_CREATE_DETACHED
};
enum
{
PTHREAD_MUTEX_TIMED_NP,
PTHREAD_MUTEX_RECURSIVE_NP,
PTHREAD_MUTEX_ERRORCHECK_NP,
PTHREAD_MUTEX_ADAPTIVE_NP
,
PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP,
PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP,
PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
, PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP
};
enum
{
PTHREAD_MUTEX_STALLED,
PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED,
PTHREAD_MUTEX_ROBUST,
PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST
};
enum
{
PTHREAD_PRIO_NONE,
PTHREAD_PRIO_INHERIT,
PTHREAD_PRIO_PROTECT
};
# 100 "/usr/include/pthread.h" 3 4
enum
{
PTHREAD_RWLOCK_PREFER_READER_NP,
PTHREAD_RWLOCK_PREFER_WRITER_NP,
PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP,
PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP
};
# 120 "/usr/include/pthread.h" 3 4
enum
{
PTHREAD_INHERIT_SCHED,
PTHREAD_EXPLICIT_SCHED
};
enum
{
PTHREAD_SCOPE_SYSTEM,
PTHREAD_SCOPE_PROCESS
};
enum
{
PTHREAD_PROCESS_PRIVATE,
PTHREAD_PROCESS_SHARED
};
# 155 "/usr/include/pthread.h" 3 4
struct _pthread_cleanup_buffer
{
void (*__routine) (void *);
void *__arg;
int __canceltype;
struct _pthread_cleanup_buffer *__prev;
};
enum
{
PTHREAD_CANCEL_ENABLE,
PTHREAD_CANCEL_DISABLE
};
enum
{
PTHREAD_CANCEL_DEFERRED,
PTHREAD_CANCEL_ASYNCHRONOUS
};
# 193 "/usr/include/pthread.h" 3 4
extern int pthread_create (pthread_t *__restrict __newthread,
const pthread_attr_t *__restrict __attr,
void *(*__start_routine) (void *),
void *__restrict __arg) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));
extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__));
extern int pthread_join (pthread_t __th, void **__thread_return);
extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __attribute__ ((__nothrow__ , __leaf__));
extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
const struct timespec *__abstime);
# 238 "/usr/include/pthread.h" 3 4
extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return,
clockid_t __clockid,
const struct timespec *__abstime);
extern int pthread_detach (pthread_t __th) __attribute__ ((__nothrow__ , __leaf__));
extern pthread_t pthread_self (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int pthread_equal (pthread_t __thread1, pthread_t __thread2)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int pthread_attr_init (pthread_attr_t *__attr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_attr_destroy (pthread_attr_t *__attr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr,
int *__detachstate)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_attr_setdetachstate (pthread_attr_t *__attr,
int __detachstate)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_attr_getguardsize (const pthread_attr_t *__attr,
size_t *__guardsize)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_attr_setguardsize (pthread_attr_t *__attr,
size_t __guardsize)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr,
struct sched_param *__restrict __param)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,
const struct sched_param *__restrict
__param) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict
__attr, int *__restrict __policy)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict
__attr, int *__restrict __inherit)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_attr_setinheritsched (pthread_attr_t *__attr,
int __inherit)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr,
int *__restrict __scope)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict
__attr, void **__restrict __stackaddr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__));
extern int pthread_attr_setstackaddr (pthread_attr_t *__attr,
void *__stackaddr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__));
extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict
__attr, size_t *__restrict __stacksize)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_attr_setstacksize (pthread_attr_t *__attr,
size_t __stacksize)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr,
void **__restrict __stackaddr,
size_t *__restrict __stacksize)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2, 3)));
extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr,
size_t __stacksize) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr,
size_t __cpusetsize,
const cpu_set_t *__cpuset)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr,
size_t __cpusetsize,
cpu_set_t *__cpuset)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
extern int pthread_getattr_default_np (pthread_attr_t *__attr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_setattr_default_np (const pthread_attr_t *__attr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern int pthread_setschedparam (pthread_t __target_thread, int __policy,
const struct sched_param *__param)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
extern int pthread_getschedparam (pthread_t __target_thread,
int *__restrict __policy,
struct sched_param *__restrict __param)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
extern int pthread_setschedprio (pthread_t __target_thread, int __prio)
__attribute__ ((__nothrow__ , __leaf__));
extern int pthread_getname_np (pthread_t __target_thread, char *__buf,
size_t __buflen)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern int pthread_setname_np (pthread_t __target_thread, const char *__name)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern int pthread_getconcurrency (void) __attribute__ ((__nothrow__ , __leaf__));
extern int pthread_setconcurrency (int __level) __attribute__ ((__nothrow__ , __leaf__));
extern int pthread_yield (void) __attribute__ ((__nothrow__ , __leaf__));
extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize,
const cpu_set_t *__cpuset)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize,
cpu_set_t *__cpuset)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
# 470 "/usr/include/pthread.h" 3 4
extern int pthread_once (pthread_once_t *__once_control,
void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2)));
# 482 "/usr/include/pthread.h" 3 4
extern int pthread_setcancelstate (int __state, int *__oldstate);
extern int pthread_setcanceltype (int __type, int *__oldtype);
extern int pthread_cancel (pthread_t __th);
extern void pthread_testcancel (void);
typedef struct
{
struct
{
__jmp_buf __cancel_jmp_buf;
int __mask_was_saved;
} __cancel_jmp_buf[1];
void *__pad[4];
} __pthread_unwind_buf_t __attribute__ ((__aligned__));
# 516 "/usr/include/pthread.h" 3 4
struct __pthread_cleanup_frame
{
void (*__cancel_routine) (void *);
void *__cancel_arg;
int __do_it;
int __cancel_type;
};
# 656 "/usr/include/pthread.h" 3 4
extern void __pthread_register_cancel (__pthread_unwind_buf_t *__buf)
;
# 668 "/usr/include/pthread.h" 3 4
extern void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf)
;
# 691 "/usr/include/pthread.h" 3 4
extern void __pthread_register_cancel_defer (__pthread_unwind_buf_t *__buf)
;
# 704 "/usr/include/pthread.h" 3 4
extern void __pthread_unregister_cancel_restore (__pthread_unwind_buf_t *__buf)
;
extern void __pthread_unwind_next (__pthread_unwind_buf_t *__buf)
__attribute__ ((__noreturn__))
__attribute__ ((__weak__))
;
struct __jmp_buf_tag;
extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) __attribute__ ((__nothrow__));
extern int pthread_mutex_init (pthread_mutex_t *__mutex,
const pthread_mutexattr_t *__mutexattr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_mutex_destroy (pthread_mutex_t *__mutex)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_mutex_trylock (pthread_mutex_t *__mutex)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
const struct timespec *__restrict
__abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex,
clockid_t __clockid,
const struct timespec *__restrict
__abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));
extern int pthread_mutex_unlock (pthread_mutex_t *__mutex)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_mutex_getprioceiling (const pthread_mutex_t *
__restrict __mutex,
int *__restrict __prioceiling)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex,
int __prioceiling,
int *__restrict __old_ceiling)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
extern int pthread_mutex_consistent (pthread_mutex_t *__mutex)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 789 "/usr/include/pthread.h" 3 4
extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t *
__restrict __attr,
int *__restrict __pshared)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr,
int __pshared)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict
__attr, int *__restrict __kind)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t *
__restrict __attr,
int *__restrict __protocol)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr,
int __protocol)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t *
__restrict __attr,
int *__restrict __prioceiling)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr,
int __prioceiling)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr,
int *__robustness)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_mutexattr_getrobust_np (const pthread_mutexattr_t *__attr,
int *__robustness)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr,
int __robustness)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr,
int __robustness)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 871 "/usr/include/pthread.h" 3 4
extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
const pthread_rwlockattr_t *__restrict
__attr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
const struct timespec *__restrict
__abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock,
clockid_t __clockid,
const struct timespec *__restrict
__abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));
extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
const struct timespec *__restrict
__abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock,
clockid_t __clockid,
const struct timespec *__restrict
__abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));
extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t *
__restrict __attr,
int *__restrict __pshared)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr,
int __pshared)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t *
__restrict __attr,
int *__restrict __pref)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr,
int __pref) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
const pthread_condattr_t *__restrict __cond_attr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_cond_destroy (pthread_cond_t *__cond)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_cond_signal (pthread_cond_t *__cond)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_cond_broadcast (pthread_cond_t *__cond)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
pthread_mutex_t *__restrict __mutex)
__attribute__ ((__nonnull__ (1, 2)));
# 997 "/usr/include/pthread.h" 3 4
extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
pthread_mutex_t *__restrict __mutex,
const struct timespec *__restrict __abstime)
__attribute__ ((__nonnull__ (1, 2, 3)));
# 1010 "/usr/include/pthread.h" 3 4
extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond,
pthread_mutex_t *__restrict __mutex,
__clockid_t __clock_id,
const struct timespec *__restrict __abstime)
__attribute__ ((__nonnull__ (1, 2, 4)));
extern int pthread_condattr_init (pthread_condattr_t *__attr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_condattr_destroy (pthread_condattr_t *__attr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_condattr_getpshared (const pthread_condattr_t *
__restrict __attr,
int *__restrict __pshared)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_condattr_setpshared (pthread_condattr_t *__attr,
int __pshared) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_condattr_getclock (const pthread_condattr_t *
__restrict __attr,
__clockid_t *__restrict __clock_id)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_condattr_setclock (pthread_condattr_t *__attr,
__clockid_t __clock_id)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 1056 "/usr/include/pthread.h" 3 4
extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_spin_destroy (pthread_spinlock_t *__lock)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_spin_lock (pthread_spinlock_t *__lock)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_spin_trylock (pthread_spinlock_t *__lock)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_spin_unlock (pthread_spinlock_t *__lock)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier,
const pthread_barrierattr_t *__restrict
__attr, unsigned int __count)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_barrier_destroy (pthread_barrier_t *__barrier)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_barrier_wait (pthread_barrier_t *__barrier)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t *
__restrict __attr,
int *__restrict __pshared)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr,
int __pshared)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 1123 "/usr/include/pthread.h" 3 4
extern int pthread_key_create (pthread_key_t *__key,
void (*__destr_function) (void *))
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int pthread_key_delete (pthread_key_t __key) __attribute__ ((__nothrow__ , __leaf__));
extern void *pthread_getspecific (pthread_key_t __key) __attribute__ ((__nothrow__ , __leaf__));
extern int pthread_setspecific (pthread_key_t __key,
const void *__pointer) __attribute__ ((__nothrow__ , __leaf__)) ;
extern int pthread_getcpuclockid (pthread_t __thread_id,
__clockid_t *__clock_id)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
# 1157 "/usr/include/pthread.h" 3 4
extern int pthread_atfork (void (*__prepare) (void),
void (*__parent) (void),
void (*__child) (void)) __attribute__ ((__nothrow__ , __leaf__));
# 1171 "/usr/include/pthread.h" 3 4
# 44 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2
# 1 "/home/ubuntu/neovim/.deps/usr/include/uv/threadpool.h" 1
# 30 "/home/ubuntu/neovim/.deps/usr/include/uv/threadpool.h"
# 30 "/home/ubuntu/neovim/.deps/usr/include/uv/threadpool.h"
struct uv__work {
void (*work)(struct uv__work *w);
void (*done)(struct uv__work *w, int status);
struct uv_loop_s* loop;
struct uv__queue wq;
};
# 47 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2
# 1 "/home/ubuntu/neovim/.deps/usr/include/uv/linux.h" 1
# 50 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h" 2
# 85 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h"
struct uv__io_s;
struct uv_loop_s;
typedef void (*uv__io_cb)(struct uv_loop_s* loop,
struct uv__io_s* w,
unsigned int events);
typedef struct uv__io_s uv__io_t;
struct uv__io_s {
uv__io_cb cb;
struct uv__queue pending_queue;
struct uv__queue watcher_queue;
unsigned int pevents;
unsigned int events;
int fd;
};
# 120 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h"
typedef struct uv_buf_t {
char* base;
size_t len;
} uv_buf_t;
typedef int uv_file;
typedef int uv_os_sock_t;
typedef int uv_os_fd_t;
typedef pid_t uv_pid_t;
typedef pthread_once_t uv_once_t;
typedef pthread_t uv_thread_t;
typedef pthread_mutex_t uv_mutex_t;
typedef pthread_rwlock_t uv_rwlock_t;
typedef sem_t uv_sem_t;
typedef pthread_cond_t uv_cond_t;
typedef pthread_key_t uv_key_t;
# 161 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h"
typedef pthread_barrier_t uv_barrier_t;
typedef gid_t uv_gid_t;
typedef uid_t uv_uid_t;
typedef struct dirent uv__dirent_t;
# 215 "/home/ubuntu/neovim/.deps/usr/include/uv/unix.h"
typedef struct {
void* handle;
char* errmsg;
} uv_lib_t;
# 72 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 2
# 191 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
typedef enum {
UV_E2BIG = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
7
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EACCES = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
13
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EADDRINUSE = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
98
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EADDRNOTAVAIL = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
99
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EAFNOSUPPORT = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
97
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EAGAIN = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
11
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EAI_ADDRFAMILY = (-3000), UV_EAI_AGAIN = (-3001), UV_EAI_BADFLAGS = (-3002), UV_EAI_BADHINTS = (-3013), UV_EAI_CANCELED = (-3003), UV_EAI_FAIL = (-3004), UV_EAI_FAMILY = (-3005), UV_EAI_MEMORY = (-3006), UV_EAI_NODATA = (-3007), UV_EAI_NONAME = (-3008), UV_EAI_OVERFLOW = (-3009), UV_EAI_PROTOCOL = (-3014), UV_EAI_SERVICE = (-3010), UV_EAI_SOCKTYPE = (-3011), UV_EALREADY = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
114
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EBADF = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
9
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EBUSY = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
16
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ECANCELED = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
125
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ECHARSET = (-4080), UV_ECONNABORTED = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
103
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ECONNREFUSED = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
111
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ECONNRESET = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
104
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EDESTADDRREQ = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
89
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EEXIST = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
17
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EFAULT = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
14
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EFBIG = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
27
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EHOSTUNREACH = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
113
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EINTR = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
4
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EINVAL = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
22
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EIO = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
5
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EISCONN = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
106
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EISDIR = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
21
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ELOOP = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
40
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EMFILE = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
24
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EMSGSIZE = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
90
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ENAMETOOLONG = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
36
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ENETDOWN = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
100
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ENETUNREACH = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
101
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ENFILE = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
23
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ENOBUFS = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
105
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ENODEV = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
19
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ENOENT = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
2
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ENOMEM = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
12
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ENONET = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
64
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ENOPROTOOPT = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
92
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ENOSPC = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
28
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ENOSYS = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
38
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ENOTCONN = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
107
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ENOTDIR = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
20
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ENOTEMPTY = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
39
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ENOTSOCK = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
88
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ENOTSUP = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
95
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EOVERFLOW = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
75
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EPERM = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
1
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EPIPE = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
32
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EPROTO = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
71
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EPROTONOSUPPORT = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
93
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EPROTOTYPE = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
91
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ERANGE = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
34
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EROFS = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
30
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ESHUTDOWN = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
108
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ESPIPE = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
29
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ESRCH = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
3
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ETIMEDOUT = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
110
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ETXTBSY = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
26
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EXDEV = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
18
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_UNKNOWN = (-4094), UV_EOF = (-4095), UV_ENXIO = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
6
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EMLINK = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
31
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EHOSTDOWN = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
112
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EREMOTEIO = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
121
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ENOTTY = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
25
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EFTYPE = (-4028), UV_EILSEQ = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
84
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ESOCKTNOSUPPORT = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
94
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_ENODATA = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
61
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)), UV_EUNATCH = (-(
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
49
# 193 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
)),
UV_ERRNO_MAX = (-4095) - 1
} uv_errno_t;
typedef enum {
UV_UNKNOWN_HANDLE = 0,
UV_ASYNC, UV_CHECK, UV_FS_EVENT, UV_FS_POLL, UV_HANDLE, UV_IDLE, UV_NAMED_PIPE, UV_POLL, UV_PREPARE, UV_PROCESS, UV_STREAM, UV_TCP, UV_TIMER, UV_TTY, UV_UDP, UV_SIGNAL,
UV_FILE,
UV_HANDLE_TYPE_MAX
} uv_handle_type;
typedef enum {
UV_UNKNOWN_REQ = 0,
UV_REQ, UV_CONNECT, UV_WRITE, UV_SHUTDOWN, UV_UDP_SEND, UV_FS, UV_WORK, UV_GETADDRINFO, UV_GETNAMEINFO, UV_RANDOM,
UV_REQ_TYPE_MAX
} uv_req_type;
typedef struct uv_loop_s uv_loop_t;
typedef struct uv_handle_s uv_handle_t;
typedef struct uv_dir_s uv_dir_t;
typedef struct uv_stream_s uv_stream_t;
typedef struct uv_tcp_s uv_tcp_t;
typedef struct uv_udp_s uv_udp_t;
typedef struct uv_pipe_s uv_pipe_t;
typedef struct uv_tty_s uv_tty_t;
typedef struct uv_poll_s uv_poll_t;
typedef struct uv_timer_s uv_timer_t;
typedef struct uv_prepare_s uv_prepare_t;
typedef struct uv_check_s uv_check_t;
typedef struct uv_idle_s uv_idle_t;
typedef struct uv_async_s uv_async_t;
typedef struct uv_process_s uv_process_t;
typedef struct uv_fs_event_s uv_fs_event_t;
typedef struct uv_fs_poll_s uv_fs_poll_t;
typedef struct uv_signal_s uv_signal_t;
typedef struct uv_req_s uv_req_t;
typedef struct uv_getaddrinfo_s uv_getaddrinfo_t;
typedef struct uv_getnameinfo_s uv_getnameinfo_t;
typedef struct uv_shutdown_s uv_shutdown_t;
typedef struct uv_write_s uv_write_t;
typedef struct uv_connect_s uv_connect_t;
typedef struct uv_udp_send_s uv_udp_send_t;
typedef struct uv_fs_s uv_fs_t;
typedef struct uv_work_s uv_work_t;
typedef struct uv_random_s uv_random_t;
typedef struct uv_env_item_s uv_env_item_t;
typedef struct uv_cpu_info_s uv_cpu_info_t;
typedef struct uv_interface_address_s uv_interface_address_t;
typedef struct uv_dirent_s uv_dirent_t;
typedef struct uv_passwd_s uv_passwd_t;
typedef struct uv_group_s uv_group_t;
typedef struct uv_utsname_s uv_utsname_t;
typedef struct uv_statfs_s uv_statfs_t;
typedef struct uv_metrics_s uv_metrics_t;
typedef enum {
UV_LOOP_BLOCK_SIGNAL = 0,
UV_METRICS_IDLE_TIME
} uv_loop_option;
typedef enum {
UV_RUN_DEFAULT = 0,
UV_RUN_ONCE,
UV_RUN_NOWAIT
} uv_run_mode;
__attribute__((visibility("default"))) unsigned int uv_version(void);
__attribute__((visibility("default"))) const char* uv_version_string(void);
typedef void* (*uv_malloc_func)(size_t size);
typedef void* (*uv_realloc_func)(void* ptr, size_t size);
typedef void* (*uv_calloc_func)(size_t count, size_t size);
typedef void (*uv_free_func)(void* ptr);
__attribute__((visibility("default"))) void uv_library_shutdown(void);
__attribute__((visibility("default"))) int uv_replace_allocator(uv_malloc_func malloc_func,
uv_realloc_func realloc_func,
uv_calloc_func calloc_func,
uv_free_func free_func);
__attribute__((visibility("default"))) uv_loop_t* uv_default_loop(void);
__attribute__((visibility("default"))) int uv_loop_init(uv_loop_t* loop);
__attribute__((visibility("default"))) int uv_loop_close(uv_loop_t* loop);
__attribute__((visibility("default"))) uv_loop_t* uv_loop_new(void);
__attribute__((visibility("default"))) void uv_loop_delete(uv_loop_t*);
__attribute__((visibility("default"))) size_t uv_loop_size(void);
__attribute__((visibility("default"))) int uv_loop_alive(const uv_loop_t* loop);
__attribute__((visibility("default"))) int uv_loop_configure(uv_loop_t* loop, uv_loop_option option, ...);
__attribute__((visibility("default"))) int uv_loop_fork(uv_loop_t* loop);
__attribute__((visibility("default"))) int uv_run(uv_loop_t*, uv_run_mode mode);
__attribute__((visibility("default"))) void uv_stop(uv_loop_t*);
__attribute__((visibility("default"))) void uv_ref(uv_handle_t*);
__attribute__((visibility("default"))) void uv_unref(uv_handle_t*);
__attribute__((visibility("default"))) int uv_has_ref(const uv_handle_t*);
__attribute__((visibility("default"))) void uv_update_time(uv_loop_t*);
__attribute__((visibility("default"))) uint64_t uv_now(const uv_loop_t*);
__attribute__((visibility("default"))) int uv_backend_fd(const uv_loop_t*);
__attribute__((visibility("default"))) int uv_backend_timeout(const uv_loop_t*);
typedef void (*uv_alloc_cb)(uv_handle_t* handle,
size_t suggested_size,
uv_buf_t* buf);
typedef void (*uv_read_cb)(uv_stream_t* stream,
ssize_t nread,
const uv_buf_t* buf);
typedef void (*uv_write_cb)(uv_write_t* req, int status);
typedef void (*uv_connect_cb)(uv_connect_t* req, int status);
typedef void (*uv_shutdown_cb)(uv_shutdown_t* req, int status);
typedef void (*uv_connection_cb)(uv_stream_t* server, int status);
typedef void (*uv_close_cb)(uv_handle_t* handle);
typedef void (*uv_poll_cb)(uv_poll_t* handle, int status, int events);
typedef void (*uv_timer_cb)(uv_timer_t* handle);
typedef void (*uv_async_cb)(uv_async_t* handle);
typedef void (*uv_prepare_cb)(uv_prepare_t* handle);
typedef void (*uv_check_cb)(uv_check_t* handle);
typedef void (*uv_idle_cb)(uv_idle_t* handle);
typedef void (*uv_exit_cb)(uv_process_t*, int64_t exit_status, int term_signal);
typedef void (*uv_walk_cb)(uv_handle_t* handle, void* arg);
typedef void (*uv_fs_cb)(uv_fs_t* req);
typedef void (*uv_work_cb)(uv_work_t* req);
typedef void (*uv_after_work_cb)(uv_work_t* req, int status);
typedef void (*uv_getaddrinfo_cb)(uv_getaddrinfo_t* req,
int status,
struct addrinfo* res);
typedef void (*uv_getnameinfo_cb)(uv_getnameinfo_t* req,
int status,
const char* hostname,
const char* service);
typedef void (*uv_random_cb)(uv_random_t* req,
int status,
void* buf,
size_t buflen);
typedef enum {
UV_CLOCK_MONOTONIC,
UV_CLOCK_REALTIME
} uv_clock_id;
typedef struct {
long tv_sec;
long tv_nsec;
} uv_timespec_t;
typedef struct {
int64_t tv_sec;
int32_t tv_nsec;
} uv_timespec64_t;
typedef struct {
long tv_sec;
long tv_usec;
} uv_timeval_t;
typedef struct {
int64_t tv_sec;
int32_t tv_usec;
} uv_timeval64_t;
typedef struct {
uint64_t st_dev;
uint64_t st_mode;
uint64_t st_nlink;
uint64_t st_uid;
uint64_t st_gid;
uint64_t st_rdev;
uint64_t st_ino;
uint64_t st_size;
uint64_t st_blksize;
uint64_t st_blocks;
uint64_t st_flags;
uint64_t st_gen;
uv_timespec_t st_atim;
uv_timespec_t st_mtim;
uv_timespec_t st_ctim;
uv_timespec_t st_birthtim;
} uv_stat_t;
typedef void (*uv_fs_event_cb)(uv_fs_event_t* handle,
const char* filename,
int events,
int status);
typedef void (*uv_fs_poll_cb)(uv_fs_poll_t* handle,
int status,
const uv_stat_t* prev,
const uv_stat_t* curr);
typedef void (*uv_signal_cb)(uv_signal_t* handle, int signum);
typedef enum {
UV_LEAVE_GROUP = 0,
UV_JOIN_GROUP
} uv_membership;
__attribute__((visibility("default"))) int uv_translate_sys_error(int sys_errno);
__attribute__((visibility("default"))) const char* uv_strerror(int err);
__attribute__((visibility("default"))) char* uv_strerror_r(int err, char* buf, size_t buflen);
__attribute__((visibility("default"))) const char* uv_err_name(int err);
__attribute__((visibility("default"))) char* uv_err_name_r(int err, char* buf, size_t buflen);
# 440 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
struct uv_req_s {
void* data; uv_req_type type; void* reserved[6];
};
__attribute__((visibility("default"))) int uv_shutdown(uv_shutdown_t* req,
uv_stream_t* handle,
uv_shutdown_cb cb);
struct uv_shutdown_s {
void* data; uv_req_type type; void* reserved[6];
uv_stream_t* handle;
uv_shutdown_cb cb;
};
# 477 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
struct uv_handle_s {
void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
};
__attribute__((visibility("default"))) size_t uv_handle_size(uv_handle_type type);
__attribute__((visibility("default"))) uv_handle_type uv_handle_get_type(const uv_handle_t* handle);
__attribute__((visibility("default"))) const char* uv_handle_type_name(uv_handle_type type);
__attribute__((visibility("default"))) void* uv_handle_get_data(const uv_handle_t* handle);
__attribute__((visibility("default"))) uv_loop_t* uv_handle_get_loop(const uv_handle_t* handle);
__attribute__((visibility("default"))) void uv_handle_set_data(uv_handle_t* handle, void* data);
__attribute__((visibility("default"))) size_t uv_req_size(uv_req_type type);
__attribute__((visibility("default"))) void* uv_req_get_data(const uv_req_t* req);
__attribute__((visibility("default"))) void uv_req_set_data(uv_req_t* req, void* data);
__attribute__((visibility("default"))) uv_req_type uv_req_get_type(const uv_req_t* req);
__attribute__((visibility("default"))) const char* uv_req_type_name(uv_req_type type);
__attribute__((visibility("default"))) int uv_is_active(const uv_handle_t* handle);
__attribute__((visibility("default"))) void uv_walk(uv_loop_t* loop, uv_walk_cb walk_cb, void* arg);
__attribute__((visibility("default"))) void uv_print_all_handles(uv_loop_t* loop, FILE* stream);
__attribute__((visibility("default"))) void uv_print_active_handles(uv_loop_t* loop, FILE* stream);
__attribute__((visibility("default"))) void uv_close(uv_handle_t* handle, uv_close_cb close_cb);
__attribute__((visibility("default"))) int uv_send_buffer_size(uv_handle_t* handle, int* value);
__attribute__((visibility("default"))) int uv_recv_buffer_size(uv_handle_t* handle, int* value);
__attribute__((visibility("default"))) int uv_fileno(const uv_handle_t* handle, uv_os_fd_t* fd);
__attribute__((visibility("default"))) uv_buf_t uv_buf_init(char* base, unsigned int len);
__attribute__((visibility("default"))) int uv_pipe(uv_file fds[2], int read_flags, int write_flags);
__attribute__((visibility("default"))) int uv_socketpair(int type,
int protocol,
uv_os_sock_t socket_vector[2],
int flags0,
int flags1);
# 533 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
struct uv_stream_s {
void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
size_t write_queue_size; uv_alloc_cb alloc_cb; uv_read_cb read_cb; uv_connect_t *connect_req; uv_shutdown_t *shutdown_req; uv__io_t io_watcher; struct uv__queue write_queue; struct uv__queue write_completed_queue; uv_connection_cb connection_cb; int delayed_error; int accepted_fd; void* queued_fds;
};
__attribute__((visibility("default"))) size_t uv_stream_get_write_queue_size(const uv_stream_t* stream);
__attribute__((visibility("default"))) int uv_listen(uv_stream_t* stream, int backlog, uv_connection_cb cb);
__attribute__((visibility("default"))) int uv_accept(uv_stream_t* server, uv_stream_t* client);
__attribute__((visibility("default"))) int uv_read_start(uv_stream_t*,
uv_alloc_cb alloc_cb,
uv_read_cb read_cb);
__attribute__((visibility("default"))) int uv_read_stop(uv_stream_t*);
__attribute__((visibility("default"))) int uv_write(uv_write_t* req,
uv_stream_t* handle,
const uv_buf_t bufs[],
unsigned int nbufs,
uv_write_cb cb);
__attribute__((visibility("default"))) int uv_write2(uv_write_t* req,
uv_stream_t* handle,
const uv_buf_t bufs[],
unsigned int nbufs,
uv_stream_t* send_handle,
uv_write_cb cb);
__attribute__((visibility("default"))) int uv_try_write(uv_stream_t* handle,
const uv_buf_t bufs[],
unsigned int nbufs);
__attribute__((visibility("default"))) int uv_try_write2(uv_stream_t* handle,
const uv_buf_t bufs[],
unsigned int nbufs,
uv_stream_t* send_handle);
struct uv_write_s {
void* data; uv_req_type type; void* reserved[6];
uv_write_cb cb;
uv_stream_t* send_handle;
uv_stream_t* handle;
struct uv__queue queue; unsigned int write_index; uv_buf_t* bufs; unsigned int nbufs; int error; uv_buf_t bufsml[4];
};
__attribute__((visibility("default"))) int uv_is_readable(const uv_stream_t* handle);
__attribute__((visibility("default"))) int uv_is_writable(const uv_stream_t* handle);
__attribute__((visibility("default"))) int uv_stream_set_blocking(uv_stream_t* handle, int blocking);
__attribute__((visibility("default"))) int uv_is_closing(const uv_handle_t* handle);
struct uv_tcp_s {
void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
size_t write_queue_size; uv_alloc_cb alloc_cb; uv_read_cb read_cb; uv_connect_t *connect_req; uv_shutdown_t *shutdown_req; uv__io_t io_watcher; struct uv__queue write_queue; struct uv__queue write_completed_queue; uv_connection_cb connection_cb; int delayed_error; int accepted_fd; void* queued_fds;
};
__attribute__((visibility("default"))) int uv_tcp_init(uv_loop_t*, uv_tcp_t* handle);
__attribute__((visibility("default"))) int uv_tcp_init_ex(uv_loop_t*, uv_tcp_t* handle, unsigned int flags);
__attribute__((visibility("default"))) int uv_tcp_open(uv_tcp_t* handle, uv_os_sock_t sock);
__attribute__((visibility("default"))) int uv_tcp_nodelay(uv_tcp_t* handle, int enable);
__attribute__((visibility("default"))) int uv_tcp_keepalive(uv_tcp_t* handle,
int enable,
unsigned int delay);
__attribute__((visibility("default"))) int uv_tcp_simultaneous_accepts(uv_tcp_t* handle, int enable);
enum uv_tcp_flags {
UV_TCP_IPV6ONLY = 1
};
__attribute__((visibility("default"))) int uv_tcp_bind(uv_tcp_t* handle,
const struct sockaddr* addr,
unsigned int flags);
__attribute__((visibility("default"))) int uv_tcp_getsockname(const uv_tcp_t* handle,
struct sockaddr* name,
int* namelen);
__attribute__((visibility("default"))) int uv_tcp_getpeername(const uv_tcp_t* handle,
struct sockaddr* name,
int* namelen);
__attribute__((visibility("default"))) int uv_tcp_close_reset(uv_tcp_t* handle, uv_close_cb close_cb);
__attribute__((visibility("default"))) int uv_tcp_connect(uv_connect_t* req,
uv_tcp_t* handle,
const struct sockaddr* addr,
uv_connect_cb cb);
struct uv_connect_s {
void* data; uv_req_type type; void* reserved[6];
uv_connect_cb cb;
uv_stream_t* handle;
struct uv__queue queue;
};
enum uv_udp_flags {
UV_UDP_IPV6ONLY = 1,
UV_UDP_PARTIAL = 2,
# 654 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
UV_UDP_REUSEADDR = 4,
UV_UDP_MMSG_CHUNK = 8,
UV_UDP_MMSG_FREE = 16,
UV_UDP_LINUX_RECVERR = 32,
UV_UDP_RECVMMSG = 256
};
typedef void (*uv_udp_send_cb)(uv_udp_send_t* req, int status);
typedef void (*uv_udp_recv_cb)(uv_udp_t* handle,
ssize_t nread,
const uv_buf_t* buf,
const struct sockaddr* addr,
unsigned flags);
struct uv_udp_s {
void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
size_t send_queue_size;
size_t send_queue_count;
uv_alloc_cb alloc_cb; uv_udp_recv_cb recv_cb; uv__io_t io_watcher; struct uv__queue write_queue; struct uv__queue write_completed_queue;
};
struct uv_udp_send_s {
void* data; uv_req_type type; void* reserved[6];
uv_udp_t* handle;
uv_udp_send_cb cb;
struct uv__queue queue; struct sockaddr_storage addr; unsigned int nbufs; uv_buf_t* bufs; ssize_t status; uv_udp_send_cb send_cb; uv_buf_t bufsml[4];
};
__attribute__((visibility("default"))) int uv_udp_init(uv_loop_t*, uv_udp_t* handle);
__attribute__((visibility("default"))) int uv_udp_init_ex(uv_loop_t*, uv_udp_t* handle, unsigned int flags);
__attribute__((visibility("default"))) int uv_udp_open(uv_udp_t* handle, uv_os_sock_t sock);
__attribute__((visibility("default"))) int uv_udp_bind(uv_udp_t* handle,
const struct sockaddr* addr,
unsigned int flags);
__attribute__((visibility("default"))) int uv_udp_connect(uv_udp_t* handle, const struct sockaddr* addr);
__attribute__((visibility("default"))) int uv_udp_getpeername(const uv_udp_t* handle,
struct sockaddr* name,
int* namelen);
__attribute__((visibility("default"))) int uv_udp_getsockname(const uv_udp_t* handle,
struct sockaddr* name,
int* namelen);
__attribute__((visibility("default"))) int uv_udp_set_membership(uv_udp_t* handle,
const char* multicast_addr,
const char* interface_addr,
uv_membership membership);
__attribute__((visibility("default"))) int uv_udp_set_source_membership(uv_udp_t* handle,
const char* multicast_addr,
const char* interface_addr,
const char* source_addr,
uv_membership membership);
__attribute__((visibility("default"))) int uv_udp_set_multicast_loop(uv_udp_t* handle, int on);
__attribute__((visibility("default"))) int uv_udp_set_multicast_ttl(uv_udp_t* handle, int ttl);
__attribute__((visibility("default"))) int uv_udp_set_multicast_interface(uv_udp_t* handle,
const char* interface_addr);
__attribute__((visibility("default"))) int uv_udp_set_broadcast(uv_udp_t* handle, int on);
__attribute__((visibility("default"))) int uv_udp_set_ttl(uv_udp_t* handle, int ttl);
__attribute__((visibility("default"))) int uv_udp_send(uv_udp_send_t* req,
uv_udp_t* handle,
const uv_buf_t bufs[],
unsigned int nbufs,
const struct sockaddr* addr,
uv_udp_send_cb send_cb);
__attribute__((visibility("default"))) int uv_udp_try_send(uv_udp_t* handle,
const uv_buf_t bufs[],
unsigned int nbufs,
const struct sockaddr* addr);
__attribute__((visibility("default"))) int uv_udp_recv_start(uv_udp_t* handle,
uv_alloc_cb alloc_cb,
uv_udp_recv_cb recv_cb);
__attribute__((visibility("default"))) int uv_udp_using_recvmmsg(const uv_udp_t* handle);
__attribute__((visibility("default"))) int uv_udp_recv_stop(uv_udp_t* handle);
__attribute__((visibility("default"))) size_t uv_udp_get_send_queue_size(const uv_udp_t* handle);
__attribute__((visibility("default"))) size_t uv_udp_get_send_queue_count(const uv_udp_t* handle);
struct uv_tty_s {
void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
size_t write_queue_size; uv_alloc_cb alloc_cb; uv_read_cb read_cb; uv_connect_t *connect_req; uv_shutdown_t *shutdown_req; uv__io_t io_watcher; struct uv__queue write_queue; struct uv__queue write_completed_queue; uv_connection_cb connection_cb; int delayed_error; int accepted_fd; void* queued_fds;
struct termios orig_termios; int mode;
};
typedef enum {
UV_TTY_MODE_NORMAL,
UV_TTY_MODE_RAW,
UV_TTY_MODE_IO
} uv_tty_mode_t;
typedef enum {
UV_TTY_SUPPORTED,
UV_TTY_UNSUPPORTED
} uv_tty_vtermstate_t;
__attribute__((visibility("default"))) int uv_tty_init(uv_loop_t*, uv_tty_t*, uv_file fd, int readable);
__attribute__((visibility("default"))) int uv_tty_set_mode(uv_tty_t*, uv_tty_mode_t mode);
__attribute__((visibility("default"))) int uv_tty_reset_mode(void);
__attribute__((visibility("default"))) int uv_tty_get_winsize(uv_tty_t*, int* width, int* height);
__attribute__((visibility("default"))) void uv_tty_set_vterm_state(uv_tty_vtermstate_t state);
__attribute__((visibility("default"))) int uv_tty_get_vterm_state(uv_tty_vtermstate_t* state);
# 809 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
__attribute__((visibility("default"))) uv_handle_type uv_guess_handle(uv_file file);
enum {
UV_PIPE_NO_TRUNCATE = 1u << 0
};
struct uv_pipe_s {
void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
size_t write_queue_size; uv_alloc_cb alloc_cb; uv_read_cb read_cb; uv_connect_t *connect_req; uv_shutdown_t *shutdown_req; uv__io_t io_watcher; struct uv__queue write_queue; struct uv__queue write_completed_queue; uv_connection_cb connection_cb; int delayed_error; int accepted_fd; void* queued_fds;
int ipc;
const char* pipe_fname;
};
__attribute__((visibility("default"))) int uv_pipe_init(uv_loop_t*, uv_pipe_t* handle, int ipc);
__attribute__((visibility("default"))) int uv_pipe_open(uv_pipe_t*, uv_file file);
__attribute__((visibility("default"))) int uv_pipe_bind(uv_pipe_t* handle, const char* name);
__attribute__((visibility("default"))) int uv_pipe_bind2(uv_pipe_t* handle,
const char* name,
size_t namelen,
unsigned int flags);
__attribute__((visibility("default"))) void uv_pipe_connect(uv_connect_t* req,
uv_pipe_t* handle,
const char* name,
uv_connect_cb cb);
__attribute__((visibility("default"))) int uv_pipe_connect2(uv_connect_t* req,
uv_pipe_t* handle,
const char* name,
size_t namelen,
unsigned int flags,
uv_connect_cb cb);
__attribute__((visibility("default"))) int uv_pipe_getsockname(const uv_pipe_t* handle,
char* buffer,
size_t* size);
__attribute__((visibility("default"))) int uv_pipe_getpeername(const uv_pipe_t* handle,
char* buffer,
size_t* size);
__attribute__((visibility("default"))) void uv_pipe_pending_instances(uv_pipe_t* handle, int count);
__attribute__((visibility("default"))) int uv_pipe_pending_count(uv_pipe_t* handle);
__attribute__((visibility("default"))) uv_handle_type uv_pipe_pending_type(uv_pipe_t* handle);
__attribute__((visibility("default"))) int uv_pipe_chmod(uv_pipe_t* handle, int flags);
struct uv_poll_s {
void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
uv_poll_cb poll_cb;
uv__io_t io_watcher;
};
enum uv_poll_event {
UV_READABLE = 1,
UV_WRITABLE = 2,
UV_DISCONNECT = 4,
UV_PRIORITIZED = 8
};
__attribute__((visibility("default"))) int uv_poll_init(uv_loop_t* loop, uv_poll_t* handle, int fd);
__attribute__((visibility("default"))) int uv_poll_init_socket(uv_loop_t* loop,
uv_poll_t* handle,
uv_os_sock_t socket);
__attribute__((visibility("default"))) int uv_poll_start(uv_poll_t* handle, int events, uv_poll_cb cb);
__attribute__((visibility("default"))) int uv_poll_stop(uv_poll_t* handle);
struct uv_prepare_s {
void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
uv_prepare_cb prepare_cb; struct uv__queue queue;
};
__attribute__((visibility("default"))) int uv_prepare_init(uv_loop_t*, uv_prepare_t* prepare);
__attribute__((visibility("default"))) int uv_prepare_start(uv_prepare_t* prepare, uv_prepare_cb cb);
__attribute__((visibility("default"))) int uv_prepare_stop(uv_prepare_t* prepare);
struct uv_check_s {
void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
uv_check_cb check_cb; struct uv__queue queue;
};
__attribute__((visibility("default"))) int uv_check_init(uv_loop_t*, uv_check_t* check);
__attribute__((visibility("default"))) int uv_check_start(uv_check_t* check, uv_check_cb cb);
__attribute__((visibility("default"))) int uv_check_stop(uv_check_t* check);
struct uv_idle_s {
void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
uv_idle_cb idle_cb; struct uv__queue queue;
};
__attribute__((visibility("default"))) int uv_idle_init(uv_loop_t*, uv_idle_t* idle);
__attribute__((visibility("default"))) int uv_idle_start(uv_idle_t* idle, uv_idle_cb cb);
__attribute__((visibility("default"))) int uv_idle_stop(uv_idle_t* idle);
struct uv_async_s {
void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
uv_async_cb async_cb; struct uv__queue queue; int pending;
};
__attribute__((visibility("default"))) int uv_async_init(uv_loop_t*,
uv_async_t* async,
uv_async_cb async_cb);
__attribute__((visibility("default"))) int uv_async_send(uv_async_t* async);
struct uv_timer_s {
void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
uv_timer_cb timer_cb; union { void* heap[3]; struct uv__queue queue; } node; uint64_t timeout; uint64_t repeat; uint64_t start_id;
};
__attribute__((visibility("default"))) int uv_timer_init(uv_loop_t*, uv_timer_t* handle);
__attribute__((visibility("default"))) int uv_timer_start(uv_timer_t* handle,
uv_timer_cb cb,
uint64_t timeout,
uint64_t repeat);
__attribute__((visibility("default"))) int uv_timer_stop(uv_timer_t* handle);
__attribute__((visibility("default"))) int uv_timer_again(uv_timer_t* handle);
__attribute__((visibility("default"))) void uv_timer_set_repeat(uv_timer_t* handle, uint64_t repeat);
__attribute__((visibility("default"))) uint64_t uv_timer_get_repeat(const uv_timer_t* handle);
__attribute__((visibility("default"))) uint64_t uv_timer_get_due_in(const uv_timer_t* handle);
struct uv_getaddrinfo_s {
void* data; uv_req_type type; void* reserved[6];
uv_loop_t* loop;
struct uv__work work_req; uv_getaddrinfo_cb cb; struct addrinfo* hints; char* hostname; char* service; struct addrinfo* addrinfo; int retcode;
};
__attribute__((visibility("default"))) int uv_getaddrinfo(uv_loop_t* loop,
uv_getaddrinfo_t* req,
uv_getaddrinfo_cb getaddrinfo_cb,
const char* node,
const char* service,
const struct addrinfo* hints);
__attribute__((visibility("default"))) void uv_freeaddrinfo(struct addrinfo* ai);
struct uv_getnameinfo_s {
void* data; uv_req_type type; void* reserved[6];
uv_loop_t* loop;
struct uv__work work_req; uv_getnameinfo_cb getnameinfo_cb; struct sockaddr_storage storage; int flags; char host[
# 974 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
1025
# 974 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
]; char service[
# 974 "/home/ubuntu/neovim/.deps/usr/include/uv.h" 3 4
32
# 974 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
]; int retcode;
};
__attribute__((visibility("default"))) int uv_getnameinfo(uv_loop_t* loop,
uv_getnameinfo_t* req,
uv_getnameinfo_cb getnameinfo_cb,
const struct sockaddr* addr,
int flags);
typedef enum {
UV_IGNORE = 0x00,
UV_CREATE_PIPE = 0x01,
UV_INHERIT_FD = 0x02,
UV_INHERIT_STREAM = 0x04,
UV_READABLE_PIPE = 0x10,
UV_WRITABLE_PIPE = 0x20,
UV_NONBLOCK_PIPE = 0x40,
UV_OVERLAPPED_PIPE = 0x40
} uv_stdio_flags;
typedef struct uv_stdio_container_s {
uv_stdio_flags flags;
union {
uv_stream_t* stream;
int fd;
} data;
} uv_stdio_container_t;
typedef struct uv_process_options_s {
uv_exit_cb exit_cb;
const char* file;
char** args;
char** env;
const char* cwd;
unsigned int flags;
# 1052 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
int stdio_count;
uv_stdio_container_t* stdio;
uv_uid_t uid;
uv_gid_t gid;
} uv_process_options_t;
enum uv_process_flags {
UV_PROCESS_SETUID = (1 << 0),
UV_PROCESS_SETGID = (1 << 1),
UV_PROCESS_WINDOWS_VERBATIM_ARGUMENTS = (1 << 2),
UV_PROCESS_DETACHED = (1 << 3),
UV_PROCESS_WINDOWS_HIDE = (1 << 4),
UV_PROCESS_WINDOWS_HIDE_CONSOLE = (1 << 5),
UV_PROCESS_WINDOWS_HIDE_GUI = (1 << 6),
UV_PROCESS_WINDOWS_FILE_PATH_EXACT_NAME = (1 << 7)
};
struct uv_process_s {
void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
uv_exit_cb exit_cb;
int pid;
struct uv__queue queue; int status;
};
__attribute__((visibility("default"))) int uv_spawn(uv_loop_t* loop,
uv_process_t* handle,
const uv_process_options_t* options);
__attribute__((visibility("default"))) int uv_process_kill(uv_process_t*, int signum);
__attribute__((visibility("default"))) int uv_kill(int pid, int signum);
__attribute__((visibility("default"))) uv_pid_t uv_process_get_pid(const uv_process_t*);
struct uv_work_s {
void* data; uv_req_type type; void* reserved[6];
uv_loop_t* loop;
uv_work_cb work_cb;
uv_after_work_cb after_work_cb;
struct uv__work work_req;
};
__attribute__((visibility("default"))) int uv_queue_work(uv_loop_t* loop,
uv_work_t* req,
uv_work_cb work_cb,
uv_after_work_cb after_work_cb);
__attribute__((visibility("default"))) int uv_cancel(uv_req_t* req);
struct uv_cpu_times_s {
uint64_t user;
uint64_t nice;
uint64_t sys;
uint64_t idle;
uint64_t irq;
};
struct uv_cpu_info_s {
char* model;
int speed;
struct uv_cpu_times_s cpu_times;
};
struct uv_interface_address_s {
char* name;
char phys_addr[6];
int is_internal;
union {
struct sockaddr_in address4;
struct sockaddr_in6 address6;
} address;
union {
struct sockaddr_in netmask4;
struct sockaddr_in6 netmask6;
} netmask;
};
struct uv_passwd_s {
char* username;
unsigned long uid;
unsigned long gid;
char* shell;
char* homedir;
};
struct uv_group_s {
char* groupname;
unsigned long gid;
char** members;
};
struct uv_utsname_s {
char sysname[256];
char release[256];
char version[256];
char machine[256];
};
struct uv_statfs_s {
uint64_t f_type;
uint64_t f_bsize;
uint64_t f_blocks;
uint64_t f_bfree;
uint64_t f_bavail;
uint64_t f_files;
uint64_t f_ffree;
uint64_t f_spare[4];
};
typedef enum {
UV_DIRENT_UNKNOWN,
UV_DIRENT_FILE,
UV_DIRENT_DIR,
UV_DIRENT_LINK,
UV_DIRENT_FIFO,
UV_DIRENT_SOCKET,
UV_DIRENT_CHAR,
UV_DIRENT_BLOCK
} uv_dirent_type_t;
struct uv_dirent_s {
const char* name;
uv_dirent_type_t type;
};
__attribute__((visibility("default"))) char** uv_setup_args(int argc, char** argv);
__attribute__((visibility("default"))) int uv_get_process_title(char* buffer, size_t size);
__attribute__((visibility("default"))) int uv_set_process_title(const char* title);
__attribute__((visibility("default"))) int uv_resident_set_memory(size_t* rss);
__attribute__((visibility("default"))) int uv_uptime(double* uptime);
__attribute__((visibility("default"))) uv_os_fd_t uv_get_osfhandle(int fd);
__attribute__((visibility("default"))) int uv_open_osfhandle(uv_os_fd_t os_fd);
typedef struct {
uv_timeval_t ru_utime;
uv_timeval_t ru_stime;
uint64_t ru_maxrss;
uint64_t ru_ixrss;
uint64_t ru_idrss;
uint64_t ru_isrss;
uint64_t ru_minflt;
uint64_t ru_majflt;
uint64_t ru_nswap;
uint64_t ru_inblock;
uint64_t ru_oublock;
uint64_t ru_msgsnd;
uint64_t ru_msgrcv;
uint64_t ru_nsignals;
uint64_t ru_nvcsw;
uint64_t ru_nivcsw;
} uv_rusage_t;
__attribute__((visibility("default"))) int uv_getrusage(uv_rusage_t* rusage);
__attribute__((visibility("default"))) int uv_os_homedir(char* buffer, size_t* size);
__attribute__((visibility("default"))) int uv_os_tmpdir(char* buffer, size_t* size);
__attribute__((visibility("default"))) int uv_os_get_passwd(uv_passwd_t* pwd);
__attribute__((visibility("default"))) void uv_os_free_passwd(uv_passwd_t* pwd);
__attribute__((visibility("default"))) int uv_os_get_passwd2(uv_passwd_t* pwd, uv_uid_t uid);
__attribute__((visibility("default"))) int uv_os_get_group(uv_group_t* grp, uv_uid_t gid);
__attribute__((visibility("default"))) void uv_os_free_group(uv_group_t* grp);
__attribute__((visibility("default"))) uv_pid_t uv_os_getpid(void);
__attribute__((visibility("default"))) uv_pid_t uv_os_getppid(void);
# 1291 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
__attribute__((visibility("default"))) int uv_os_getpriority(uv_pid_t pid, int* priority);
__attribute__((visibility("default"))) int uv_os_setpriority(uv_pid_t pid, int priority);
enum {
UV_THREAD_PRIORITY_HIGHEST = 2,
UV_THREAD_PRIORITY_ABOVE_NORMAL = 1,
UV_THREAD_PRIORITY_NORMAL = 0,
UV_THREAD_PRIORITY_BELOW_NORMAL = -1,
UV_THREAD_PRIORITY_LOWEST = -2,
};
__attribute__((visibility("default"))) int uv_thread_getpriority(uv_thread_t tid, int* priority);
__attribute__((visibility("default"))) int uv_thread_setpriority(uv_thread_t tid, int priority);
__attribute__((visibility("default"))) unsigned int uv_available_parallelism(void);
__attribute__((visibility("default"))) int uv_cpu_info(uv_cpu_info_t** cpu_infos, int* count);
__attribute__((visibility("default"))) void uv_free_cpu_info(uv_cpu_info_t* cpu_infos, int count);
__attribute__((visibility("default"))) int uv_cpumask_size(void);
__attribute__((visibility("default"))) int uv_interface_addresses(uv_interface_address_t** addresses,
int* count);
__attribute__((visibility("default"))) void uv_free_interface_addresses(uv_interface_address_t* addresses,
int count);
struct uv_env_item_s {
char* name;
char* value;
};
__attribute__((visibility("default"))) int uv_os_environ(uv_env_item_t** envitems, int* count);
__attribute__((visibility("default"))) void uv_os_free_environ(uv_env_item_t* envitems, int count);
__attribute__((visibility("default"))) int uv_os_getenv(const char* name, char* buffer, size_t* size);
__attribute__((visibility("default"))) int uv_os_setenv(const char* name, const char* value);
__attribute__((visibility("default"))) int uv_os_unsetenv(const char* name);
# 1337 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
__attribute__((visibility("default"))) int uv_os_gethostname(char* buffer, size_t* size);
__attribute__((visibility("default"))) int uv_os_uname(uv_utsname_t* buffer);
struct uv_metrics_s {
uint64_t loop_count;
uint64_t events;
uint64_t events_waiting;
uint64_t* reserved[13];
};
__attribute__((visibility("default"))) int uv_metrics_info(uv_loop_t* loop, uv_metrics_t* metrics);
__attribute__((visibility("default"))) uint64_t uv_metrics_idle_time(uv_loop_t* loop);
typedef enum {
UV_FS_UNKNOWN = -1,
UV_FS_CUSTOM,
UV_FS_OPEN,
UV_FS_CLOSE,
UV_FS_READ,
UV_FS_WRITE,
UV_FS_SENDFILE,
UV_FS_STAT,
UV_FS_LSTAT,
UV_FS_FSTAT,
UV_FS_FTRUNCATE,
UV_FS_UTIME,
UV_FS_FUTIME,
UV_FS_ACCESS,
UV_FS_CHMOD,
UV_FS_FCHMOD,
UV_FS_FSYNC,
UV_FS_FDATASYNC,
UV_FS_UNLINK,
UV_FS_RMDIR,
UV_FS_MKDIR,
UV_FS_MKDTEMP,
UV_FS_RENAME,
UV_FS_SCANDIR,
UV_FS_LINK,
UV_FS_SYMLINK,
UV_FS_READLINK,
UV_FS_CHOWN,
UV_FS_FCHOWN,
UV_FS_REALPATH,
UV_FS_COPYFILE,
UV_FS_LCHOWN,
UV_FS_OPENDIR,
UV_FS_READDIR,
UV_FS_CLOSEDIR,
UV_FS_STATFS,
UV_FS_MKSTEMP,
UV_FS_LUTIME
} uv_fs_type;
struct uv_dir_s {
uv_dirent_t* dirents;
size_t nentries;
void* reserved[4];
DIR* dir;
};
struct uv_fs_s {
void* data; uv_req_type type; void* reserved[6];
uv_fs_type fs_type;
uv_loop_t* loop;
uv_fs_cb cb;
ssize_t result;
void* ptr;
const char* path;
uv_stat_t statbuf;
const char *new_path; uv_file file; int flags; mode_t mode; unsigned int nbufs; uv_buf_t* bufs; off_t off; uv_uid_t uid; uv_gid_t gid; double atime; double mtime; struct uv__work work_req; uv_buf_t bufsml[4];
};
__attribute__((visibility("default"))) uv_fs_type uv_fs_get_type(const uv_fs_t*);
__attribute__((visibility("default"))) ssize_t uv_fs_get_result(const uv_fs_t*);
__attribute__((visibility("default"))) int uv_fs_get_system_error(const uv_fs_t*);
__attribute__((visibility("default"))) void* uv_fs_get_ptr(const uv_fs_t*);
__attribute__((visibility("default"))) const char* uv_fs_get_path(const uv_fs_t*);
__attribute__((visibility("default"))) uv_stat_t* uv_fs_get_statbuf(uv_fs_t*);
__attribute__((visibility("default"))) void uv_fs_req_cleanup(uv_fs_t* req);
__attribute__((visibility("default"))) int uv_fs_close(uv_loop_t* loop,
uv_fs_t* req,
uv_file file,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_open(uv_loop_t* loop,
uv_fs_t* req,
const char* path,
int flags,
int mode,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_read(uv_loop_t* loop,
uv_fs_t* req,
uv_file file,
const uv_buf_t bufs[],
unsigned int nbufs,
int64_t offset,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_unlink(uv_loop_t* loop,
uv_fs_t* req,
const char* path,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_write(uv_loop_t* loop,
uv_fs_t* req,
uv_file file,
const uv_buf_t bufs[],
unsigned int nbufs,
int64_t offset,
uv_fs_cb cb);
# 1467 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
__attribute__((visibility("default"))) int uv_fs_copyfile(uv_loop_t* loop,
uv_fs_t* req,
const char* path,
const char* new_path,
int flags,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_mkdir(uv_loop_t* loop,
uv_fs_t* req,
const char* path,
int mode,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_mkdtemp(uv_loop_t* loop,
uv_fs_t* req,
const char* tpl,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_mkstemp(uv_loop_t* loop,
uv_fs_t* req,
const char* tpl,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_rmdir(uv_loop_t* loop,
uv_fs_t* req,
const char* path,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_scandir(uv_loop_t* loop,
uv_fs_t* req,
const char* path,
int flags,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_scandir_next(uv_fs_t* req,
uv_dirent_t* ent);
__attribute__((visibility("default"))) int uv_fs_opendir(uv_loop_t* loop,
uv_fs_t* req,
const char* path,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_readdir(uv_loop_t* loop,
uv_fs_t* req,
uv_dir_t* dir,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_closedir(uv_loop_t* loop,
uv_fs_t* req,
uv_dir_t* dir,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_stat(uv_loop_t* loop,
uv_fs_t* req,
const char* path,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_fstat(uv_loop_t* loop,
uv_fs_t* req,
uv_file file,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_rename(uv_loop_t* loop,
uv_fs_t* req,
const char* path,
const char* new_path,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_fsync(uv_loop_t* loop,
uv_fs_t* req,
uv_file file,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_fdatasync(uv_loop_t* loop,
uv_fs_t* req,
uv_file file,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_ftruncate(uv_loop_t* loop,
uv_fs_t* req,
uv_file file,
int64_t offset,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_sendfile(uv_loop_t* loop,
uv_fs_t* req,
uv_file out_fd,
uv_file in_fd,
int64_t in_offset,
size_t length,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_access(uv_loop_t* loop,
uv_fs_t* req,
const char* path,
int mode,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_chmod(uv_loop_t* loop,
uv_fs_t* req,
const char* path,
int mode,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_utime(uv_loop_t* loop,
uv_fs_t* req,
const char* path,
double atime,
double mtime,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_futime(uv_loop_t* loop,
uv_fs_t* req,
uv_file file,
double atime,
double mtime,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_lutime(uv_loop_t* loop,
uv_fs_t* req,
const char* path,
double atime,
double mtime,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_lstat(uv_loop_t* loop,
uv_fs_t* req,
const char* path,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_link(uv_loop_t* loop,
uv_fs_t* req,
const char* path,
const char* new_path,
uv_fs_cb cb);
# 1592 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
__attribute__((visibility("default"))) int uv_fs_symlink(uv_loop_t* loop,
uv_fs_t* req,
const char* path,
const char* new_path,
int flags,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_readlink(uv_loop_t* loop,
uv_fs_t* req,
const char* path,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_realpath(uv_loop_t* loop,
uv_fs_t* req,
const char* path,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_fchmod(uv_loop_t* loop,
uv_fs_t* req,
uv_file file,
int mode,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_chown(uv_loop_t* loop,
uv_fs_t* req,
const char* path,
uv_uid_t uid,
uv_gid_t gid,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_fchown(uv_loop_t* loop,
uv_fs_t* req,
uv_file file,
uv_uid_t uid,
uv_gid_t gid,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_lchown(uv_loop_t* loop,
uv_fs_t* req,
const char* path,
uv_uid_t uid,
uv_gid_t gid,
uv_fs_cb cb);
__attribute__((visibility("default"))) int uv_fs_statfs(uv_loop_t* loop,
uv_fs_t* req,
const char* path,
uv_fs_cb cb);
enum uv_fs_event {
UV_RENAME = 1,
UV_CHANGE = 2
};
struct uv_fs_event_s {
void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
char* path;
uv_fs_event_cb cb; struct uv__queue watchers; int wd;
};
struct uv_fs_poll_s {
void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
void* poll_ctx;
};
__attribute__((visibility("default"))) int uv_fs_poll_init(uv_loop_t* loop, uv_fs_poll_t* handle);
__attribute__((visibility("default"))) int uv_fs_poll_start(uv_fs_poll_t* handle,
uv_fs_poll_cb poll_cb,
const char* path,
unsigned int interval);
__attribute__((visibility("default"))) int uv_fs_poll_stop(uv_fs_poll_t* handle);
__attribute__((visibility("default"))) int uv_fs_poll_getpath(uv_fs_poll_t* handle,
char* buffer,
size_t* size);
struct uv_signal_s {
void* data; uv_loop_t* loop; uv_handle_type type; uv_close_cb close_cb; struct uv__queue handle_queue; union { int fd; void* reserved[4]; } u; uv_handle_t* next_closing; unsigned int flags;
uv_signal_cb signal_cb;
int signum;
struct { struct uv_signal_s* rbe_left; struct uv_signal_s* rbe_right; struct uv_signal_s* rbe_parent; int rbe_color; } tree_entry; unsigned int caught_signals; unsigned int dispatched_signals;
};
__attribute__((visibility("default"))) int uv_signal_init(uv_loop_t* loop, uv_signal_t* handle);
__attribute__((visibility("default"))) int uv_signal_start(uv_signal_t* handle,
uv_signal_cb signal_cb,
int signum);
__attribute__((visibility("default"))) int uv_signal_start_oneshot(uv_signal_t* handle,
uv_signal_cb signal_cb,
int signum);
__attribute__((visibility("default"))) int uv_signal_stop(uv_signal_t* handle);
__attribute__((visibility("default"))) void uv_loadavg(double avg[3]);
enum uv_fs_event_flags {
UV_FS_EVENT_WATCH_ENTRY = 1,
# 1708 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
UV_FS_EVENT_STAT = 2,
UV_FS_EVENT_RECURSIVE = 4
};
__attribute__((visibility("default"))) int uv_fs_event_init(uv_loop_t* loop, uv_fs_event_t* handle);
__attribute__((visibility("default"))) int uv_fs_event_start(uv_fs_event_t* handle,
uv_fs_event_cb cb,
const char* path,
unsigned int flags);
__attribute__((visibility("default"))) int uv_fs_event_stop(uv_fs_event_t* handle);
__attribute__((visibility("default"))) int uv_fs_event_getpath(uv_fs_event_t* handle,
char* buffer,
size_t* size);
__attribute__((visibility("default"))) int uv_ip4_addr(const char* ip, int port, struct sockaddr_in* addr);
__attribute__((visibility("default"))) int uv_ip6_addr(const char* ip, int port, struct sockaddr_in6* addr);
__attribute__((visibility("default"))) int uv_ip4_name(const struct sockaddr_in* src, char* dst, size_t size);
__attribute__((visibility("default"))) int uv_ip6_name(const struct sockaddr_in6* src, char* dst, size_t size);
__attribute__((visibility("default"))) int uv_ip_name(const struct sockaddr* src, char* dst, size_t size);
__attribute__((visibility("default"))) int uv_inet_ntop(int af, const void* src, char* dst, size_t size);
__attribute__((visibility("default"))) int uv_inet_pton(int af, const char* src, void* dst);
struct uv_random_s {
void* data; uv_req_type type; void* reserved[6];
uv_loop_t* loop;
int status;
void* buf;
size_t buflen;
uv_random_cb cb;
struct uv__work work_req;
};
__attribute__((visibility("default"))) int uv_random(uv_loop_t* loop,
uv_random_t* req,
void *buf,
size_t buflen,
unsigned flags,
uv_random_cb cb);
# 1767 "/home/ubuntu/neovim/.deps/usr/include/uv.h"
__attribute__((visibility("default"))) int uv_if_indextoname(unsigned int ifindex,
char* buffer,
size_t* size);
__attribute__((visibility("default"))) int uv_if_indextoiid(unsigned int ifindex,
char* buffer,
size_t* size);
__attribute__((visibility("default"))) int uv_exepath(char* buffer, size_t* size);
__attribute__((visibility("default"))) int uv_cwd(char* buffer, size_t* size);
__attribute__((visibility("default"))) int uv_chdir(const char* dir);
__attribute__((visibility("default"))) uint64_t uv_get_free_memory(void);
__attribute__((visibility("default"))) uint64_t uv_get_total_memory(void);
__attribute__((visibility("default"))) uint64_t uv_get_constrained_memory(void);
__attribute__((visibility("default"))) uint64_t uv_get_available_memory(void);
__attribute__((visibility("default"))) int uv_clock_gettime(uv_clock_id clock_id, uv_timespec64_t* ts);
__attribute__((visibility("default"))) uint64_t uv_hrtime(void);
__attribute__((visibility("default"))) void uv_sleep(unsigned int msec);
__attribute__((visibility("default"))) void uv_disable_stdio_inheritance(void);
__attribute__((visibility("default"))) int uv_dlopen(const char* filename, uv_lib_t* lib);
__attribute__((visibility("default"))) void uv_dlclose(uv_lib_t* lib);
__attribute__((visibility("default"))) int uv_dlsym(uv_lib_t* lib, const char* name, void** ptr);
__attribute__((visibility("default"))) const char* uv_dlerror(const uv_lib_t* lib);
__attribute__((visibility("default"))) int uv_mutex_init(uv_mutex_t* handle);
__attribute__((visibility("default"))) int uv_mutex_init_recursive(uv_mutex_t* handle);
__attribute__((visibility("default"))) void uv_mutex_destroy(uv_mutex_t* handle);
__attribute__((visibility("default"))) void uv_mutex_lock(uv_mutex_t* handle);
__attribute__((visibility("default"))) int uv_mutex_trylock(uv_mutex_t* handle);
__attribute__((visibility("default"))) void uv_mutex_unlock(uv_mutex_t* handle);
__attribute__((visibility("default"))) int uv_rwlock_init(uv_rwlock_t* rwlock);
__attribute__((visibility("default"))) void uv_rwlock_destroy(uv_rwlock_t* rwlock);
__attribute__((visibility("default"))) void uv_rwlock_rdlock(uv_rwlock_t* rwlock);
__attribute__((visibility("default"))) int uv_rwlock_tryrdlock(uv_rwlock_t* rwlock);
__attribute__((visibility("default"))) void uv_rwlock_rdunlock(uv_rwlock_t* rwlock);
__attribute__((visibility("default"))) void uv_rwlock_wrlock(uv_rwlock_t* rwlock);
__attribute__((visibility("default"))) int uv_rwlock_trywrlock(uv_rwlock_t* rwlock);
__attribute__((visibility("default"))) void uv_rwlock_wrunlock(uv_rwlock_t* rwlock);
__attribute__((visibility("default"))) int uv_sem_init(uv_sem_t* sem, unsigned int value);
__attribute__((visibility("default"))) void uv_sem_destroy(uv_sem_t* sem);
__attribute__((visibility("default"))) void uv_sem_post(uv_sem_t* sem);
__attribute__((visibility("default"))) void uv_sem_wait(uv_sem_t* sem);
__attribute__((visibility("default"))) int uv_sem_trywait(uv_sem_t* sem);
__attribute__((visibility("default"))) int uv_cond_init(uv_cond_t* cond);
__attribute__((visibility("default"))) void uv_cond_destroy(uv_cond_t* cond);
__attribute__((visibility("default"))) void uv_cond_signal(uv_cond_t* cond);
__attribute__((visibility("default"))) void uv_cond_broadcast(uv_cond_t* cond);
__attribute__((visibility("default"))) int uv_barrier_init(uv_barrier_t* barrier, unsigned int count);
__attribute__((visibility("default"))) void uv_barrier_destroy(uv_barrier_t* barrier);
__attribute__((visibility("default"))) int uv_barrier_wait(uv_barrier_t* barrier);
__attribute__((visibility("default"))) void uv_cond_wait(uv_cond_t* cond, uv_mutex_t* mutex);
__attribute__((visibility("default"))) int uv_cond_timedwait(uv_cond_t* cond,
uv_mutex_t* mutex,
uint64_t timeout);
__attribute__((visibility("default"))) void uv_once(uv_once_t* guard, void (*callback)(void));
__attribute__((visibility("default"))) int uv_key_create(uv_key_t* key);
__attribute__((visibility("default"))) void uv_key_delete(uv_key_t* key);
__attribute__((visibility("default"))) void* uv_key_get(uv_key_t* key);
__attribute__((visibility("default"))) void uv_key_set(uv_key_t* key, void* value);
__attribute__((visibility("default"))) int uv_gettimeofday(uv_timeval64_t* tv);
typedef void (*uv_thread_cb)(void* arg);
__attribute__((visibility("default"))) int uv_thread_create(uv_thread_t* tid, uv_thread_cb entry, void* arg);
typedef enum {
UV_THREAD_NO_FLAGS = 0x00,
UV_THREAD_HAS_STACK_SIZE = 0x01
} uv_thread_create_flags;
struct uv_thread_options_s {
unsigned int flags;
size_t stack_size;
};
typedef struct uv_thread_options_s uv_thread_options_t;
__attribute__((visibility("default"))) int uv_thread_create_ex(uv_thread_t* tid,
const uv_thread_options_t* params,
uv_thread_cb entry,
void* arg);
__attribute__((visibility("default"))) int uv_thread_setaffinity(uv_thread_t* tid,
char* cpumask,
char* oldmask,
size_t mask_size);
__attribute__((visibility("default"))) int uv_thread_getaffinity(uv_thread_t* tid,
char* cpumask,
size_t mask_size);
__attribute__((visibility("default"))) int uv_thread_getcpu(void);
__attribute__((visibility("default"))) uv_thread_t uv_thread_self(void);
__attribute__((visibility("default"))) int uv_thread_join(uv_thread_t *tid);
__attribute__((visibility("default"))) int uv_thread_equal(const uv_thread_t* t1, const uv_thread_t* t2);
union uv_any_handle {
uv_async_t async; uv_check_t check; uv_fs_event_t fs_event; uv_fs_poll_t fs_poll; uv_handle_t handle; uv_idle_t idle; uv_pipe_t pipe; uv_poll_t poll; uv_prepare_t prepare; uv_process_t process; uv_stream_t stream; uv_tcp_t tcp; uv_timer_t timer; uv_tty_t tty; uv_udp_t udp; uv_signal_t signal;
};
union uv_any_req {
uv_req_t req; uv_connect_t connect; uv_write_t write; uv_shutdown_t shutdown; uv_udp_send_t udp_send; uv_fs_t fs; uv_work_t work; uv_getaddrinfo_t getaddrinfo; uv_getnameinfo_t getnameinfo; uv_random_t random;
};
struct uv_loop_s {
void* data;
unsigned int active_handles;
struct uv__queue handle_queue;
union {
void* unused;
unsigned int count;
} active_reqs;
void* internal_fields;
unsigned int stop_flag;
unsigned long flags; int backend_fd; struct uv__queue pending_queue; struct uv__queue watcher_queue; uv__io_t** watchers; unsigned int nwatchers; unsigned int nfds; struct uv__queue wq; uv_mutex_t wq_mutex; uv_async_t wq_async; uv_rwlock_t cloexec_lock; uv_handle_t* closing_handles; struct uv__queue process_handles; struct uv__queue prepare_handles; struct uv__queue check_handles; struct uv__queue idle_handles; struct uv__queue async_handles; void (*async_unused)(void); uv__io_t async_io_watcher; int async_wfd; struct { void* min; unsigned int nelts; } timer_heap; uint64_t timer_counter; uint64_t time; int signal_pipefd[2]; uv__io_t signal_io_watcher; uv_signal_t child_watcher; int emfile_fd; uv__io_t inotify_read_watcher; void* inotify_watchers; int inotify_fd;
};
__attribute__((visibility("default"))) void* uv_loop_get_data(const uv_loop_t*);
__attribute__((visibility("default"))) void uv_loop_set_data(uv_loop_t*, void* data);
size_t uv_utf16_length_as_wtf8(const uint16_t* utf16,
ssize_t utf16_len);
int uv_utf16_to_wtf8(const uint16_t* utf16,
ssize_t utf16_len,
char** wtf8_ptr,
size_t* wtf8_len_ptr);
ssize_t uv_wtf8_length_as_utf16(const char* wtf8);
void uv_wtf8_to_utf16(const char* wtf8,
uint16_t* utf16,
size_t utf16_len);
# 10 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/build/cmake.config/auto/config.h" 1
# 12 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/api/private/converter.h" 1
# 1 "/home/ubuntu/neovim/src/nvim/api/private/defs.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stdbool.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/api/private/defs.h" 2
# 1 "/home/ubuntu/neovim/src/klib/kvec.h" 1
# 43 "/home/ubuntu/neovim/src/klib/kvec.h"
# 1 "/home/ubuntu/neovim/src/nvim/memory.h" 1
# 1 "/home/ubuntu/neovim/src/nvim/macros_defs.h" 1
# 9 "/home/ubuntu/neovim/src/nvim/memory.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/memory_defs.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/memory_defs.h" 2
typedef struct consumed_blk {
struct consumed_blk *prev;
} *ArenaMem;
typedef struct {
char *cur_blk;
size_t pos, size;
} Arena;
# 10 "/home/ubuntu/neovim/src/nvim/memory.h" 2
typedef void *(*MemMalloc)(size_t);
typedef void (*MemFree)(void *);
typedef void *(*MemCalloc)(size_t, size_t);
typedef void *(*MemRealloc)(void *, size_t);
# 42 "/home/ubuntu/neovim/src/nvim/memory.h"
extern size_t arena_alloc_count ;
# 44 "/home/ubuntu/neovim/src/klib/kvec.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/os/os_defs.h" 1
# 20 "/home/ubuntu/neovim/src/nvim/os/os_defs.h"
# 1 "/home/ubuntu/neovim/src/nvim/os/unix_defs.h" 1
# 11 "/home/ubuntu/neovim/src/nvim/os/unix_defs.h"
# 1 "/usr/include/unistd.h" 1 3 4
# 27 "/usr/include/unistd.h" 3 4
# 202 "/usr/include/unistd.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/posix_opt.h" 1 3 4
# 203 "/usr/include/unistd.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/environments.h" 1 3 4
# 22 "/usr/include/aarch64-linux-gnu/bits/environments.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/wordsize.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/bits/environments.h" 2 3 4
# 207 "/usr/include/unistd.h" 2 3 4
# 226 "/usr/include/unistd.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 227 "/usr/include/unistd.h" 2 3 4
# 287 "/usr/include/unistd.h" 3 4
# 287 "/usr/include/unistd.h" 3 4
extern int access (const char *__name, int __type) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int euidaccess (const char *__name, int __type)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int eaccess (const char *__name, int __type)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int faccessat (int __fd, const char *__file, int __type, int __flag)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) ;
# 334 "/usr/include/unistd.h" 3 4
extern __off_t lseek (int __fd, __off_t __offset, int __whence) __attribute__ ((__nothrow__ , __leaf__));
# 345 "/usr/include/unistd.h" 3 4
extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence)
__attribute__ ((__nothrow__ , __leaf__));
extern int close (int __fd);
extern ssize_t read (int __fd, void *__buf, size_t __nbytes) ;
extern ssize_t write (int __fd, const void *__buf, size_t __n) ;
# 376 "/usr/include/unistd.h" 3 4
extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
__off_t __offset) ;
extern ssize_t pwrite (int __fd, const void *__buf, size_t __n,
__off_t __offset) ;
# 404 "/usr/include/unistd.h" 3 4
extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
__off64_t __offset) ;
extern ssize_t pwrite64 (int __fd, const void *__buf, size_t __n,
__off64_t __offset) ;
extern int pipe (int __pipedes[2]) __attribute__ ((__nothrow__ , __leaf__)) ;
extern int pipe2 (int __pipedes[2], int __flags) __attribute__ ((__nothrow__ , __leaf__)) ;
# 432 "/usr/include/unistd.h" 3 4
extern unsigned int alarm (unsigned int __seconds) __attribute__ ((__nothrow__ , __leaf__));
# 444 "/usr/include/unistd.h" 3 4
extern unsigned int sleep (unsigned int __seconds);
extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
__attribute__ ((__nothrow__ , __leaf__));
extern int usleep (__useconds_t __useconds);
# 469 "/usr/include/unistd.h" 3 4
extern int pause (void);
extern int chown (const char *__file, __uid_t __owner, __gid_t __group)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __attribute__ ((__nothrow__ , __leaf__)) ;
extern int lchown (const char *__file, __uid_t __owner, __gid_t __group)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
extern int fchownat (int __fd, const char *__file, __uid_t __owner,
__gid_t __group, int __flag)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) ;
extern int chdir (const char *__path) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
extern int fchdir (int __fd) __attribute__ ((__nothrow__ , __leaf__)) ;
# 511 "/usr/include/unistd.h" 3 4
extern char *getcwd (char *__buf, size_t __size) __attribute__ ((__nothrow__ , __leaf__)) ;
extern char *get_current_dir_name (void) __attribute__ ((__nothrow__ , __leaf__));
extern char *getwd (char *__buf)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) ;
extern int dup (int __fd) __attribute__ ((__nothrow__ , __leaf__)) ;
extern int dup2 (int __fd, int __fd2) __attribute__ ((__nothrow__ , __leaf__));
extern int dup3 (int __fd, int __fd2, int __flags) __attribute__ ((__nothrow__ , __leaf__));
extern char **__environ;
extern char **environ;
extern int execve (const char *__path, char *const __argv[],
char *const __envp[]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int fexecve (int __fd, char *const __argv[], char *const __envp[])
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern int execv (const char *__path, char *const __argv[])
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int execle (const char *__path, const char *__arg, ...)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int execl (const char *__path, const char *__arg, ...)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int execvp (const char *__file, char *const __argv[])
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int execlp (const char *__file, const char *__arg, ...)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int execvpe (const char *__file, char *const __argv[],
char *const __envp[])
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern int nice (int __inc) __attribute__ ((__nothrow__ , __leaf__)) ;
extern void _exit (int __status) __attribute__ ((__noreturn__));
# 1 "/usr/include/aarch64-linux-gnu/bits/confname.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/confname.h" 3 4
enum
{
_PC_LINK_MAX,
_PC_MAX_CANON,
_PC_MAX_INPUT,
_PC_NAME_MAX,
_PC_PATH_MAX,
_PC_PIPE_BUF,
_PC_CHOWN_RESTRICTED,
_PC_NO_TRUNC,
_PC_VDISABLE,
_PC_SYNC_IO,
_PC_ASYNC_IO,
_PC_PRIO_IO,
_PC_SOCK_MAXBUF,
_PC_FILESIZEBITS,
_PC_REC_INCR_XFER_SIZE,
_PC_REC_MAX_XFER_SIZE,
_PC_REC_MIN_XFER_SIZE,
_PC_REC_XFER_ALIGN,
_PC_ALLOC_SIZE_MIN,
_PC_SYMLINK_MAX,
_PC_2_SYMLINKS
};
enum
{
_SC_ARG_MAX,
_SC_CHILD_MAX,
_SC_CLK_TCK,
_SC_NGROUPS_MAX,
_SC_OPEN_MAX,
_SC_STREAM_MAX,
_SC_TZNAME_MAX,
_SC_JOB_CONTROL,
_SC_SAVED_IDS,
_SC_REALTIME_SIGNALS,
_SC_PRIORITY_SCHEDULING,
_SC_TIMERS,
_SC_ASYNCHRONOUS_IO,
_SC_PRIORITIZED_IO,
_SC_SYNCHRONIZED_IO,
_SC_FSYNC,
_SC_MAPPED_FILES,
_SC_MEMLOCK,
_SC_MEMLOCK_RANGE,
_SC_MEMORY_PROTECTION,
_SC_MESSAGE_PASSING,
_SC_SEMAPHORES,
_SC_SHARED_MEMORY_OBJECTS,
_SC_AIO_LISTIO_MAX,
_SC_AIO_MAX,
_SC_AIO_PRIO_DELTA_MAX,
_SC_DELAYTIMER_MAX,
_SC_MQ_OPEN_MAX,
_SC_MQ_PRIO_MAX,
_SC_VERSION,
_SC_PAGESIZE,
_SC_RTSIG_MAX,
_SC_SEM_NSEMS_MAX,
_SC_SEM_VALUE_MAX,
_SC_SIGQUEUE_MAX,
_SC_TIMER_MAX,
_SC_BC_BASE_MAX,
_SC_BC_DIM_MAX,
_SC_BC_SCALE_MAX,
_SC_BC_STRING_MAX,
_SC_COLL_WEIGHTS_MAX,
_SC_EQUIV_CLASS_MAX,
_SC_EXPR_NEST_MAX,
_SC_LINE_MAX,
_SC_RE_DUP_MAX,
_SC_CHARCLASS_NAME_MAX,
_SC_2_VERSION,
_SC_2_C_BIND,
_SC_2_C_DEV,
_SC_2_FORT_DEV,
_SC_2_FORT_RUN,
_SC_2_SW_DEV,
_SC_2_LOCALEDEF,
_SC_PII,
_SC_PII_XTI,
_SC_PII_SOCKET,
_SC_PII_INTERNET,
_SC_PII_OSI,
_SC_POLL,
_SC_SELECT,
_SC_UIO_MAXIOV,
_SC_IOV_MAX = _SC_UIO_MAXIOV,
_SC_PII_INTERNET_STREAM,
_SC_PII_INTERNET_DGRAM,
_SC_PII_OSI_COTS,
_SC_PII_OSI_CLTS,
_SC_PII_OSI_M,
_SC_T_IOV_MAX,
_SC_THREADS,
_SC_THREAD_SAFE_FUNCTIONS,
_SC_GETGR_R_SIZE_MAX,
_SC_GETPW_R_SIZE_MAX,
_SC_LOGIN_NAME_MAX,
_SC_TTY_NAME_MAX,
_SC_THREAD_DESTRUCTOR_ITERATIONS,
_SC_THREAD_KEYS_MAX,
_SC_THREAD_STACK_MIN,
_SC_THREAD_THREADS_MAX,
_SC_THREAD_ATTR_STACKADDR,
_SC_THREAD_ATTR_STACKSIZE,
_SC_THREAD_PRIORITY_SCHEDULING,
_SC_THREAD_PRIO_INHERIT,
_SC_THREAD_PRIO_PROTECT,
_SC_THREAD_PROCESS_SHARED,
_SC_NPROCESSORS_CONF,
_SC_NPROCESSORS_ONLN,
_SC_PHYS_PAGES,
_SC_AVPHYS_PAGES,
_SC_ATEXIT_MAX,
_SC_PASS_MAX,
_SC_XOPEN_VERSION,
_SC_XOPEN_XCU_VERSION,
_SC_XOPEN_UNIX,
_SC_XOPEN_CRYPT,
_SC_XOPEN_ENH_I18N,
_SC_XOPEN_SHM,
_SC_2_CHAR_TERM,
_SC_2_C_VERSION,
_SC_2_UPE,
_SC_XOPEN_XPG2,
_SC_XOPEN_XPG3,
_SC_XOPEN_XPG4,
_SC_CHAR_BIT,
_SC_CHAR_MAX,
_SC_CHAR_MIN,
_SC_INT_MAX,
_SC_INT_MIN,
_SC_LONG_BIT,
_SC_WORD_BIT,
_SC_MB_LEN_MAX,
_SC_NZERO,
_SC_SSIZE_MAX,
_SC_SCHAR_MAX,
_SC_SCHAR_MIN,
_SC_SHRT_MAX,
_SC_SHRT_MIN,
_SC_UCHAR_MAX,
_SC_UINT_MAX,
_SC_ULONG_MAX,
_SC_USHRT_MAX,
_SC_NL_ARGMAX,
_SC_NL_LANGMAX,
_SC_NL_MSGMAX,
_SC_NL_NMAX,
_SC_NL_SETMAX,
_SC_NL_TEXTMAX,
_SC_XBS5_ILP32_OFF32,
_SC_XBS5_ILP32_OFFBIG,
_SC_XBS5_LP64_OFF64,
_SC_XBS5_LPBIG_OFFBIG,
_SC_XOPEN_LEGACY,
_SC_XOPEN_REALTIME,
_SC_XOPEN_REALTIME_THREADS,
_SC_ADVISORY_INFO,
_SC_BARRIERS,
_SC_BASE,
_SC_C_LANG_SUPPORT,
_SC_C_LANG_SUPPORT_R,
_SC_CLOCK_SELECTION,
_SC_CPUTIME,
_SC_THREAD_CPUTIME,
_SC_DEVICE_IO,
_SC_DEVICE_SPECIFIC,
_SC_DEVICE_SPECIFIC_R,
_SC_FD_MGMT,
_SC_FIFO,
_SC_PIPE,
_SC_FILE_ATTRIBUTES,
_SC_FILE_LOCKING,
_SC_FILE_SYSTEM,
_SC_MONOTONIC_CLOCK,
_SC_MULTI_PROCESS,
_SC_SINGLE_PROCESS,
_SC_NETWORKING,
_SC_READER_WRITER_LOCKS,
_SC_SPIN_LOCKS,
_SC_REGEXP,
_SC_REGEX_VERSION,
_SC_SHELL,
_SC_SIGNALS,
_SC_SPAWN,
_SC_SPORADIC_SERVER,
_SC_THREAD_SPORADIC_SERVER,
_SC_SYSTEM_DATABASE,
_SC_SYSTEM_DATABASE_R,
_SC_TIMEOUTS,
_SC_TYPED_MEMORY_OBJECTS,
_SC_USER_GROUPS,
_SC_USER_GROUPS_R,
_SC_2_PBS,
_SC_2_PBS_ACCOUNTING,
_SC_2_PBS_LOCATE,
_SC_2_PBS_MESSAGE,
_SC_2_PBS_TRACK,
_SC_SYMLOOP_MAX,
_SC_STREAMS,
_SC_2_PBS_CHECKPOINT,
_SC_V6_ILP32_OFF32,
_SC_V6_ILP32_OFFBIG,
_SC_V6_LP64_OFF64,
_SC_V6_LPBIG_OFFBIG,
_SC_HOST_NAME_MAX,
_SC_TRACE,
_SC_TRACE_EVENT_FILTER,
_SC_TRACE_INHERIT,
_SC_TRACE_LOG,
_SC_LEVEL1_ICACHE_SIZE,
_SC_LEVEL1_ICACHE_ASSOC,
_SC_LEVEL1_ICACHE_LINESIZE,
_SC_LEVEL1_DCACHE_SIZE,
_SC_LEVEL1_DCACHE_ASSOC,
_SC_LEVEL1_DCACHE_LINESIZE,
_SC_LEVEL2_CACHE_SIZE,
_SC_LEVEL2_CACHE_ASSOC,
_SC_LEVEL2_CACHE_LINESIZE,
_SC_LEVEL3_CACHE_SIZE,
_SC_LEVEL3_CACHE_ASSOC,
_SC_LEVEL3_CACHE_LINESIZE,
_SC_LEVEL4_CACHE_SIZE,
_SC_LEVEL4_CACHE_ASSOC,
_SC_LEVEL4_CACHE_LINESIZE,
_SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,
_SC_RAW_SOCKETS,
_SC_V7_ILP32_OFF32,
_SC_V7_ILP32_OFFBIG,
_SC_V7_LP64_OFF64,
_SC_V7_LPBIG_OFFBIG,
_SC_SS_REPL_MAX,
_SC_TRACE_EVENT_NAME_MAX,
_SC_TRACE_NAME_MAX,
_SC_TRACE_SYS_MAX,
_SC_TRACE_USER_EVENT_MAX,
_SC_XOPEN_STREAMS,
_SC_THREAD_ROBUST_PRIO_INHERIT,
_SC_THREAD_ROBUST_PRIO_PROTECT
};
enum
{
_CS_PATH,
_CS_V6_WIDTH_RESTRICTED_ENVS,
_CS_GNU_LIBC_VERSION,
_CS_GNU_LIBPTHREAD_VERSION,
_CS_V5_WIDTH_RESTRICTED_ENVS,
_CS_V7_WIDTH_RESTRICTED_ENVS,
_CS_LFS_CFLAGS = 1000,
_CS_LFS_LDFLAGS,
_CS_LFS_LIBS,
_CS_LFS_LINTFLAGS,
_CS_LFS64_CFLAGS,
_CS_LFS64_LDFLAGS,
_CS_LFS64_LIBS,
_CS_LFS64_LINTFLAGS,
_CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
_CS_XBS5_ILP32_OFF32_LDFLAGS,
_CS_XBS5_ILP32_OFF32_LIBS,
_CS_XBS5_ILP32_OFF32_LINTFLAGS,
_CS_XBS5_ILP32_OFFBIG_CFLAGS,
_CS_XBS5_ILP32_OFFBIG_LDFLAGS,
_CS_XBS5_ILP32_OFFBIG_LIBS,
_CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
_CS_XBS5_LP64_OFF64_CFLAGS,
_CS_XBS5_LP64_OFF64_LDFLAGS,
_CS_XBS5_LP64_OFF64_LIBS,
_CS_XBS5_LP64_OFF64_LINTFLAGS,
_CS_XBS5_LPBIG_OFFBIG_CFLAGS,
_CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
_CS_XBS5_LPBIG_OFFBIG_LIBS,
_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
_CS_POSIX_V6_ILP32_OFF32_CFLAGS,
_CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
_CS_POSIX_V6_ILP32_OFF32_LIBS,
_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
_CS_POSIX_V6_ILP32_OFFBIG_LIBS,
_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
_CS_POSIX_V6_LP64_OFF64_CFLAGS,
_CS_POSIX_V6_LP64_OFF64_LDFLAGS,
_CS_POSIX_V6_LP64_OFF64_LIBS,
_CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
_CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS,
_CS_POSIX_V7_ILP32_OFF32_CFLAGS,
_CS_POSIX_V7_ILP32_OFF32_LDFLAGS,
_CS_POSIX_V7_ILP32_OFF32_LIBS,
_CS_POSIX_V7_ILP32_OFF32_LINTFLAGS,
_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS,
_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS,
_CS_POSIX_V7_ILP32_OFFBIG_LIBS,
_CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS,
_CS_POSIX_V7_LP64_OFF64_CFLAGS,
_CS_POSIX_V7_LP64_OFF64_LDFLAGS,
_CS_POSIX_V7_LP64_OFF64_LIBS,
_CS_POSIX_V7_LP64_OFF64_LINTFLAGS,
_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS,
_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS,
_CS_POSIX_V7_LPBIG_OFFBIG_LIBS,
_CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS,
_CS_V6_ENV,
_CS_V7_ENV
};
# 610 "/usr/include/unistd.h" 2 3 4
extern long int pathconf (const char *__path, int __name)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern long int fpathconf (int __fd, int __name) __attribute__ ((__nothrow__ , __leaf__));
extern long int sysconf (int __name) __attribute__ ((__nothrow__ , __leaf__));
extern size_t confstr (int __name, char *__buf, size_t __len) __attribute__ ((__nothrow__ , __leaf__));
extern __pid_t getpid (void) __attribute__ ((__nothrow__ , __leaf__));
extern __pid_t getppid (void) __attribute__ ((__nothrow__ , __leaf__));
extern __pid_t getpgrp (void) __attribute__ ((__nothrow__ , __leaf__));
extern __pid_t __getpgid (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__));
extern __pid_t getpgid (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__));
extern int setpgid (__pid_t __pid, __pid_t __pgid) __attribute__ ((__nothrow__ , __leaf__));
# 660 "/usr/include/unistd.h" 3 4
extern int setpgrp (void) __attribute__ ((__nothrow__ , __leaf__));
extern __pid_t setsid (void) __attribute__ ((__nothrow__ , __leaf__));
extern __pid_t getsid (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__));
extern __uid_t getuid (void) __attribute__ ((__nothrow__ , __leaf__));
extern __uid_t geteuid (void) __attribute__ ((__nothrow__ , __leaf__));
extern __gid_t getgid (void) __attribute__ ((__nothrow__ , __leaf__));
extern __gid_t getegid (void) __attribute__ ((__nothrow__ , __leaf__));
extern int getgroups (int __size, __gid_t __list[]) __attribute__ ((__nothrow__ , __leaf__)) ;
extern int group_member (__gid_t __gid) __attribute__ ((__nothrow__ , __leaf__));
extern int setuid (__uid_t __uid) __attribute__ ((__nothrow__ , __leaf__)) ;
extern int setreuid (__uid_t __ruid, __uid_t __euid) __attribute__ ((__nothrow__ , __leaf__)) ;
extern int seteuid (__uid_t __uid) __attribute__ ((__nothrow__ , __leaf__)) ;
extern int setgid (__gid_t __gid) __attribute__ ((__nothrow__ , __leaf__)) ;
extern int setregid (__gid_t __rgid, __gid_t __egid) __attribute__ ((__nothrow__ , __leaf__)) ;
extern int setegid (__gid_t __gid) __attribute__ ((__nothrow__ , __leaf__)) ;
extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid)
__attribute__ ((__nothrow__ , __leaf__));
extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid)
__attribute__ ((__nothrow__ , __leaf__));
extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid)
__attribute__ ((__nothrow__ , __leaf__)) ;
extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid)
__attribute__ ((__nothrow__ , __leaf__)) ;
extern __pid_t fork (void) __attribute__ ((__nothrow__));
extern __pid_t vfork (void) __attribute__ ((__nothrow__ , __leaf__));
extern char *ttyname (int __fd) __attribute__ ((__nothrow__ , __leaf__));
extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) ;
extern int isatty (int __fd) __attribute__ ((__nothrow__ , __leaf__));
extern int ttyslot (void) __attribute__ ((__nothrow__ , __leaf__));
extern int link (const char *__from, const char *__to)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) ;
extern int linkat (int __fromfd, const char *__from, int __tofd,
const char *__to, int __flags)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4))) ;
extern int symlink (const char *__from, const char *__to)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) ;
extern ssize_t readlink (const char *__restrict __path,
char *__restrict __buf, size_t __len)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) ;
extern int symlinkat (const char *__from, int __tofd,
const char *__to) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3))) ;
extern ssize_t readlinkat (int __fd, const char *__restrict __path,
char *__restrict __buf, size_t __len)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))) ;
extern int unlink (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int unlinkat (int __fd, const char *__name, int __flag)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
extern int rmdir (const char *__path) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern __pid_t tcgetpgrp (int __fd) __attribute__ ((__nothrow__ , __leaf__));
extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __attribute__ ((__nothrow__ , __leaf__));
extern char *getlogin (void);
extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1)));
extern int setlogin (const char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
# 1 "/usr/include/aarch64-linux-gnu/bits/getopt_posix.h" 1 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/getopt_posix.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/getopt_core.h" 1 3 4
# 28 "/usr/include/aarch64-linux-gnu/bits/getopt_core.h" 3 4
extern char *optarg;
# 50 "/usr/include/aarch64-linux-gnu/bits/getopt_core.h" 3 4
extern int optind;
extern int opterr;
extern int optopt;
# 91 "/usr/include/aarch64-linux-gnu/bits/getopt_core.h" 3 4
extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
# 28 "/usr/include/aarch64-linux-gnu/bits/getopt_posix.h" 2 3 4
# 49 "/usr/include/aarch64-linux-gnu/bits/getopt_posix.h" 3 4
# 870 "/usr/include/unistd.h" 2 3 4
extern int gethostname (char *__name, size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int sethostname (const char *__name, size_t __len)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
extern int sethostid (long int __id) __attribute__ ((__nothrow__ , __leaf__)) ;
extern int getdomainname (char *__name, size_t __len)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
extern int setdomainname (const char *__name, size_t __len)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
extern int vhangup (void) __attribute__ ((__nothrow__ , __leaf__));
extern int revoke (const char *__file) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
extern int profil (unsigned short int *__sample_buffer, size_t __size,
size_t __offset, unsigned int __scale)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
extern int acct (const char *__name) __attribute__ ((__nothrow__ , __leaf__));
extern char *getusershell (void) __attribute__ ((__nothrow__ , __leaf__));
extern void endusershell (void) __attribute__ ((__nothrow__ , __leaf__));
extern void setusershell (void) __attribute__ ((__nothrow__ , __leaf__));
extern int daemon (int __nochdir, int __noclose) __attribute__ ((__nothrow__ , __leaf__)) ;
extern int chroot (const char *__path) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
extern char *getpass (const char *__prompt) __attribute__ ((__nonnull__ (1)));
extern int fsync (int __fd);
extern int syncfs (int __fd) __attribute__ ((__nothrow__ , __leaf__));
extern long int gethostid (void);
extern void sync (void) __attribute__ ((__nothrow__ , __leaf__));
extern int getpagesize (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern int getdtablesize (void) __attribute__ ((__nothrow__ , __leaf__));
# 991 "/usr/include/unistd.h" 3 4
extern int truncate (const char *__file, __off_t __length)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
# 1003 "/usr/include/unistd.h" 3 4
extern int truncate64 (const char *__file, __off64_t __length)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) ;
# 1014 "/usr/include/unistd.h" 3 4
extern int ftruncate (int __fd, __off_t __length) __attribute__ ((__nothrow__ , __leaf__)) ;
# 1024 "/usr/include/unistd.h" 3 4
extern int ftruncate64 (int __fd, __off64_t __length) __attribute__ ((__nothrow__ , __leaf__)) ;
# 1035 "/usr/include/unistd.h" 3 4
extern int brk (void *__addr) __attribute__ ((__nothrow__ , __leaf__)) ;
extern void *sbrk (intptr_t __delta) __attribute__ ((__nothrow__ , __leaf__));
# 1056 "/usr/include/unistd.h" 3 4
extern long int syscall (long int __sysno, ...) __attribute__ ((__nothrow__ , __leaf__));
# 1107 "/usr/include/unistd.h" 3 4
ssize_t copy_file_range (int __infd, __off64_t *__pinoff,
int __outfd, __off64_t *__poutoff,
size_t __length, unsigned int __flags);
extern int fdatasync (int __fildes);
# 1124 "/usr/include/unistd.h" 3 4
extern char *crypt (const char *__key, const char *__salt)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
extern void swab (const void *__restrict __from, void *__restrict __to,
ssize_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
# 1161 "/usr/include/unistd.h" 3 4
int getentropy (void *__buffer, size_t __length) ;
# 1170 "/usr/include/unistd.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/unistd_ext.h" 1 3 4
# 34 "/usr/include/aarch64-linux-gnu/bits/unistd_ext.h" 3 4
extern __pid_t gettid (void) __attribute__ ((__nothrow__ , __leaf__));
# 1171 "/usr/include/unistd.h" 2 3 4
# 12 "/home/ubuntu/neovim/src/nvim/os/unix_defs.h" 2
# 21 "/home/ubuntu/neovim/src/nvim/os/os_defs.h" 2
# 133 "/home/ubuntu/neovim/src/nvim/os/os_defs.h"
# 133 "/home/ubuntu/neovim/src/nvim/os/os_defs.h"
typedef off_t off_T;
# 45 "/home/ubuntu/neovim/src/klib/kvec.h" 2
# 170 "/home/ubuntu/neovim/src/klib/kvec.h"
static inline void *_memcpy_free(void *restrict dest, void *restrict src, size_t size)
REAL_FATTR_NONNULL_ALL REAL_FATTR_NONNULL_RET REAL_FATTR_ALWAYS_INLINE;
static inline void *_memcpy_free(void *const restrict dest, void *const restrict src,
const size_t size)
{
memcpy(dest, src, size);
do { void **ptr_ = (void **)&(src); xfree(*ptr_); *ptr_ =
# 178 "/home/ubuntu/neovim/src/klib/kvec.h" 3 4
((void *)0)
# 178 "/home/ubuntu/neovim/src/klib/kvec.h"
; (void)(*ptr_); } while (0);
return dest;
}
# 8 "/home/ubuntu/neovim/src/nvim/api/private/defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/types_defs.h" 1
typedef void *vim_acl_T;
typedef uint32_t schar_T;
typedef int32_t sattr_T;
typedef int32_t sscratch_T;
typedef int handle_T;
typedef int LuaRef;
typedef double float_T;
typedef struct MsgpackRpcRequestHandler MsgpackRpcRequestHandler;
typedef union {
float_T (*float_func)(float_T);
const MsgpackRpcRequestHandler *api_handler;
void *null;
} EvalFuncData;
typedef handle_T NS;
typedef uint64_t proftime_T;
typedef enum {
kNone = -1,
kFalse = 0,
kTrue = 1,
} TriState;
typedef int64_t OptInt;
enum { SIGN_WIDTH = 2, };
typedef struct file_buffer buf_T;
typedef struct loop Loop;
typedef struct regprog regprog_T;
typedef struct syn_state synstate_T;
typedef struct terminal Terminal;
typedef struct window_S win_T;
typedef struct {
uint32_t nitems;
uint32_t nbytes;
char data[];
} AdditionalData;
# 9 "/home/ubuntu/neovim/src/nvim/api/private/defs.h" 2
# 28 "/home/ubuntu/neovim/src/nvim/api/private/defs.h"
typedef enum {
kErrorTypeNone = -1,
kErrorTypeException,
kErrorTypeValidation,
} ErrorType;
typedef enum {
kMessageTypeUnknown = -1,
kMessageTypeRequest = 0,
kMessageTypeResponse = 1,
kMessageTypeNotification = 2,
kMessageTypeRedrawEvent = 3,
} MessageType;
# 57 "/home/ubuntu/neovim/src/nvim/api/private/defs.h"
static inline
# 57 "/home/ubuntu/neovim/src/nvim/api/private/defs.h" 3 4
_Bool
# 57 "/home/ubuntu/neovim/src/nvim/api/private/defs.h"
is_internal_call(const uint64_t channel_id)
FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_CONST
{
return !!(channel_id & (((uint64_t)1) << (sizeof(uint64_t) * 8 - 1)));
}
typedef struct {
ErrorType type;
char *msg;
} Error;
typedef
# 68 "/home/ubuntu/neovim/src/nvim/api/private/defs.h" 3 4
_Bool
# 68 "/home/ubuntu/neovim/src/nvim/api/private/defs.h"
Boolean;
typedef int64_t Integer;
typedef double Float;
typedef struct {
char *data;
size_t size;
} String;
typedef handle_T Buffer;
typedef handle_T Window;
typedef handle_T Tabpage;
typedef struct object Object;
typedef struct { size_t size; size_t capacity; Object *items; } Array;
typedef struct key_value_pair KeyValuePair;
typedef struct { size_t size; size_t capacity; KeyValuePair *items; } Dictionary;
typedef struct { size_t size; size_t capacity; String *items; } StringArray;
typedef enum {
kObjectTypeNil = 0,
kObjectTypeBoolean,
kObjectTypeInteger,
kObjectTypeFloat,
kObjectTypeString,
kObjectTypeArray,
kObjectTypeDictionary,
kObjectTypeLuaRef,
kObjectTypeBuffer,
kObjectTypeWindow,
kObjectTypeTabpage,
} ObjectType;
typedef enum {
kUnpackTypeStringArray = -1,
} UnpackType;
# 122 "/home/ubuntu/neovim/src/nvim/api/private/defs.h"
struct object {
ObjectType type;
union {
Boolean boolean;
Integer integer;
Float floating;
String string;
Array array;
Dictionary dictionary;
LuaRef luaref;
} data;
};
struct key_value_pair {
String key;
Object value;
};
typedef uint64_t OptionalKeys;
typedef Integer HLGroupID;
typedef struct {
OptionalKeys is_set_;
} OptKeySet;
typedef struct {
char *str;
size_t ptr_off;
int type;
int opt_index;
# 153 "/home/ubuntu/neovim/src/nvim/api/private/defs.h" 3 4
_Bool
# 153 "/home/ubuntu/neovim/src/nvim/api/private/defs.h"
is_hlgroup;
} KeySetLink;
typedef KeySetLink *(*FieldHashfn)(const char *str, size_t len);
# 4 "/home/ubuntu/neovim/src/nvim/api/private/converter.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 1
# 1 "/usr/include/inttypes.h" 1 3 4
# 34 "/usr/include/inttypes.h" 3 4
# 34 "/usr/include/inttypes.h" 3 4
typedef unsigned int __gwchar_t;
# 266 "/usr/include/inttypes.h" 3 4
typedef struct
{
long int quot;
long int rem;
} imaxdiv_t;
# 290 "/usr/include/inttypes.h" 3 4
extern intmax_t imaxabs (intmax_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern intmax_t strtoimax (const char *__restrict __nptr,
char **__restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__));
extern uintmax_t strtoumax (const char *__restrict __nptr,
char ** __restrict __endptr, int __base) __attribute__ ((__nothrow__ , __leaf__));
extern intmax_t wcstoimax (const __gwchar_t *__restrict __nptr,
__gwchar_t **__restrict __endptr, int __base)
__attribute__ ((__nothrow__ , __leaf__));
extern uintmax_t wcstoumax (const __gwchar_t *__restrict __nptr,
__gwchar_t ** __restrict __endptr, int __base)
__attribute__ ((__nothrow__ , __leaf__));
# 432 "/usr/include/inttypes.h" 3 4
# 4 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 2
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/limits.h" 1 3 4
# 5 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/garray_defs.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/garray_defs.h" 2
# 8 "/home/ubuntu/neovim/src/nvim/garray_defs.h"
typedef struct {
int ga_len;
int ga_maxlen;
int ga_itemsize;
int ga_growsize;
void *ga_data;
} garray_T;
# 8 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/hashtab_defs.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/hashtab_defs.h" 2
typedef size_t hash_T;
# 24 "/home/ubuntu/neovim/src/nvim/hashtab_defs.h"
typedef struct {
hash_T hi_hash;
char *hi_key;
} hashitem_T;
enum {
HT_INIT_SIZE = 16,
};
typedef struct {
hash_T ht_mask;
size_t ht_used;
size_t ht_filled;
int ht_changed;
int ht_locked;
hashitem_T *ht_array;
hashitem_T ht_smallarray[HT_INIT_SIZE];
} hashtab_T;
# 9 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/lib/queue_defs.h" 1
# 20 "/home/ubuntu/neovim/src/nvim/lib/queue_defs.h"
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 23 "/home/ubuntu/neovim/src/nvim/lib/queue_defs.h" 2
typedef struct queue {
struct queue *next;
struct queue *prev;
} QUEUE;
# 49 "/home/ubuntu/neovim/src/nvim/lib/queue_defs.h"
static inline int QUEUE_EMPTY(const QUEUE *const q)
FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
{
return q == q->next;
}
static inline void QUEUE_INIT(QUEUE *const q)
FUNC_ATTR_ALWAYS_INLINE
{
q->next = q;
q->prev = q;
}
static inline void QUEUE_ADD(QUEUE *const h, QUEUE *const n)
FUNC_ATTR_ALWAYS_INLINE
{
h->prev->next = n->next;
n->next->prev = h->prev;
h->prev = n->prev;
h->prev->next = h;
}
static inline void QUEUE_INSERT_HEAD(QUEUE *const h, QUEUE *const q)
FUNC_ATTR_ALWAYS_INLINE
{
q->next = h->next;
q->prev = h;
q->next->prev = q;
h->next = q;
}
static inline void QUEUE_INSERT_TAIL(QUEUE *const h, QUEUE *const q)
FUNC_ATTR_ALWAYS_INLINE
{
q->next = h;
q->prev = h->prev;
q->prev->next = q;
h->prev = q;
}
static inline void QUEUE_REMOVE(QUEUE *const q)
FUNC_ATTR_ALWAYS_INLINE
{
q->prev->next = q->next;
q->next->prev = q->prev;
}
# 10 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/pos_defs.h" 1
typedef int32_t linenr_T;
typedef int colnr_T;
enum { MAXLNUM = 0x7fffffff, };
enum { MAXCOL = 0x7fffffff, };
enum { MINLNUM = 1, };
enum { MINCOL = 1, };
typedef struct {
linenr_T lnum;
colnr_T col;
colnr_T coladd;
} pos_T;
typedef struct {
linenr_T lnum;
colnr_T col;
} lpos_T;
# 11 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 2
typedef int64_t varnumber_T;
typedef uint64_t uvarnumber_T;
enum {
DO_NOT_FREE_CNT = (0x7fffffff / 2),
};
enum ListLenSpecials {
kListLenUnknown = -1,
kListLenShouldKnow = -2,
kListLenMayKnow = -3,
};
# 51 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h"
typedef struct listvar_S list_T;
typedef struct dictvar_S dict_T;
typedef struct partial_S partial_T;
typedef struct blobvar_S blob_T;
typedef struct ufunc ufunc_T;
typedef enum {
kCallbackNone = 0,
kCallbackFuncref,
kCallbackPartial,
kCallbackLua,
} CallbackType;
typedef struct {
union {
char *funcref;
partial_T *partial;
LuaRef luaref;
} data;
CallbackType type;
} Callback;
typedef struct {
Callback callback;
char *key_pattern;
size_t key_pattern_len;
QUEUE node;
# 83 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 3 4
_Bool
# 83 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h"
busy;
# 84 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 3 4
_Bool
# 84 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h"
needs_free;
} DictWatcher;
typedef enum {
kBoolVarFalse,
kBoolVarTrue,
} BoolVarValue;
typedef enum {
kSpecialVarNull,
} SpecialVarValue;
typedef enum {
VAR_UNLOCKED = 0,
VAR_LOCKED = 1,
VAR_FIXED = 2,
} VarLockStatus;
typedef enum {
VAR_UNKNOWN = 0,
VAR_NUMBER,
VAR_STRING,
VAR_FUNC,
VAR_LIST,
VAR_DICT,
VAR_FLOAT,
VAR_BOOL,
VAR_SPECIAL,
VAR_PARTIAL,
VAR_BLOB,
} VarType;
enum {
VAR_TYPE_NUMBER = 0,
VAR_TYPE_STRING = 1,
VAR_TYPE_FUNC = 2,
VAR_TYPE_LIST = 3,
VAR_TYPE_DICT = 4,
VAR_TYPE_FLOAT = 5,
VAR_TYPE_BOOL = 6,
VAR_TYPE_SPECIAL = 7,
VAR_TYPE_BLOB = 10,
};
typedef struct {
VarType v_type;
VarLockStatus v_lock;
union typval_vval_union {
varnumber_T v_number;
BoolVarValue v_bool;
SpecialVarValue v_special;
float_T v_float;
char *v_string;
list_T *v_list;
dict_T *v_dict;
partial_T *v_partial;
blob_T *v_blob;
} vval;
} typval_T;
# 157 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h"
typedef enum {
VAR_NO_SCOPE = 0,
VAR_SCOPE = 1,
VAR_DEF_SCOPE = 2,
} ScopeType;
typedef struct listitem_S listitem_T;
struct listitem_S {
listitem_T *li_next;
listitem_T *li_prev;
typval_T li_tv;
};
typedef struct listwatch_S listwatch_T;
struct listwatch_S {
listitem_T *lw_item;
listwatch_T *lw_next;
};
struct listvar_S {
listitem_T *lv_first;
listitem_T *lv_last;
listwatch_T *lv_watch;
listitem_T *lv_idx_item;
list_T *lv_copylist;
list_T *lv_used_next;
list_T *lv_used_prev;
int lv_refcount;
int lv_len;
int lv_idx;
int lv_copyID;
VarLockStatus lv_lock;
LuaRef lua_table_ref;
};
typedef struct {
list_T sl_list;
listitem_T sl_items[10];
} staticList10_T;
# 233 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h"
typedef struct { typval_T di_tv; uint8_t di_flags; char di_key[1]; } ScopeDictDictItem;
typedef struct { typval_T di_tv; uint8_t di_flags; char di_key[]; } dictitem_T;
typedef enum {
DI_FLAGS_RO = 1,
DI_FLAGS_RO_SBX = 2,
DI_FLAGS_FIX = 4,
DI_FLAGS_LOCK = 8,
DI_FLAGS_ALLOC = 16,
} DictItemFlags;
struct dictvar_S {
VarLockStatus dv_lock;
ScopeType dv_scope;
int dv_refcount;
int dv_copyID;
hashtab_T dv_hashtab;
dict_T *dv_copydict;
dict_T *dv_used_next;
dict_T *dv_used_prev;
QUEUE watchers;
LuaRef lua_table_ref;
};
struct blobvar_S {
garray_T bv_ga;
int bv_refcount;
VarLockStatus bv_lock;
};
typedef int scid_T;
# 285 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h"
typedef struct {
scid_T sc_sid;
int sc_seq;
linenr_T sc_lnum;
} sctx_T;
typedef struct {
sctx_T script_ctx;
uint64_t channel_id;
} LastSet;
enum { MAX_FUNC_ARGS = 20, };
enum { VAR_SHORT_LEN = 20, };
enum { FIXVAR_CNT = 12, };
typedef struct funccall_S funccall_T;
struct funccall_S {
ufunc_T *fc_func;
int fc_linenr;
int fc_returned;
struct { typval_T di_tv; uint8_t di_flags; char di_key[VAR_SHORT_LEN + 1]; } fc_fixvar[FIXVAR_CNT];
dict_T fc_l_vars;
ScopeDictDictItem fc_l_vars_var;
dict_T fc_l_avars;
ScopeDictDictItem fc_l_avars_var;
list_T fc_l_varlist;
listitem_T fc_l_listitems[MAX_FUNC_ARGS];
typval_T *fc_rettv;
linenr_T fc_breakpoint;
int fc_dbg_tick;
int fc_level;
garray_T fc_defer;
proftime_T fc_prof_child;
funccall_T *fc_caller;
int fc_refcount;
int fc_copyID;
garray_T fc_ufuncs;
};
struct ufunc {
int uf_varargs;
int uf_flags;
int uf_calls;
# 333 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 3 4
_Bool
# 333 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h"
uf_cleared;
garray_T uf_args;
garray_T uf_def_args;
garray_T uf_lines;
int uf_profiling;
int uf_prof_initialized;
LuaRef uf_luaref;
int uf_tm_count;
proftime_T uf_tm_total;
proftime_T uf_tm_self;
proftime_T uf_tm_children;
int *uf_tml_count;
proftime_T *uf_tml_total;
proftime_T *uf_tml_self;
proftime_T uf_tml_start;
proftime_T uf_tml_children;
proftime_T uf_tml_wait;
int uf_tml_idx;
int uf_tml_execed;
sctx_T uf_script_ctx;
int uf_refcount;
funccall_T *uf_scoped;
char *uf_name_exp;
char uf_name[];
};
struct partial_S {
int pt_refcount;
int pt_copyID;
char *pt_name;
ufunc_T *pt_func;
# 370 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h" 3 4
_Bool
# 370 "/home/ubuntu/neovim/src/nvim/eval/typval_defs.h"
pt_auto;
int pt_argc;
typval_T *pt_argv;
dict_T *pt_dict;
};
typedef struct ht_stack_S {
hashtab_T *ht;
struct ht_stack_S *prev;
} ht_stack_T;
typedef struct list_stack_S {
list_T *list;
struct list_stack_S *prev;
} list_stack_T;
# 5 "/home/ubuntu/neovim/src/nvim/api/private/converter.h" 2
# 13 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/api/private/helpers.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 5 "/home/ubuntu/neovim/src/nvim/api/private/helpers.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 1
# 1 "/home/ubuntu/neovim/src/nvim/arglist_defs.h" 1
typedef struct {
garray_T al_ga;
int al_refcount;
int id;
} alist_T;
typedef struct {
char *ae_fname;
int ae_fnum;
} aentry_T;
# 8 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/grid_defs.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 5 "/home/ubuntu/neovim/src/nvim/grid_defs.h" 2
# 14 "/home/ubuntu/neovim/src/nvim/grid_defs.h"
enum {
kZIndexDefaultGrid = 0,
kZIndexFloatDefault = 50,
kZIndexPopupMenu = 100,
kZIndexMessages = 200,
kZIndexCmdlinePopupMenu = 250,
};
# 48 "/home/ubuntu/neovim/src/nvim/grid_defs.h"
typedef struct ScreenGrid ScreenGrid;
struct ScreenGrid {
handle_T handle;
schar_T *chars;
sattr_T *attrs;
colnr_T *vcols;
size_t *line_offset;
int *dirty_col;
int rows;
int cols;
# 66 "/home/ubuntu/neovim/src/nvim/grid_defs.h" 3 4
_Bool
# 66 "/home/ubuntu/neovim/src/nvim/grid_defs.h"
valid;
# 70 "/home/ubuntu/neovim/src/nvim/grid_defs.h" 3 4
_Bool
# 70 "/home/ubuntu/neovim/src/nvim/grid_defs.h"
throttled;
int row_offset;
int col_offset;
ScreenGrid *target;
# 81 "/home/ubuntu/neovim/src/nvim/grid_defs.h" 3 4
_Bool
# 81 "/home/ubuntu/neovim/src/nvim/grid_defs.h"
blending;
# 84 "/home/ubuntu/neovim/src/nvim/grid_defs.h" 3 4
_Bool
# 84 "/home/ubuntu/neovim/src/nvim/grid_defs.h"
focusable;
int zindex;
int comp_row;
int comp_col;
int comp_width;
int comp_height;
size_t comp_index;
# 108 "/home/ubuntu/neovim/src/nvim/grid_defs.h" 3 4
_Bool
# 108 "/home/ubuntu/neovim/src/nvim/grid_defs.h"
comp_disabled;
};
typedef struct {
int args[3];
int icell;
int ncells;
int coloff;
int cur_attr;
int clear_width;
# 122 "/home/ubuntu/neovim/src/nvim/grid_defs.h" 3 4
_Bool
# 122 "/home/ubuntu/neovim/src/nvim/grid_defs.h"
wrap;
} GridLineEvent;
# 9 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/mapping_defs.h" 1
enum { MAXMAPLEN = 50, };
typedef struct mapblock mapblock_T;
struct mapblock {
mapblock_T *m_next;
mapblock_T *m_alt;
char *m_keys;
char *m_str;
char *m_orig_str;
LuaRef m_luaref;
int m_keylen;
int m_mode;
int m_simplified;
int m_noremap;
char m_silent;
char m_nowait;
char m_expr;
sctx_T m_script_ctx;
char *m_desc;
# 29 "/home/ubuntu/neovim/src/nvim/mapping_defs.h" 3 4
_Bool
# 29 "/home/ubuntu/neovim/src/nvim/mapping_defs.h"
m_replace_keycodes;
};
# 10 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/marktree_defs.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 5 "/home/ubuntu/neovim/src/nvim/marktree_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/decoration_defs.h" 1
# 11 "/home/ubuntu/neovim/src/nvim/decoration_defs.h"
typedef struct {
char *text;
int hl_id;
} VirtTextChunk;
typedef struct { size_t size; size_t capacity; VirtTextChunk *items; } VirtText;
typedef enum {
kVPosEndOfLine,
kVPosOverlay,
kVPosWinCol,
kVPosRightAlign,
kVPosInline,
} VirtTextPos;
typedef struct { size_t size; size_t capacity; struct virt_line { VirtText line;
# 28 "/home/ubuntu/neovim/src/nvim/decoration_defs.h" 3 4
_Bool
# 28 "/home/ubuntu/neovim/src/nvim/decoration_defs.h"
left_col; } *items; } VirtLines;
typedef uint16_t DecorPriority;
typedef enum {
kHlModeUnknown,
kHlModeReplace,
kHlModeCombine,
kHlModeBlend,
} HlMode;
enum {
kSHIsSign = 1,
kSHHlEol = 2,
kSHUIWatched = 4,
kSHUIWatchedOverlay = 8,
kSHSpellOn = 16,
kSHSpellOff = 32,
kSHConceal = 64,
};
typedef struct {
uint16_t flags;
DecorPriority priority;
int hl_id;
schar_T conceal_char;
} DecorHighlightInline;
typedef struct {
uint16_t flags;
DecorPriority priority;
int hl_id;
schar_T text[SIGN_WIDTH];
char *sign_name;
int sign_add_id;
int number_hl_id;
int line_hl_id;
int cursorline_hl_id;
uint32_t next;
const char *url;
} DecorSignHighlight;
enum {
kVTIsLines = 1,
kVTHide = 2,
kVTLinesAbove = 4,
kVTRepeatLinebreak = 8,
};
typedef struct DecorVirtText DecorVirtText;
struct DecorVirtText {
uint8_t flags;
uint8_t hl_mode;
DecorPriority priority;
int width;
int col;
VirtTextPos pos;
union {
VirtText virt_text;
VirtLines virt_lines;
} data;
DecorVirtText *next;
};
typedef struct {
uint32_t sh_idx;
DecorVirtText *vt;
} DecorExt;
typedef union {
DecorHighlightInline hl;
DecorExt ext;
} DecorInlineData;
typedef struct {
# 122 "/home/ubuntu/neovim/src/nvim/decoration_defs.h" 3 4
_Bool
# 122 "/home/ubuntu/neovim/src/nvim/decoration_defs.h"
ext;
DecorInlineData data;
} DecorInline;
typedef struct {
NS ns_id;
enum {
kDecorProviderActive = 1,
kDecorProviderWinDisabled = 2,
kDecorProviderRedrawDisabled = 3,
kDecorProviderDisabled = 4,
} state;
LuaRef redraw_start;
LuaRef redraw_buf;
LuaRef redraw_win;
LuaRef redraw_line;
LuaRef redraw_end;
LuaRef hl_def;
LuaRef spell_nav;
int hl_valid;
# 147 "/home/ubuntu/neovim/src/nvim/decoration_defs.h" 3 4
_Bool
# 147 "/home/ubuntu/neovim/src/nvim/decoration_defs.h"
hl_cached;
uint8_t error_count;
} DecorProvider;
# 8 "/home/ubuntu/neovim/src/nvim/marktree_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/map_defs.h" 1
# 1 "/home/ubuntu/neovim/src/nvim/assert_defs.h" 1
# 1 "/home/ubuntu/neovim/src/nvim/log.h" 1
# 21 "/home/ubuntu/neovim/src/nvim/log.h"
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/asan_interface.h" 1 3 4
# 15 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/asan_interface.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/common_interface_defs.h" 1 3 4
# 14 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/common_interface_defs.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 15 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/common_interface_defs.h" 2 3 4
# 26 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/common_interface_defs.h" 3 4
# 26 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/common_interface_defs.h" 3 4
typedef struct {
int coverage_sandboxed;
intptr_t coverage_fd;
unsigned int coverage_max_block_size;
} __sanitizer_sandbox_arguments;
void __sanitizer_set_report_path(const char *path);
void __sanitizer_set_report_fd(void *fd);
void __sanitizer_sandbox_on_notify(__sanitizer_sandbox_arguments *args);
void __sanitizer_report_error_summary(const char *error_summary);
uint16_t __sanitizer_unaligned_load16(const void *p);
uint32_t __sanitizer_unaligned_load32(const void *p);
uint64_t __sanitizer_unaligned_load64(const void *p);
void __sanitizer_unaligned_store16(void *p, uint16_t x);
void __sanitizer_unaligned_store32(void *p, uint32_t x);
void __sanitizer_unaligned_store64(void *p, uint64_t x);
int __sanitizer_acquire_crash_state();
# 101 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/common_interface_defs.h" 3 4
void __sanitizer_annotate_contiguous_container(const void *beg,
const void *end,
const void *old_mid,
const void *new_mid);
int __sanitizer_verify_contiguous_container(const void *beg, const void *mid,
const void *end);
const void *__sanitizer_contiguous_container_find_bad_address(
const void *beg, const void *mid, const void *end);
void __sanitizer_print_stack_trace(void);
# 133 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/common_interface_defs.h" 3 4
void __sanitizer_symbolize_pc(void *pc, const char *fmt, char *out_buf,
size_t out_buf_size);
void __sanitizer_symbolize_global(void *data_ptr, const char *fmt,
char *out_buf, size_t out_buf_size);
void __sanitizer_set_death_callback(void (*callback)(void));
void __sanitizer_weak_hook_memcmp(void *called_pc, const void *s1,
const void *s2, size_t n, int result);
void __sanitizer_weak_hook_strncmp(void *called_pc, const char *s1,
const char *s2, size_t n, int result);
void __sanitizer_weak_hook_strncasecmp(void *called_pc, const char *s1,
const char *s2, size_t n, int result);
void __sanitizer_weak_hook_strcmp(void *called_pc, const char *s1,
const char *s2, int result);
void __sanitizer_weak_hook_strcasecmp(void *called_pc, const char *s1,
const char *s2, int result);
void __sanitizer_weak_hook_strstr(void *called_pc, const char *s1,
const char *s2, char *result);
void __sanitizer_weak_hook_strcasestr(void *called_pc, const char *s1,
const char *s2, char *result);
void __sanitizer_weak_hook_memmem(void *called_pc,
const void *s1, size_t len1,
const void *s2, size_t len2, void *result);
void __sanitizer_print_memory_profile(size_t top_percent,
size_t max_number_of_contexts);
# 191 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/common_interface_defs.h" 3 4
void __sanitizer_start_switch_fiber(void **fake_stack_save,
const void *bottom, size_t size);
void __sanitizer_finish_switch_fiber(void *fake_stack_save,
const void **bottom_old,
size_t *size_old);
int __sanitizer_get_module_and_offset_for_pc(void *pc, char *module_path,
size_t module_path_len,
void **pc_offset);
# 16 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/asan_interface.h" 2 3 4
# 28 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/asan_interface.h" 3 4
void __asan_poison_memory_region(void const volatile *addr, size_t size);
void __asan_unpoison_memory_region(void const volatile *addr, size_t size);
# 54 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/asan_interface.h" 3 4
int __asan_address_is_poisoned(void const volatile *addr);
void *__asan_region_is_poisoned(void *beg, size_t size);
void __asan_describe_address(void *addr);
int __asan_report_present(void);
void *__asan_get_report_pc(void);
void *__asan_get_report_bp(void);
void *__asan_get_report_sp(void);
void *__asan_get_report_address(void);
int __asan_get_report_access_type(void);
size_t __asan_get_report_access_size(void);
const char *__asan_get_report_description(void);
# 86 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/asan_interface.h" 3 4
const char *__asan_locate_address(void *addr, char *name, size_t name_size,
void **region_address, size_t *region_size);
size_t __asan_get_alloc_stack(void *addr, void **trace, size_t size,
int *thread_id);
size_t __asan_get_free_stack(void *addr, void **trace, size_t size,
int *thread_id);
void __asan_get_shadow_mapping(size_t *shadow_scale, size_t *shadow_offset);
void __asan_report_error(void *pc, void *bp, void *sp,
void *addr, int is_write, size_t access_size);
void __asan_set_death_callback(void (*callback)(void));
void __asan_set_error_report_callback(void (*callback)(const char*));
void __asan_on_error(void);
void __asan_print_accumulated_stats(void);
const char* __asan_default_options(void);
void *__asan_get_current_fake_stack(void);
# 142 "/usr/lib/gcc/aarch64-linux-gnu/9/include/sanitizer/asan_interface.h" 3 4
void *__asan_addr_is_in_fake_stack(void *fake_stack, void *addr, void **beg,
void **end);
void __asan_handle_no_return(void);
# 22 "/home/ubuntu/neovim/src/nvim/log.h" 2
# 5 "/home/ubuntu/neovim/src/nvim/assert_defs.h" 2
# 9 "/home/ubuntu/neovim/src/nvim/map_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/highlight_defs.h" 1
# 8 "/home/ubuntu/neovim/src/nvim/highlight_defs.h"
typedef int32_t RgbValue;
typedef enum {
HL_INVERSE = 0x01,
HL_BOLD = 0x02,
HL_ITALIC = 0x04,
HL_UNDERLINE_MASK = 0x38,
HL_UNDERLINE = 0x08,
HL_UNDERCURL = 0x10,
HL_UNDERDOUBLE = 0x18,
HL_UNDERDOTTED = 0x20,
HL_UNDERDASHED = 0x28,
HL_STANDOUT = 0x0040,
HL_STRIKETHROUGH = 0x0080,
HL_ALTFONT = 0x0100,
HL_NOCOMBINE = 0x0400,
HL_BG_INDEXED = 0x0800,
HL_FG_INDEXED = 0x1000,
HL_DEFAULT = 0x2000,
HL_GLOBAL = 0x4000,
} HlAttrFlags;
typedef struct {
int16_t rgb_ae_attr, cterm_ae_attr;
RgbValue rgb_fg_color, rgb_bg_color, rgb_sp_color;
int16_t cterm_fg_color, cterm_bg_color;
int32_t hl_blend;
int32_t url;
} HlAttrs;
# 60 "/home/ubuntu/neovim/src/nvim/highlight_defs.h"
typedef enum {
HLF_8 = 0,
HLF_EOB,
HLF_TERM,
HLF_TERMNC,
HLF_AT,
HLF_D,
HLF_E,
HLF_I,
HLF_L,
HLF_LC,
HLF_M,
HLF_CM,
HLF_N,
HLF_LNA,
HLF_LNB,
HLF_CLN,
HLF_CLS,
HLF_CLF,
HLF_R,
HLF_S,
HLF_SNC,
HLF_C,
HLF_VSP,
HLF_T,
HLF_V,
HLF_VNC,
HLF_W,
HLF_WM,
HLF_FL,
HLF_FC,
HLF_ADD,
HLF_CHD,
HLF_DED,
HLF_TXD,
HLF_SC,
HLF_CONCEAL,
HLF_SPB,
HLF_SPC,
HLF_SPR,
HLF_SPL,
HLF_PNI,
HLF_PSI,
HLF_PMNI,
HLF_PMSI,
HLF_PNK,
HLF_PSK,
HLF_PNX,
HLF_PSX,
HLF_PSB,
HLF_PST,
HLF_TP,
HLF_TPS,
HLF_TPF,
HLF_CUC,
HLF_CUL,
HLF_MC,
HLF_QFL,
HLF_0,
HLF_INACTIVE,
HLF_MSGSEP,
HLF_NFLOAT,
HLF_MSG,
HLF_BORDER,
HLF_WBR,
HLF_WBRNC,
HLF_CU,
HLF_BTITLE,
HLF_BFOOTER,
HLF_TS,
HLF_TSNC,
HLF_COUNT,
} hlf_T;
typedef enum {
kHlUnknown,
kHlUI,
kHlSyntax,
kHlTerminal,
kHlCombine,
kHlBlend,
kHlBlendThrough,
kHlInvalid,
} HlKind;
typedef struct {
HlAttrs attr;
HlKind kind;
int id1;
int id2;
int winid;
} HlEntry;
typedef struct {
int ns_id;
int syn_id;
} ColorKey;
typedef struct {
int attr_id;
int link_id;
int version;
# 164 "/home/ubuntu/neovim/src/nvim/highlight_defs.h" 3 4
_Bool
# 164 "/home/ubuntu/neovim/src/nvim/highlight_defs.h"
is_default;
# 165 "/home/ubuntu/neovim/src/nvim/highlight_defs.h" 3 4
_Bool
# 165 "/home/ubuntu/neovim/src/nvim/highlight_defs.h"
link_global;
} ColorItem;
enum { HLATTRS_DICT_SIZE = 16, };
# 10 "/home/ubuntu/neovim/src/nvim/map_defs.h" 2
typedef const char *cstr_t;
typedef void *ptr_t;
static inline uint32_t hash_String(String s)
{
uint32_t h = 0;
for (size_t i = 0; i < s.size; i++) {
h = (h << 5) - h + (uint8_t)s.data[i];
}
return h;
}
static inline
# 31 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 31 "/home/ubuntu/neovim/src/nvim/map_defs.h"
equal_String(String a, String b)
{
if (a.size != b.size) {
return
# 34 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
0
# 34 "/home/ubuntu/neovim/src/nvim/map_defs.h"
;
}
return (a.size == 0) || (memcmp(a.data, b.data, a.size) == 0);
}
static const int value_init_int = 0;
static const ptr_t value_init_ptr_t =
# 45 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 45 "/home/ubuntu/neovim/src/nvim/map_defs.h"
;
static const ssize_t value_init_ssize_t = -1;
static const uint32_t value_init_uint32_t = 0;
static const uint64_t value_init_uint64_t = 0;
static const int64_t value_init_int64_t = 0;
static const String value_init_String = { .data =
# 50 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 50 "/home/ubuntu/neovim/src/nvim/map_defs.h"
, .size = 0 };
static const ColorItem value_init_ColorItem = { .attr_id = -1, .link_id = -1, .version = -1, .is_default =
# 51 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
0
# 51 "/home/ubuntu/neovim/src/nvim/map_defs.h"
, .link_global =
# 51 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
0
# 51 "/home/ubuntu/neovim/src/nvim/map_defs.h"
};
typedef struct {
uint32_t n_buckets;
uint32_t size;
uint32_t n_occupied;
uint32_t upper_bound;
uint32_t n_keys;
uint32_t keys_capacity;
uint32_t *hash;
} MapHash;
# 75 "/home/ubuntu/neovim/src/nvim/map_defs.h"
typedef enum {
kMHExisting = 0,
kMHNewKeyDidFit,
kMHNewKeyRealloc,
} MHPutStatus;
void mh_clear(MapHash *h);
void mh_realloc(MapHash *h, uint32_t n_min_buckets);
# 144 "/home/ubuntu/neovim/src/nvim/map_defs.h"
typedef struct { MapHash h; char *keys; } Set_glyph; uint32_t mh_find_bucket_glyph(Set_glyph *set, String key,
# 144 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 144 "/home/ubuntu/neovim/src/nvim/map_defs.h"
put); uint32_t mh_get_glyph(Set_glyph *set, String key); void mh_rehash_glyph(Set_glyph *set); uint32_t mh_put_glyph(Set_glyph *set, String key, MHPutStatus *new);
typedef struct { MapHash h; int *keys; } Set_int; uint32_t mh_find_bucket_int(Set_int *set, int key,
# 145 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 145 "/home/ubuntu/neovim/src/nvim/map_defs.h"
put); uint32_t mh_get_int(Set_int *set, int key); void mh_rehash_int(Set_int *set); uint32_t mh_put_int(Set_int *set, int key, MHPutStatus *new); uint32_t mh_delete_int(Set_int *set, int *key); static inline
# 145 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 145 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_put_int(Set_int *set, int key, int **key_alloc) { MHPutStatus status; uint32_t k = mh_put_int(set, key, &status); if (key_alloc) { *key_alloc = &set->keys[k]; } return status != kMHExisting; } static inline int set_del_int(Set_int *set, int key) { mh_delete_int(set, &key); return key; } static inline
# 145 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 145 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_has_int(Set_int *set, int key) { return mh_get_int(set, key) !=
# 145 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 145 "/home/ubuntu/neovim/src/nvim/map_defs.h"
; }
typedef struct { MapHash h; cstr_t *keys; } Set_cstr_t; uint32_t mh_find_bucket_cstr_t(Set_cstr_t *set, cstr_t key,
# 146 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 146 "/home/ubuntu/neovim/src/nvim/map_defs.h"
put); uint32_t mh_get_cstr_t(Set_cstr_t *set, cstr_t key); void mh_rehash_cstr_t(Set_cstr_t *set); uint32_t mh_put_cstr_t(Set_cstr_t *set, cstr_t key, MHPutStatus *new); uint32_t mh_delete_cstr_t(Set_cstr_t *set, cstr_t *key); static inline
# 146 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 146 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_put_cstr_t(Set_cstr_t *set, cstr_t key, cstr_t **key_alloc) { MHPutStatus status; uint32_t k = mh_put_cstr_t(set, key, &status); if (key_alloc) { *key_alloc = &set->keys[k]; } return status != kMHExisting; } static inline cstr_t set_del_cstr_t(Set_cstr_t *set, cstr_t key) { mh_delete_cstr_t(set, &key); return key; } static inline
# 146 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 146 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_has_cstr_t(Set_cstr_t *set, cstr_t key) { return mh_get_cstr_t(set, key) !=
# 146 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 146 "/home/ubuntu/neovim/src/nvim/map_defs.h"
; }
typedef struct { MapHash h; ptr_t *keys; } Set_ptr_t; uint32_t mh_find_bucket_ptr_t(Set_ptr_t *set, ptr_t key,
# 147 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 147 "/home/ubuntu/neovim/src/nvim/map_defs.h"
put); uint32_t mh_get_ptr_t(Set_ptr_t *set, ptr_t key); void mh_rehash_ptr_t(Set_ptr_t *set); uint32_t mh_put_ptr_t(Set_ptr_t *set, ptr_t key, MHPutStatus *new); uint32_t mh_delete_ptr_t(Set_ptr_t *set, ptr_t *key); static inline
# 147 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 147 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_put_ptr_t(Set_ptr_t *set, ptr_t key, ptr_t **key_alloc) { MHPutStatus status; uint32_t k = mh_put_ptr_t(set, key, &status); if (key_alloc) { *key_alloc = &set->keys[k]; } return status != kMHExisting; } static inline ptr_t set_del_ptr_t(Set_ptr_t *set, ptr_t key) { mh_delete_ptr_t(set, &key); return key; } static inline
# 147 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 147 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_has_ptr_t(Set_ptr_t *set, ptr_t key) { return mh_get_ptr_t(set, key) !=
# 147 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 147 "/home/ubuntu/neovim/src/nvim/map_defs.h"
; }
typedef struct { MapHash h; uint64_t *keys; } Set_uint64_t; uint32_t mh_find_bucket_uint64_t(Set_uint64_t *set, uint64_t key,
# 148 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 148 "/home/ubuntu/neovim/src/nvim/map_defs.h"
put); uint32_t mh_get_uint64_t(Set_uint64_t *set, uint64_t key); void mh_rehash_uint64_t(Set_uint64_t *set); uint32_t mh_put_uint64_t(Set_uint64_t *set, uint64_t key, MHPutStatus *new); uint32_t mh_delete_uint64_t(Set_uint64_t *set, uint64_t *key); static inline
# 148 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 148 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_put_uint64_t(Set_uint64_t *set, uint64_t key, uint64_t **key_alloc) { MHPutStatus status; uint32_t k = mh_put_uint64_t(set, key, &status); if (key_alloc) { *key_alloc = &set->keys[k]; } return status != kMHExisting; } static inline uint64_t set_del_uint64_t(Set_uint64_t *set, uint64_t key) { mh_delete_uint64_t(set, &key); return key; } static inline
# 148 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 148 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_has_uint64_t(Set_uint64_t *set, uint64_t key) { return mh_get_uint64_t(set, key) !=
# 148 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 148 "/home/ubuntu/neovim/src/nvim/map_defs.h"
; }
typedef struct { MapHash h; int64_t *keys; } Set_int64_t; uint32_t mh_find_bucket_int64_t(Set_int64_t *set, int64_t key,
# 149 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 149 "/home/ubuntu/neovim/src/nvim/map_defs.h"
put); uint32_t mh_get_int64_t(Set_int64_t *set, int64_t key); void mh_rehash_int64_t(Set_int64_t *set); uint32_t mh_put_int64_t(Set_int64_t *set, int64_t key, MHPutStatus *new); uint32_t mh_delete_int64_t(Set_int64_t *set, int64_t *key); static inline
# 149 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 149 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_put_int64_t(Set_int64_t *set, int64_t key, int64_t **key_alloc) { MHPutStatus status; uint32_t k = mh_put_int64_t(set, key, &status); if (key_alloc) { *key_alloc = &set->keys[k]; } return status != kMHExisting; } static inline int64_t set_del_int64_t(Set_int64_t *set, int64_t key) { mh_delete_int64_t(set, &key); return key; } static inline
# 149 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 149 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_has_int64_t(Set_int64_t *set, int64_t key) { return mh_get_int64_t(set, key) !=
# 149 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 149 "/home/ubuntu/neovim/src/nvim/map_defs.h"
; }
typedef struct { MapHash h; uint32_t *keys; } Set_uint32_t; uint32_t mh_find_bucket_uint32_t(Set_uint32_t *set, uint32_t key,
# 150 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 150 "/home/ubuntu/neovim/src/nvim/map_defs.h"
put); uint32_t mh_get_uint32_t(Set_uint32_t *set, uint32_t key); void mh_rehash_uint32_t(Set_uint32_t *set); uint32_t mh_put_uint32_t(Set_uint32_t *set, uint32_t key, MHPutStatus *new); uint32_t mh_delete_uint32_t(Set_uint32_t *set, uint32_t *key); static inline
# 150 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 150 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_put_uint32_t(Set_uint32_t *set, uint32_t key, uint32_t **key_alloc) { MHPutStatus status; uint32_t k = mh_put_uint32_t(set, key, &status); if (key_alloc) { *key_alloc = &set->keys[k]; } return status != kMHExisting; } static inline uint32_t set_del_uint32_t(Set_uint32_t *set, uint32_t key) { mh_delete_uint32_t(set, &key); return key; } static inline
# 150 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 150 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_has_uint32_t(Set_uint32_t *set, uint32_t key) { return mh_get_uint32_t(set, key) !=
# 150 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 150 "/home/ubuntu/neovim/src/nvim/map_defs.h"
; }
typedef struct { MapHash h; String *keys; } Set_String; uint32_t mh_find_bucket_String(Set_String *set, String key,
# 151 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 151 "/home/ubuntu/neovim/src/nvim/map_defs.h"
put); uint32_t mh_get_String(Set_String *set, String key); void mh_rehash_String(Set_String *set); uint32_t mh_put_String(Set_String *set, String key, MHPutStatus *new); uint32_t mh_delete_String(Set_String *set, String *key); static inline
# 151 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 151 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_put_String(Set_String *set, String key, String **key_alloc) { MHPutStatus status; uint32_t k = mh_put_String(set, key, &status); if (key_alloc) { *key_alloc = &set->keys[k]; } return status != kMHExisting; } static inline String set_del_String(Set_String *set, String key) { mh_delete_String(set, &key); return key; } static inline
# 151 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 151 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_has_String(Set_String *set, String key) { return mh_get_String(set, key) !=
# 151 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 151 "/home/ubuntu/neovim/src/nvim/map_defs.h"
; }
typedef struct { MapHash h; HlEntry *keys; } Set_HlEntry; uint32_t mh_find_bucket_HlEntry(Set_HlEntry *set, HlEntry key,
# 152 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 152 "/home/ubuntu/neovim/src/nvim/map_defs.h"
put); uint32_t mh_get_HlEntry(Set_HlEntry *set, HlEntry key); void mh_rehash_HlEntry(Set_HlEntry *set); uint32_t mh_put_HlEntry(Set_HlEntry *set, HlEntry key, MHPutStatus *new); uint32_t mh_delete_HlEntry(Set_HlEntry *set, HlEntry *key); static inline
# 152 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 152 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_put_HlEntry(Set_HlEntry *set, HlEntry key, HlEntry **key_alloc) { MHPutStatus status; uint32_t k = mh_put_HlEntry(set, key, &status); if (key_alloc) { *key_alloc = &set->keys[k]; } return status != kMHExisting; } static inline HlEntry set_del_HlEntry(Set_HlEntry *set, HlEntry key) { mh_delete_HlEntry(set, &key); return key; } static inline
# 152 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 152 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_has_HlEntry(Set_HlEntry *set, HlEntry key) { return mh_get_HlEntry(set, key) !=
# 152 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 152 "/home/ubuntu/neovim/src/nvim/map_defs.h"
; }
typedef struct { MapHash h; ColorKey *keys; } Set_ColorKey; uint32_t mh_find_bucket_ColorKey(Set_ColorKey *set, ColorKey key,
# 153 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 153 "/home/ubuntu/neovim/src/nvim/map_defs.h"
put); uint32_t mh_get_ColorKey(Set_ColorKey *set, ColorKey key); void mh_rehash_ColorKey(Set_ColorKey *set); uint32_t mh_put_ColorKey(Set_ColorKey *set, ColorKey key, MHPutStatus *new); uint32_t mh_delete_ColorKey(Set_ColorKey *set, ColorKey *key); static inline
# 153 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 153 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_put_ColorKey(Set_ColorKey *set, ColorKey key, ColorKey **key_alloc) { MHPutStatus status; uint32_t k = mh_put_ColorKey(set, key, &status); if (key_alloc) { *key_alloc = &set->keys[k]; } return status != kMHExisting; } static inline ColorKey set_del_ColorKey(Set_ColorKey *set, ColorKey key) { mh_delete_ColorKey(set, &key); return key; } static inline
# 153 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 153 "/home/ubuntu/neovim/src/nvim/map_defs.h"
set_has_ColorKey(Set_ColorKey *set, ColorKey key) { return mh_get_ColorKey(set, key) !=
# 153 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 153 "/home/ubuntu/neovim/src/nvim/map_defs.h"
; }
typedef struct { Set_int set; int *values; } Map_intint; static inline int map_get_intint(Map_intint *map, int key) { uint32_t k = mh_get_int(&map->set, key); return k ==
# 155 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 155 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_int : map->values[k]; } int *map_ref_intint(Map_intint *map, int key, int **key_alloc); int *map_put_ref_intint(Map_intint *map, int key, int **key_alloc,
# 155 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 155 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_intint(Map_intint *map, int key, int value) { int *val = map_put_ref_intint(map, key,
# 155 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 155 "/home/ubuntu/neovim/src/nvim/map_defs.h"
,
# 155 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 155 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } int map_del_intint(Map_intint *map, int key, int *key_alloc);
typedef struct { Set_int set; ptr_t *values; } Map_intptr_t; static inline ptr_t map_get_intptr_t(Map_intptr_t *map, int key) { uint32_t k = mh_get_int(&map->set, key); return k ==
# 156 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 156 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_ptr_t : map->values[k]; } ptr_t *map_ref_intptr_t(Map_intptr_t *map, int key, int **key_alloc); ptr_t *map_put_ref_intptr_t(Map_intptr_t *map, int key, int **key_alloc,
# 156 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 156 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_intptr_t(Map_intptr_t *map, int key, ptr_t value) { ptr_t *val = map_put_ref_intptr_t(map, key,
# 156 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 156 "/home/ubuntu/neovim/src/nvim/map_defs.h"
,
# 156 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 156 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } ptr_t map_del_intptr_t(Map_intptr_t *map, int key, int *key_alloc);
typedef struct { Set_cstr_t set; ptr_t *values; } Map_cstr_tptr_t; static inline ptr_t map_get_cstr_tptr_t(Map_cstr_tptr_t *map, cstr_t key) { uint32_t k = mh_get_cstr_t(&map->set, key); return k ==
# 157 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 157 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_ptr_t : map->values[k]; } ptr_t *map_ref_cstr_tptr_t(Map_cstr_tptr_t *map, cstr_t key, cstr_t **key_alloc); ptr_t *map_put_ref_cstr_tptr_t(Map_cstr_tptr_t *map, cstr_t key, cstr_t **key_alloc,
# 157 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 157 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_cstr_tptr_t(Map_cstr_tptr_t *map, cstr_t key, ptr_t value) { ptr_t *val = map_put_ref_cstr_tptr_t(map, key,
# 157 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 157 "/home/ubuntu/neovim/src/nvim/map_defs.h"
,
# 157 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 157 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } ptr_t map_del_cstr_tptr_t(Map_cstr_tptr_t *map, cstr_t key, cstr_t *key_alloc);
typedef struct { Set_cstr_t set; int *values; } Map_cstr_tint; static inline int map_get_cstr_tint(Map_cstr_tint *map, cstr_t key) { uint32_t k = mh_get_cstr_t(&map->set, key); return k ==
# 158 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 158 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_int : map->values[k]; } int *map_ref_cstr_tint(Map_cstr_tint *map, cstr_t key, cstr_t **key_alloc); int *map_put_ref_cstr_tint(Map_cstr_tint *map, cstr_t key, cstr_t **key_alloc,
# 158 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 158 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_cstr_tint(Map_cstr_tint *map, cstr_t key, int value) { int *val = map_put_ref_cstr_tint(map, key,
# 158 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 158 "/home/ubuntu/neovim/src/nvim/map_defs.h"
,
# 158 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 158 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } int map_del_cstr_tint(Map_cstr_tint *map, cstr_t key, cstr_t *key_alloc);
typedef struct { Set_ptr_t set; ptr_t *values; } Map_ptr_tptr_t; static inline ptr_t map_get_ptr_tptr_t(Map_ptr_tptr_t *map, ptr_t key) { uint32_t k = mh_get_ptr_t(&map->set, key); return k ==
# 159 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 159 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_ptr_t : map->values[k]; } ptr_t *map_ref_ptr_tptr_t(Map_ptr_tptr_t *map, ptr_t key, ptr_t **key_alloc); ptr_t *map_put_ref_ptr_tptr_t(Map_ptr_tptr_t *map, ptr_t key, ptr_t **key_alloc,
# 159 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 159 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_ptr_tptr_t(Map_ptr_tptr_t *map, ptr_t key, ptr_t value) { ptr_t *val = map_put_ref_ptr_tptr_t(map, key,
# 159 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 159 "/home/ubuntu/neovim/src/nvim/map_defs.h"
,
# 159 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 159 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } ptr_t map_del_ptr_tptr_t(Map_ptr_tptr_t *map, ptr_t key, ptr_t *key_alloc);
typedef struct { Set_uint32_t set; ptr_t *values; } Map_uint32_tptr_t; static inline ptr_t map_get_uint32_tptr_t(Map_uint32_tptr_t *map, uint32_t key) { uint32_t k = mh_get_uint32_t(&map->set, key); return k ==
# 160 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 160 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_ptr_t : map->values[k]; } ptr_t *map_ref_uint32_tptr_t(Map_uint32_tptr_t *map, uint32_t key, uint32_t **key_alloc); ptr_t *map_put_ref_uint32_tptr_t(Map_uint32_tptr_t *map, uint32_t key, uint32_t **key_alloc,
# 160 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 160 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_uint32_tptr_t(Map_uint32_tptr_t *map, uint32_t key, ptr_t value) { ptr_t *val = map_put_ref_uint32_tptr_t(map, key,
# 160 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 160 "/home/ubuntu/neovim/src/nvim/map_defs.h"
,
# 160 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 160 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } ptr_t map_del_uint32_tptr_t(Map_uint32_tptr_t *map, uint32_t key, uint32_t *key_alloc);
typedef struct { Set_uint64_t set; ptr_t *values; } Map_uint64_tptr_t; static inline ptr_t map_get_uint64_tptr_t(Map_uint64_tptr_t *map, uint64_t key) { uint32_t k = mh_get_uint64_t(&map->set, key); return k ==
# 161 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 161 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_ptr_t : map->values[k]; } ptr_t *map_ref_uint64_tptr_t(Map_uint64_tptr_t *map, uint64_t key, uint64_t **key_alloc); ptr_t *map_put_ref_uint64_tptr_t(Map_uint64_tptr_t *map, uint64_t key, uint64_t **key_alloc,
# 161 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 161 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_uint64_tptr_t(Map_uint64_tptr_t *map, uint64_t key, ptr_t value) { ptr_t *val = map_put_ref_uint64_tptr_t(map, key,
# 161 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 161 "/home/ubuntu/neovim/src/nvim/map_defs.h"
,
# 161 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 161 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } ptr_t map_del_uint64_tptr_t(Map_uint64_tptr_t *map, uint64_t key, uint64_t *key_alloc);
typedef struct { Set_uint64_t set; ssize_t *values; } Map_uint64_tssize_t; static inline ssize_t map_get_uint64_tssize_t(Map_uint64_tssize_t *map, uint64_t key) { uint32_t k = mh_get_uint64_t(&map->set, key); return k ==
# 162 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 162 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_ssize_t : map->values[k]; } ssize_t *map_ref_uint64_tssize_t(Map_uint64_tssize_t *map, uint64_t key, uint64_t **key_alloc); ssize_t *map_put_ref_uint64_tssize_t(Map_uint64_tssize_t *map, uint64_t key, uint64_t **key_alloc,
# 162 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 162 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_uint64_tssize_t(Map_uint64_tssize_t *map, uint64_t key, ssize_t value) { ssize_t *val = map_put_ref_uint64_tssize_t(map, key,
# 162 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 162 "/home/ubuntu/neovim/src/nvim/map_defs.h"
,
# 162 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 162 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } ssize_t map_del_uint64_tssize_t(Map_uint64_tssize_t *map, uint64_t key, uint64_t *key_alloc);
typedef struct { Set_uint64_t set; uint64_t *values; } Map_uint64_tuint64_t; static inline uint64_t map_get_uint64_tuint64_t(Map_uint64_tuint64_t *map, uint64_t key) { uint32_t k = mh_get_uint64_t(&map->set, key); return k ==
# 163 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 163 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_uint64_t : map->values[k]; } uint64_t *map_ref_uint64_tuint64_t(Map_uint64_tuint64_t *map, uint64_t key, uint64_t **key_alloc); uint64_t *map_put_ref_uint64_tuint64_t(Map_uint64_tuint64_t *map, uint64_t key, uint64_t **key_alloc,
# 163 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 163 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_uint64_tuint64_t(Map_uint64_tuint64_t *map, uint64_t key, uint64_t value) { uint64_t *val = map_put_ref_uint64_tuint64_t(map, key,
# 163 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 163 "/home/ubuntu/neovim/src/nvim/map_defs.h"
,
# 163 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 163 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } uint64_t map_del_uint64_tuint64_t(Map_uint64_tuint64_t *map, uint64_t key, uint64_t *key_alloc);
typedef struct { Set_int64_t set; int64_t *values; } Map_int64_tint64_t; static inline int64_t map_get_int64_tint64_t(Map_int64_tint64_t *map, int64_t key) { uint32_t k = mh_get_int64_t(&map->set, key); return k ==
# 164 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 164 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_int64_t : map->values[k]; } int64_t *map_ref_int64_tint64_t(Map_int64_tint64_t *map, int64_t key, int64_t **key_alloc); int64_t *map_put_ref_int64_tint64_t(Map_int64_tint64_t *map, int64_t key, int64_t **key_alloc,
# 164 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 164 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_int64_tint64_t(Map_int64_tint64_t *map, int64_t key, int64_t value) { int64_t *val = map_put_ref_int64_tint64_t(map, key,
# 164 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 164 "/home/ubuntu/neovim/src/nvim/map_defs.h"
,
# 164 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 164 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } int64_t map_del_int64_tint64_t(Map_int64_tint64_t *map, int64_t key, int64_t *key_alloc);
typedef struct { Set_int64_t set; ptr_t *values; } Map_int64_tptr_t; static inline ptr_t map_get_int64_tptr_t(Map_int64_tptr_t *map, int64_t key) { uint32_t k = mh_get_int64_t(&map->set, key); return k ==
# 165 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 165 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_ptr_t : map->values[k]; } ptr_t *map_ref_int64_tptr_t(Map_int64_tptr_t *map, int64_t key, int64_t **key_alloc); ptr_t *map_put_ref_int64_tptr_t(Map_int64_tptr_t *map, int64_t key, int64_t **key_alloc,
# 165 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 165 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_int64_tptr_t(Map_int64_tptr_t *map, int64_t key, ptr_t value) { ptr_t *val = map_put_ref_int64_tptr_t(map, key,
# 165 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 165 "/home/ubuntu/neovim/src/nvim/map_defs.h"
,
# 165 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 165 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } ptr_t map_del_int64_tptr_t(Map_int64_tptr_t *map, int64_t key, int64_t *key_alloc);
typedef struct { Set_uint32_t set; uint32_t *values; } Map_uint32_tuint32_t; static inline uint32_t map_get_uint32_tuint32_t(Map_uint32_tuint32_t *map, uint32_t key) { uint32_t k = mh_get_uint32_t(&map->set, key); return k ==
# 166 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 166 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_uint32_t : map->values[k]; } uint32_t *map_ref_uint32_tuint32_t(Map_uint32_tuint32_t *map, uint32_t key, uint32_t **key_alloc); uint32_t *map_put_ref_uint32_tuint32_t(Map_uint32_tuint32_t *map, uint32_t key, uint32_t **key_alloc,
# 166 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 166 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_uint32_tuint32_t(Map_uint32_tuint32_t *map, uint32_t key, uint32_t value) { uint32_t *val = map_put_ref_uint32_tuint32_t(map, key,
# 166 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 166 "/home/ubuntu/neovim/src/nvim/map_defs.h"
,
# 166 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 166 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } uint32_t map_del_uint32_tuint32_t(Map_uint32_tuint32_t *map, uint32_t key, uint32_t *key_alloc);
typedef struct { Set_String set; int *values; } Map_Stringint; static inline int map_get_Stringint(Map_Stringint *map, String key) { uint32_t k = mh_get_String(&map->set, key); return k ==
# 167 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 167 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_int : map->values[k]; } int *map_ref_Stringint(Map_Stringint *map, String key, String **key_alloc); int *map_put_ref_Stringint(Map_Stringint *map, String key, String **key_alloc,
# 167 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 167 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_Stringint(Map_Stringint *map, String key, int value) { int *val = map_put_ref_Stringint(map, key,
# 167 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 167 "/home/ubuntu/neovim/src/nvim/map_defs.h"
,
# 167 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 167 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } int map_del_Stringint(Map_Stringint *map, String key, String *key_alloc);
typedef struct { Set_int set; String *values; } Map_intString; static inline String map_get_intString(Map_intString *map, int key) { uint32_t k = mh_get_int(&map->set, key); return k ==
# 168 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 168 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_String : map->values[k]; } String *map_ref_intString(Map_intString *map, int key, int **key_alloc); String *map_put_ref_intString(Map_intString *map, int key, int **key_alloc,
# 168 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 168 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_intString(Map_intString *map, int key, String value) { String *val = map_put_ref_intString(map, key,
# 168 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 168 "/home/ubuntu/neovim/src/nvim/map_defs.h"
,
# 168 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 168 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } String map_del_intString(Map_intString *map, int key, int *key_alloc);
typedef struct { Set_ColorKey set; ColorItem *values; } Map_ColorKeyColorItem; static inline ColorItem map_get_ColorKeyColorItem(Map_ColorKeyColorItem *map, ColorKey key) { uint32_t k = mh_get_ColorKey(&map->set, key); return k ==
# 169 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
(4294967295U)
# 169 "/home/ubuntu/neovim/src/nvim/map_defs.h"
? value_init_ColorItem : map->values[k]; } ColorItem *map_ref_ColorKeyColorItem(Map_ColorKeyColorItem *map, ColorKey key, ColorKey **key_alloc); ColorItem *map_put_ref_ColorKeyColorItem(Map_ColorKeyColorItem *map, ColorKey key, ColorKey **key_alloc,
# 169 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
_Bool
# 169 "/home/ubuntu/neovim/src/nvim/map_defs.h"
*new_item); static inline void map_put_ColorKeyColorItem(Map_ColorKeyColorItem *map, ColorKey key, ColorItem value) { ColorItem *val = map_put_ref_ColorKeyColorItem(map, key,
# 169 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 169 "/home/ubuntu/neovim/src/nvim/map_defs.h"
,
# 169 "/home/ubuntu/neovim/src/nvim/map_defs.h" 3 4
((void *)0)
# 169 "/home/ubuntu/neovim/src/nvim/map_defs.h"
); *val = value; } ColorItem map_del_ColorKeyColorItem(Map_ColorKeyColorItem *map, ColorKey key, ColorKey *key_alloc);
# 236 "/home/ubuntu/neovim/src/nvim/map_defs.h"
void pmap_del2(Map_cstr_tptr_t *map, const char *key);
# 9 "/home/ubuntu/neovim/src/nvim/marktree_defs.h" 2
enum {
MT_MAX_DEPTH = 20,
MT_BRANCH_FACTOR = 10,
MT_LOG2_BRANCH = 5,
};
typedef struct {
int32_t row;
int32_t col;
} MTPos;
typedef enum {
kMTMetaInline,
kMTMetaLines,
kMTMetaSignHL,
kMTMetaSignText,
kMTMetaCount,
} MetaIndex;
typedef const uint32_t *MetaFilter;
typedef struct mtnode_s MTNode;
typedef struct {
MTPos pos;
int lvl;
MTNode *x;
int i;
struct {
int oldcol;
int i;
} s[MT_MAX_DEPTH];
size_t intersect_idx;
MTPos intersect_pos;
MTPos intersect_pos_x;
} MarkTreeIter;
# 65 "/home/ubuntu/neovim/src/nvim/marktree_defs.h"
typedef struct {
MTPos pos;
uint32_t ns;
uint32_t id;
uint16_t flags;
DecorInlineData decor_data;
} MTKey;
typedef struct {
MTKey start;
MTPos end_pos;
# 76 "/home/ubuntu/neovim/src/nvim/marktree_defs.h" 3 4
_Bool
# 76 "/home/ubuntu/neovim/src/nvim/marktree_defs.h"
end_right_gravity;
} MTPair;
typedef struct { size_t size; size_t capacity; uint64_t *items; uint64_t init_array[4]; } Intersection;
struct mtnode_inner_s {
MTNode *i_ptr[2 * MT_BRANCH_FACTOR];
uint32_t i_meta[2 * MT_BRANCH_FACTOR][kMTMetaCount];
};
struct mtnode_s {
int32_t n;
int16_t level;
int16_t p_idx;
Intersection intersect;
MTNode *parent;
MTKey key[2 * MT_BRANCH_FACTOR - 1];
struct mtnode_inner_s s[];
};
typedef struct {
MTNode *root;
uint32_t meta_root[kMTMetaCount];
size_t n_keys, n_nodes;
Map_uint64_tptr_t id2node[1];
} MarkTree;
# 11 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/memline_defs.h" 1
# 1 "/home/ubuntu/neovim/src/nvim/memfile_defs.h" 1
# 14 "/home/ubuntu/neovim/src/nvim/memfile_defs.h"
typedef int64_t blocknr_T;
# 27 "/home/ubuntu/neovim/src/nvim/memfile_defs.h"
typedef struct {
blocknr_T bh_bnum;
void *bh_data;
unsigned bh_page_count;
unsigned bh_flags;
} bhdr_T;
typedef enum {
MF_DIRTY_NO = 0,
MF_DIRTY_YES,
MF_DIRTY_YES_NOSYNC,
} mfdirty_T;
typedef struct {
char *mf_fname;
char *mf_ffname;
int mf_fd;
int mf_flags;
# 50 "/home/ubuntu/neovim/src/nvim/memfile_defs.h" 3 4
_Bool
# 50 "/home/ubuntu/neovim/src/nvim/memfile_defs.h"
mf_reopen;
bhdr_T *mf_free_first;
Map_int64_tptr_t mf_hash;
Map_int64_tint64_t mf_trans;
blocknr_T mf_blocknr_max;
blocknr_T mf_blocknr_min;
blocknr_T mf_neg_count;
blocknr_T mf_infile_count;
unsigned mf_page_size;
mfdirty_T mf_dirty;
} memfile_T;
# 4 "/home/ubuntu/neovim/src/nvim/memline_defs.h" 2
typedef struct {
blocknr_T ip_bnum;
linenr_T ip_low;
linenr_T ip_high;
int ip_index;
} infoptr_T;
typedef struct {
int mlcs_numlines;
int mlcs_totalsize;
} chunksize_T;
# 43 "/home/ubuntu/neovim/src/nvim/memline_defs.h"
typedef struct {
linenr_T ml_line_count;
memfile_T *ml_mfp;
infoptr_T *ml_stack;
int ml_stack_top;
int ml_stack_size;
int ml_flags;
colnr_T ml_line_len;
linenr_T ml_line_lnum;
char *ml_line_ptr;
size_t ml_line_offset;
int ml_line_offset_ff;
bhdr_T *ml_locked;
linenr_T ml_locked_low;
linenr_T ml_locked_high;
int ml_locked_lineadd;
chunksize_T *ml_chunksize;
int ml_numchunks;
int ml_usedchunks;
} memline_T;
# 12 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/option_defs.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 5 "/home/ubuntu/neovim/src/nvim/option_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/cmdexpand_defs.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 5 "/home/ubuntu/neovim/src/nvim/cmdexpand_defs.h" 2
typedef enum {
XP_PREFIX_NONE,
XP_PREFIX_NO,
XP_PREFIX_INV,
} xp_prefix_T;
enum { EXPAND_BUF_LEN = 256, };
typedef struct {
char *xp_pattern;
int xp_context;
size_t xp_pattern_len;
xp_prefix_T xp_prefix;
char *xp_arg;
LuaRef xp_luaref;
sctx_T xp_script_ctx;
int xp_backslash;
# 28 "/home/ubuntu/neovim/src/nvim/cmdexpand_defs.h" 3 4
_Bool
# 28 "/home/ubuntu/neovim/src/nvim/cmdexpand_defs.h"
xp_shell;
int xp_numfiles;
int xp_col;
int xp_selected;
char *xp_orig;
char **xp_files;
char *xp_line;
char xp_buf[EXPAND_BUF_LEN];
} expand_T;
enum {
XP_BS_NONE = 0,
XP_BS_ONE = 0x1,
XP_BS_THREE = 0x2,
XP_BS_COMMA = 0x4,
};
enum {
EXPAND_UNSUCCESSFUL = -2,
EXPAND_OK = -1,
EXPAND_NOTHING = 0,
EXPAND_COMMANDS,
EXPAND_FILES,
EXPAND_DIRECTORIES,
EXPAND_SETTINGS,
EXPAND_BOOL_SETTINGS,
EXPAND_TAGS,
EXPAND_OLD_SETTING,
EXPAND_HELP,
EXPAND_BUFFERS,
EXPAND_EVENTS,
EXPAND_MENUS,
EXPAND_SYNTAX,
EXPAND_HIGHLIGHT,
EXPAND_AUGROUP,
EXPAND_USER_VARS,
EXPAND_MAPPINGS,
EXPAND_TAGS_LISTFILES,
EXPAND_FUNCTIONS,
EXPAND_USER_FUNC,
EXPAND_EXPRESSION,
EXPAND_MENUNAMES,
EXPAND_USER_COMMANDS,
EXPAND_USER_CMD_FLAGS,
EXPAND_USER_NARGS,
EXPAND_USER_COMPLETE,
EXPAND_ENV_VARS,
EXPAND_LANGUAGE,
EXPAND_COLORS,
EXPAND_COMPILER,
EXPAND_USER_DEFINED,
EXPAND_USER_LIST,
EXPAND_USER_LUA,
EXPAND_SHELLCMD,
EXPAND_SIGN,
EXPAND_PROFILE,
EXPAND_FILETYPE,
EXPAND_FILES_IN_PATH,
EXPAND_OWNSYNTAX,
EXPAND_LOCALES,
EXPAND_HISTORY,
EXPAND_USER,
EXPAND_SYNTIME,
EXPAND_USER_ADDR_TYPE,
EXPAND_PACKADD,
EXPAND_MESSAGES,
EXPAND_MAPCLEAR,
EXPAND_ARGLIST,
EXPAND_DIFF_BUFFERS,
EXPAND_BREAKPOINT,
EXPAND_SCRIPTNAMES,
EXPAND_RUNTIME,
EXPAND_STRING_SETTING,
EXPAND_SETTING_SUBTRACT,
EXPAND_ARGOPT,
EXPAND_KEYMAP,
EXPAND_DIRS_IN_CDPATH,
EXPAND_CHECKHEALTH,
EXPAND_LUA,
};
typedef char *(*CompleteListItemGetter)(expand_T *, int);
# 8 "/home/ubuntu/neovim/src/nvim/option_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/regexp_defs.h" 1
# 10 "/home/ubuntu/neovim/src/nvim/regexp_defs.h"
enum {
NSUBEXP = 10,
};
typedef struct regengine regengine_T;
typedef struct {
regprog_T *regprog;
lpos_T startpos[NSUBEXP];
lpos_T endpos[NSUBEXP];
colnr_T rmm_matchcol;
int rmm_ic;
colnr_T rmm_maxcol;
} regmmatch_T;
typedef enum {
OPTION_MAGIC_NOT_SET,
OPTION_MAGIC_ON,
OPTION_MAGIC_OFF,
} optmagic_T;
typedef enum {
MAGIC_NONE = 1,
MAGIC_OFF = 2,
MAGIC_ON = 3,
MAGIC_ALL = 4,
} magic_T;
typedef struct {
regprog_T *regprog;
char *startp[NSUBEXP];
char *endp[NSUBEXP];
colnr_T rm_matchcol;
# 71 "/home/ubuntu/neovim/src/nvim/regexp_defs.h" 3 4
_Bool
# 71 "/home/ubuntu/neovim/src/nvim/regexp_defs.h"
rm_ic;
} regmatch_T;
typedef struct {
int16_t refcnt;
uint8_t *matches[NSUBEXP];
} reg_extmatch_T;
enum {
REGSUB_COPY = 1,
REGSUB_MAGIC = 2,
REGSUB_BACKSLASH = 4,
};
# 9 "/home/ubuntu/neovim/src/nvim/option_defs.h" 2
# 17 "/home/ubuntu/neovim/src/nvim/option_defs.h"
typedef enum {
kOptValTypeNil = -1,
kOptValTypeBoolean,
kOptValTypeNumber,
kOptValTypeString,
} OptValType;
typedef uint32_t OptTypeFlags;
typedef union {
TriState boolean;
OptInt number;
String string;
} OptValData;
typedef struct {
OptValType type;
OptValData data;
} OptVal;
typedef enum {
OP_NONE = 0,
OP_ADDING,
OP_PREPENDING,
OP_REMOVING,
} set_op_T;
typedef struct {
void *os_varp;
OptIndex os_idx;
int os_flags;
OptValData os_oldval;
OptValData os_newval;
# 67 "/home/ubuntu/neovim/src/nvim/option_defs.h" 3 4
_Bool
# 67 "/home/ubuntu/neovim/src/nvim/option_defs.h"
os_value_checked;
# 69 "/home/ubuntu/neovim/src/nvim/option_defs.h" 3 4
_Bool
# 69 "/home/ubuntu/neovim/src/nvim/option_defs.h"
os_value_changed;
# 74 "/home/ubuntu/neovim/src/nvim/option_defs.h" 3 4
_Bool
# 74 "/home/ubuntu/neovim/src/nvim/option_defs.h"
os_restore_chartab;
char *os_errbuf;
size_t os_errbuflen;
void *os_win;
void *os_buf;
} optset_T;
typedef const char *(*opt_did_set_cb_T)(optset_T *args);
typedef struct {
char *oe_varp;
char *oe_opt_value;
# 103 "/home/ubuntu/neovim/src/nvim/option_defs.h" 3 4
_Bool
# 103 "/home/ubuntu/neovim/src/nvim/option_defs.h"
oe_append;
# 105 "/home/ubuntu/neovim/src/nvim/option_defs.h" 3 4
_Bool
# 105 "/home/ubuntu/neovim/src/nvim/option_defs.h"
oe_include_orig_val;
regmatch_T *oe_regmatch;
expand_T *oe_xp;
char *oe_set_arg;
} optexpand_T;
# 128 "/home/ubuntu/neovim/src/nvim/option_defs.h"
typedef int (*opt_expand_cb_T)(optexpand_T *args, int *numMatches, char ***matches);
typedef enum {
kOptReqGlobal = 0,
kOptReqWin = 1,
kOptReqBuf = 2,
} OptReqScope;
# 13 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/os/fs_defs.h" 1
typedef struct {
uv_stat_t stat;
} FileInfo;
typedef struct {
uint64_t inode;
uint64_t device_id;
} FileID;
typedef struct {
uv_fs_t request;
uv_dirent_t ent;
} Directory;
# 14 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/statusline_defs.h" 1
# 1 "/home/ubuntu/neovim/src/nvim/fold_defs.h" 1
typedef struct {
linenr_T fi_lnum;
int fi_level;
int fi_low_level;
linenr_T fi_lines;
} foldinfo_T;
enum { FOLD_TEXT_LEN = 51, };
# 6 "/home/ubuntu/neovim/src/nvim/statusline_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/sign_defs.h" 1
typedef struct {
schar_T text[SIGN_WIDTH];
int hl_id;
} SignTextAttrs;
typedef struct {
char *sn_name;
char *sn_icon;
schar_T sn_text[SIGN_WIDTH];
int sn_line_hl;
int sn_text_hl;
int sn_cul_hl;
int sn_num_hl;
int sn_priority;
} sign_T;
typedef struct {
DecorSignHighlight *sh;
uint32_t id;
} SignItem;
enum { SIGN_SHOW_MAX = 9, };
enum { SIGN_DEF_PRIO = 10, };
# 7 "/home/ubuntu/neovim/src/nvim/statusline_defs.h" 2
typedef struct {
enum {
kStlClickDisabled = 0,
kStlClickTabSwitch,
kStlClickTabClose,
kStlClickFuncRun,
} type;
int tabnr;
char *func;
} StlClickDefinition;
typedef struct {
StlClickDefinition def;
const char *start;
} StlClickRecord;
typedef struct stl_hlrec stl_hlrec_t;
struct stl_hlrec {
char *start;
int userhl;
};
typedef struct stl_item stl_item_t;
struct stl_item {
char *start;
char *cmd;
int minwid;
int maxwid;
enum {
Normal,
Empty,
Group,
Separate,
Highlight,
TabPage,
ClickFunc,
Trunc,
} type;
};
typedef struct {
int width;
int num_attr;
int sign_cul_id;
# 61 "/home/ubuntu/neovim/src/nvim/statusline_defs.h" 3 4
_Bool
# 61 "/home/ubuntu/neovim/src/nvim/statusline_defs.h"
draw;
# 62 "/home/ubuntu/neovim/src/nvim/statusline_defs.h" 3 4
_Bool
# 62 "/home/ubuntu/neovim/src/nvim/statusline_defs.h"
use_cul;
stl_hlrec_t *hlrec;
foldinfo_T foldinfo;
SignTextAttrs *sattrs;
} statuscol_T;
# 15 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/undo_defs.h" 1
# 1 "/home/ubuntu/neovim/src/nvim/extmark_defs.h" 1
typedef ptrdiff_t bcount_t;
typedef struct undo_object ExtmarkUndoObject;
typedef struct { size_t size; size_t capacity; ExtmarkUndoObject *items; } extmark_undo_vec_t;
typedef enum {
kExtmarkNOOP,
kExtmarkUndo,
kExtmarkNoUndo,
kExtmarkUndoNoRedo,
} ExtmarkOp;
# 6 "/home/ubuntu/neovim/src/nvim/undo_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/mark_defs.h" 1
# 1 "/home/ubuntu/neovim/src/nvim/func_attr.h" 1
# 6 "/home/ubuntu/neovim/src/nvim/mark_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/os/time_defs.h" 1
typedef uint64_t Timestamp;
# 7 "/home/ubuntu/neovim/src/nvim/mark_defs.h" 2
# 18 "/home/ubuntu/neovim/src/nvim/mark_defs.h"
typedef enum {
kMarkMoveSuccess = 1,
kMarkMoveFailed = 2,
kMarkSwitchedBuf = 4,
kMarkChangedCol = 8,
kMarkChangedLine = 16,
kMarkChangedCursor = 32,
kMarkChangedView = 64,
} MarkMoveRes;
typedef enum {
kMarkBeginLine = 1,
kMarkContext = 2,
KMarkNoContext = 4,
kMarkSetView = 8,
kMarkJumpList = 16,
} MarkMove;
typedef enum {
kMarkBufLocal,
kMarkAll,
kMarkAllNoResolve,
} MarkGet;
# 69 "/home/ubuntu/neovim/src/nvim/mark_defs.h"
typedef struct {
linenr_T topline_offset;
} fmarkv_T;
typedef struct {
pos_T mark;
int fnum;
Timestamp timestamp;
fmarkv_T view;
AdditionalData *additional_data;
} fmark_T;
typedef struct {
fmark_T fmark;
char *fname;
} xfmark_T;
static inline
# 96 "/home/ubuntu/neovim/src/nvim/mark_defs.h" 3 4
_Bool
# 96 "/home/ubuntu/neovim/src/nvim/mark_defs.h"
lt(pos_T a, pos_T b)
FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
if (a.lnum != b.lnum) {
return a.lnum < b.lnum;
} else if (a.col != b.col) {
return a.col < b.col;
} else {
return a.coladd < b.coladd;
}
}
static inline
# 108 "/home/ubuntu/neovim/src/nvim/mark_defs.h" 3 4
_Bool
# 108 "/home/ubuntu/neovim/src/nvim/mark_defs.h"
equalpos(pos_T a, pos_T b)
FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
return (a.lnum == b.lnum) && (a.col == b.col) && (a.coladd == b.coladd);
}
static inline
# 114 "/home/ubuntu/neovim/src/nvim/mark_defs.h" 3 4
_Bool
# 114 "/home/ubuntu/neovim/src/nvim/mark_defs.h"
ltoreq(pos_T a, pos_T b)
FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
return lt(a, b) || equalpos(a, b);
}
static inline void clearpos(pos_T *a)
FUNC_ATTR_ALWAYS_INLINE
{
a->lnum = 0;
a->col = 0;
a->coladd = 0;
}
# 7 "/home/ubuntu/neovim/src/nvim/undo_defs.h" 2
enum { UNDO_HASH_SIZE = 32, };
typedef struct u_header u_header_T;
typedef struct {
pos_T vi_start;
pos_T vi_end;
int vi_mode;
colnr_T vi_curswant;
} visualinfo_T;
typedef struct u_entry u_entry_T;
struct u_entry {
u_entry_T *ue_next;
linenr_T ue_top;
linenr_T ue_bot;
linenr_T ue_lcount;
char **ue_array;
linenr_T ue_size;
};
struct u_header {
union {
u_header_T *ptr;
int seq;
} uh_next;
union {
u_header_T *ptr;
int seq;
} uh_prev;
union {
u_header_T *ptr;
int seq;
} uh_alt_next;
union {
u_header_T *ptr;
int seq;
} uh_alt_prev;
int uh_seq;
int uh_walk;
u_entry_T *uh_entry;
u_entry_T *uh_getbot_entry;
pos_T uh_cursor;
colnr_T uh_cursor_vcol;
int uh_flags;
fmark_T uh_namedm[('z' - 'a' + 1)];
extmark_undo_vec_t uh_extmark;
visualinfo_T uh_visual;
time_t uh_time;
int uh_save_nr;
};
enum {
UH_CHANGED = 0x01,
UH_EMPTYBUF = 0x02,
UH_RELOAD = 0x04,
};
# 16 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 2
typedef struct {
buf_T *br_buf;
int br_fnum;
int br_buf_free_count;
} bufref_T;
# 73 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
typedef struct wininfo_S wininfo_T;
typedef struct frame_S frame_T;
typedef uint64_t disptick_T;
typedef struct {
char *tagname;
fmark_T fmark;
int cur_match;
int cur_fnum;
char *user_data;
} taggy_T;
typedef struct {
int wo_arab;
int wo_bri;
char *wo_briopt;
int wo_diff;
char *wo_fdc;
char *wo_fdc_save;
int wo_fen;
int wo_fen_save;
char *wo_fdi;
OptInt wo_fdl;
OptInt wo_fdl_save;
char *wo_fdm;
char *wo_fdm_save;
OptInt wo_fml;
OptInt wo_fdn;
char *wo_fde;
char *wo_fdt;
char *wo_fmr;
int wo_lbr;
int wo_list;
int wo_nu;
int wo_rnu;
char *wo_ve;
unsigned wo_ve_flags;
OptInt wo_nuw;
int wo_wfb;
int wo_wfh;
int wo_wfw;
int wo_pvw;
int wo_rl;
char *wo_rlc;
OptInt wo_scr;
int wo_sms;
int wo_spell;
int wo_cuc;
int wo_cul;
char *wo_culopt;
char *wo_cc;
char *wo_sbr;
char *wo_stc;
char *wo_stl;
char *wo_wbr;
int wo_scb;
int wo_diff_saved;
int wo_scb_save;
int wo_wrap;
int wo_wrap_save;
char *wo_cocu;
OptInt wo_cole;
int wo_crb;
int wo_crb_save;
char *wo_scl;
OptInt wo_siso;
OptInt wo_so;
char *wo_winhl;
char *wo_lcs;
char *wo_fcs;
OptInt wo_winbl;
LastSet wo_script_ctx[WV_COUNT];
} winopt_T;
# 221 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
struct wininfo_S {
wininfo_T *wi_next;
wininfo_T *wi_prev;
win_T *wi_win;
fmark_T wi_mark;
# 226 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 226 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
wi_optset;
winopt_T wi_opt;
# 228 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 228 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
wi_fold_manual;
garray_T wi_folds;
int wi_changelistidx;
};
# 251 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
typedef struct qf_info_S qf_info_T;
typedef struct {
proftime_T total;
proftime_T slowest;
int count;
int match;
} syn_time_T;
typedef struct {
hashtab_T b_keywtab;
hashtab_T b_keywtab_ic;
# 266 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 266 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
b_syn_error;
# 267 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 267 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
b_syn_slow;
int b_syn_ic;
int b_syn_foldlevel;
int b_syn_spell;
garray_T b_syn_patterns;
garray_T b_syn_clusters;
int b_spell_cluster_id;
int b_nospell_cluster_id;
int b_syn_containedin;
int b_syn_sync_flags;
int16_t b_syn_sync_id;
linenr_T b_syn_sync_minlines;
linenr_T b_syn_sync_maxlines;
linenr_T b_syn_sync_linebreaks;
char *b_syn_linecont_pat;
regprog_T *b_syn_linecont_prog;
syn_time_T b_syn_linecont_time;
int b_syn_linecont_ic;
int b_syn_topgrp;
int b_syn_conceal;
int b_syn_folditems;
# 302 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
synstate_T *b_sst_array;
int b_sst_len;
synstate_T *b_sst_first;
synstate_T *b_sst_firstfree;
int b_sst_freecount;
linenr_T b_sst_check_lnum;
disptick_T b_sst_lasttick;
garray_T b_langp;
# 312 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 312 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
b_spell_ismw[256];
char *b_spell_ismw_mb;
char *b_p_spc;
regprog_T *b_cap_prog;
char *b_p_spf;
char *b_p_spl;
char *b_p_spo;
unsigned b_p_spo_flags;
int b_cjk;
uint8_t b_syn_chartab[32];
char *b_syn_isk;
} synblock_T;
typedef struct { typval_T di_tv; uint8_t di_flags; char di_key[sizeof("changedtick")]; } ChangedtickDictItem;
typedef struct {
LuaRef on_lines;
LuaRef on_bytes;
LuaRef on_changedtick;
LuaRef on_detach;
LuaRef on_reload;
# 338 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 338 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
utf_sizes;
# 339 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 339 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
preview;
} BufUpdateCallbacks;
# 356 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
struct file_buffer {
handle_T handle;
memline_T b_ml;
buf_T *b_next;
buf_T *b_prev;
int b_nwindows;
int b_flags;
int b_locked;
int b_locked_split;
int b_ro_locked;
char *b_ffname;
char *b_sfname;
char *b_fname;
# 385 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 385 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
file_id_valid;
FileID file_id;
int b_changed;
# 390 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 390 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
b_changed_invalid;
ChangedtickDictItem changedtick_di;
varnumber_T b_last_changedtick;
varnumber_T b_last_changedtick_i;
varnumber_T b_last_changedtick_pum;
# 404 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 404 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
b_saving;
# 409 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 409 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
b_mod_set;
linenr_T b_mod_top;
linenr_T b_mod_bot;
linenr_T b_mod_xlines;
wininfo_T *b_wininfo;
disptick_T b_mod_tick_syn;
disptick_T b_mod_tick_decor;
int64_t b_mtime;
int64_t b_mtime_ns;
int64_t b_mtime_read;
int64_t b_mtime_read_ns;
uint64_t b_orig_size;
int b_orig_mode;
time_t b_last_used;
fmark_T b_namedm[('z' - 'a' + 1)];
visualinfo_T b_visual;
int b_visual_mode_eval;
fmark_T b_last_cursor;
fmark_T b_last_insert;
fmark_T b_last_change;
fmark_T b_changelist[100];
int b_changelistlen;
# 444 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 444 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
b_new_change;
uint64_t b_chartab[4];
mapblock_T *(b_maphash[256]);
mapblock_T *b_first_abbr;
garray_T b_ucmds;
pos_T b_op_start;
pos_T b_op_start_orig;
pos_T b_op_end;
# 462 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 462 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
b_marks_read;
# 464 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 464 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
b_modified_was_set;
# 465 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 465 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
b_did_filetype;
# 466 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 466 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
b_keep_filetype;
# 475 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
# 475 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 475 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
b_au_did_filetype;
u_header_T *b_u_oldhead;
u_header_T *b_u_newhead;
u_header_T *b_u_curhead;
int b_u_numhead;
# 483 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 483 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
b_u_synced;
int b_u_seq_last;
int b_u_save_nr_last;
int b_u_seq_cur;
time_t b_u_time_cur;
int b_u_save_nr_cur;
char *b_u_line_ptr;
linenr_T b_u_line_lnum;
colnr_T b_u_line_colnr;
# 495 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 495 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
b_scanned;
OptInt b_p_iminsert;
OptInt b_p_imsearch;
int16_t b_kmap_state;
garray_T b_kmap_ga;
# 513 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 513 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
b_p_initialized;
LastSet b_p_script_ctx[BV_COUNT];
int b_p_ai;
int b_p_ai_nopaste;
char *b_p_bkc;
unsigned b_bkc_flags;
int b_p_ci;
int b_p_bin;
int b_p_bomb;
char *b_p_bh;
char *b_p_bt;
int b_has_qf_entry;
int b_p_bl;
OptInt b_p_channel;
int b_p_cin;
char *b_p_cino;
char *b_p_cink;
char *b_p_cinw;
char *b_p_cinsd;
char *b_p_com;
char *b_p_cms;
char *b_p_cot;
unsigned b_cot_flags;
char *b_p_cpt;
char *b_p_cfu;
Callback b_cfu_cb;
char *b_p_ofu;
Callback b_ofu_cb;
char *b_p_tfu;
Callback b_tfu_cb;
int b_p_eof;
int b_p_eol;
int b_p_fixeol;
int b_p_et;
int b_p_et_nobin;
int b_p_et_nopaste;
char *b_p_fenc;
char *b_p_ff;
char *b_p_ft;
char *b_p_fo;
char *b_p_flp;
int b_p_inf;
char *b_p_isk;
char *b_p_def;
char *b_p_inc;
char *b_p_inex;
uint32_t b_p_inex_flags;
char *b_p_inde;
uint32_t b_p_inde_flags;
char *b_p_indk;
char *b_p_fp;
char *b_p_fex;
uint32_t b_p_fex_flags;
char *b_p_kp;
int b_p_lisp;
char *b_p_lop;
char *b_p_menc;
char *b_p_mps;
int b_p_ml;
int b_p_ml_nobin;
int b_p_ma;
char *b_p_nf;
int b_p_pi;
char *b_p_qe;
int b_p_ro;
OptInt b_p_sw;
OptInt b_p_scbk;
int b_p_si;
OptInt b_p_sts;
OptInt b_p_sts_nopaste;
char *b_p_sua;
int b_p_swf;
OptInt b_p_smc;
char *b_p_syn;
OptInt b_p_ts;
OptInt b_p_tw;
OptInt b_p_tw_nobin;
OptInt b_p_tw_nopaste;
OptInt b_p_wm;
OptInt b_p_wm_nobin;
OptInt b_p_wm_nopaste;
char *b_p_vsts;
colnr_T *b_p_vsts_array;
char *b_p_vsts_nopaste;
char *b_p_vts;
colnr_T *b_p_vts_array;
char *b_p_keymap;
char *b_p_gp;
char *b_p_mp;
char *b_p_efm;
char *b_p_ep;
char *b_p_path;
int b_p_ar;
char *b_p_tags;
char *b_p_tc;
unsigned b_tc_flags;
char *b_p_dict;
char *b_p_tsr;
char *b_p_tsrfu;
Callback b_tsrfu_cb;
OptInt b_p_ul;
int b_p_udf;
char *b_p_lw;
int b_ind_level;
int b_ind_open_imag;
int b_ind_no_brace;
int b_ind_first_open;
int b_ind_open_extra;
int b_ind_close_extra;
int b_ind_open_left_imag;
int b_ind_jump_label;
int b_ind_case;
int b_ind_case_code;
int b_ind_case_break;
int b_ind_param;
int b_ind_func_type;
int b_ind_comment;
int b_ind_in_comment;
int b_ind_in_comment2;
int b_ind_cpp_baseclass;
int b_ind_continuation;
int b_ind_unclosed;
int b_ind_unclosed2;
int b_ind_unclosed_noignore;
int b_ind_unclosed_wrapped;
int b_ind_unclosed_whiteok;
int b_ind_matching_paren;
int b_ind_paren_prev;
int b_ind_maxparen;
int b_ind_maxcomment;
int b_ind_scopedecl;
int b_ind_scopedecl_code;
int b_ind_java;
int b_ind_js;
int b_ind_keep_case_label;
int b_ind_hash_comment;
int b_ind_cpp_namespace;
int b_ind_if_for_while;
int b_ind_cpp_extern_c;
int b_ind_pragma;
linenr_T b_no_eol_lnum;
int b_start_eof;
int b_start_eol;
int b_start_ffc;
char *b_start_fenc;
int b_bad_char;
int b_start_bomb;
ScopeDictDictItem b_bufvar;
dict_T *b_vars;
# 681 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 681 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
b_may_swap;
# 682 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 682 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
b_did_warn;
# 689 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 689 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
b_help;
# 691 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 691 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
b_spell;
char *b_prompt_text;
Callback b_prompt_callback;
Callback b_prompt_interrupt;
int b_prompt_insert;
synblock_T b_s;
struct {
int max;
int count[SIGN_SHOW_MAX];
# 707 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 707 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
resized;
# 708 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 708 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
autom;
} b_signcols;
Terminal *terminal;
AdditionalData *additional_data;
int b_mapped_ctrl_c;
MarkTree b_marktree[1];
Map_uint32_tuint32_t b_extmark_ns[1];
struct { size_t size; size_t capacity; uint64_t *items; } update_channels;
struct { size_t size; size_t capacity; BufUpdateCallbacks *items; } update_callbacks;
# 729 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 729 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
update_need_codepoints;
size_t deleted_bytes;
size_t deleted_bytes2;
size_t deleted_codepoints;
size_t deleted_codeunits;
int flush_count;
};
# 759 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
typedef struct diffblock_S diff_T;
struct diffblock_S {
diff_T *df_next;
linenr_T df_lnum[8];
linenr_T df_count[8];
# 764 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 764 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
is_linematched;
};
# 776 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
typedef struct tabpage_S tabpage_T;
struct tabpage_S {
handle_T handle;
tabpage_T *tp_next;
frame_T *tp_topframe;
win_T *tp_curwin;
win_T *tp_prevwin;
win_T *tp_firstwin;
win_T *tp_lastwin;
int64_t tp_old_Rows_avail;
int64_t tp_old_Columns;
OptInt tp_ch_used;
diff_T *tp_first_diff;
buf_T *(tp_diffbuf[8]);
int tp_diff_invalid;
int tp_diff_update;
frame_T *(tp_snapshot[2]);
ScopeDictDictItem tp_winvar;
dict_T *tp_vars;
char *tp_localdir;
char *tp_prevdir;
};
# 811 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
typedef struct {
linenr_T wl_lnum;
uint16_t wl_size;
char wl_valid;
char wl_folded;
linenr_T wl_lastlnum;
} wline_T;
struct frame_S {
char fr_layout;
int fr_width;
int fr_newwidth;
int fr_height;
int fr_newheight;
frame_T *fr_parent;
frame_T *fr_next;
frame_T *fr_prev;
frame_T *fr_child;
win_T *fr_win;
};
# 846 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
typedef struct {
regmmatch_T rm;
buf_T *buf;
linenr_T lnum;
int attr;
int attr_cur;
linenr_T first_lnum;
colnr_T startcol;
colnr_T endcol;
# 856 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 856 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
is_addpos;
# 857 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 857 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
has_cursor;
proftime_T tm;
} match_T;
typedef struct {
linenr_T lnum;
colnr_T col;
int len;
} llpos_T;
typedef struct matchitem matchitem_T;
struct matchitem {
matchitem_T *mit_next;
int mit_id;
int mit_priority;
char *mit_pattern;
regmmatch_T mit_match;
llpos_T *mit_pos_array;
int mit_pos_count;
int mit_pos_cur;
linenr_T mit_toplnum;
linenr_T mit_botlnum;
match_T mit_hl;
int mit_hlg_id;
int mit_conceal_char;
};
typedef int FloatAnchor;
enum {
kFloatAnchorEast = 1,
kFloatAnchorSouth = 2,
};
typedef enum {
kFloatRelativeEditor = 0,
kFloatRelativeWindow = 1,
kFloatRelativeCursor = 2,
kFloatRelativeMouse = 3,
} FloatRelative;
typedef enum {
kWinSplitLeft = 0,
kWinSplitRight = 1,
kWinSplitAbove = 2,
kWinSplitBelow = 3,
} WinSplit;
typedef enum {
kWinStyleUnused = 0,
kWinStyleMinimal,
} WinStyle;
typedef enum {
kAlignLeft = 0,
kAlignCenter = 1,
kAlignRight = 2,
} AlignTextPos;
typedef enum {
kBorderTextTitle = 0,
kBorderTextFooter = 1,
} BorderTextType;
typedef struct {
Window window;
lpos_T bufpos;
int height, width;
double row, col;
FloatAnchor anchor;
FloatRelative relative;
# 939 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 939 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
external;
# 940 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 940 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
focusable;
WinSplit split;
int zindex;
WinStyle style;
# 944 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 944 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
border;
# 945 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 945 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
shadow;
char border_chars[8][32];
int border_hl_ids[8];
int border_attr[8];
# 949 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 949 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
title;
AlignTextPos title_pos;
VirtText title_chunks;
int title_width;
# 953 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 953 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
footer;
AlignTextPos footer_pos;
VirtText footer_chunks;
int footer_width;
# 957 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 957 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
noautocmd;
# 958 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 958 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
fixed;
# 959 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 959 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
hide;
} WinConfig;
# 976 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
typedef struct {
int w_topline_save;
int w_topline_corr;
pos_T w_cursor_save;
pos_T w_cursor_corr;
} pos_save_T;
typedef struct {
schar_T eol;
schar_T ext;
schar_T prec;
schar_T nbsp;
schar_T space;
schar_T tab1;
schar_T tab2;
schar_T tab3;
schar_T lead;
schar_T trail;
schar_T *multispace;
schar_T *leadmultispace;
schar_T conceal;
} lcs_chars_T;
typedef struct {
schar_T stl;
schar_T stlnc;
schar_T wbr;
schar_T horiz;
schar_T horizup;
schar_T horizdown;
schar_T vert;
schar_T vertleft;
schar_T vertright;
schar_T verthoriz;
schar_T fold;
schar_T foldopen;
schar_T foldclosed;
schar_T foldsep;
schar_T diff;
schar_T msgsep;
schar_T eob;
schar_T lastline;
} fcs_chars_T;
struct window_S {
handle_T handle;
buf_T *w_buffer;
synblock_T *w_s;
int w_ns_hl;
int w_ns_hl_winhl;
int w_ns_hl_active;
int *w_ns_hl_attr;
Set_uint32_t w_ns_set;
int w_hl_id_normal;
int w_hl_attr_normal;
int w_hl_attr_normalnc;
int w_hl_needs_update;
win_T *w_prev;
win_T *w_next;
# 1048 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 1048 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
w_locked;
frame_T *w_frame;
pos_T w_cursor;
colnr_T w_curswant;
int w_set_curswant;
linenr_T w_cursorline;
linenr_T w_last_cursorline;
char w_old_visual_mode;
linenr_T w_old_cursor_lnum;
colnr_T w_old_cursor_fcol;
colnr_T w_old_cursor_lcol;
linenr_T w_old_visual_lnum;
colnr_T w_old_visual_col;
colnr_T w_old_curswant;
linenr_T w_last_cursor_lnum_rnu;
lcs_chars_T w_p_lcs_chars;
fcs_chars_T w_p_fcs_chars;
linenr_T w_topline;
char w_topline_was_set;
int w_topfill;
int w_old_topfill;
# 1092 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 1092 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
w_botfill;
# 1094 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 1094 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
w_old_botfill;
colnr_T w_leftcol;
colnr_T w_skipcol;
linenr_T w_last_topline;
int w_last_topfill;
colnr_T w_last_leftcol;
colnr_T w_last_skipcol;
int w_last_width;
int w_last_height;
int w_winrow;
int w_height;
int w_prev_winrow;
int w_prev_height;
int w_status_height;
int w_winbar_height;
int w_wincol;
int w_width;
int w_hsep_height;
int w_vsep_width;
pos_save_T w_save_cursor;
# 1126 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 1126 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
w_do_win_fix_cursor;
int w_winrow_off;
int w_wincol_off;
int w_height_inner;
int w_width_inner;
int w_height_request;
int w_width_request;
int w_border_adj[4];
int w_height_outer;
int w_width_outer;
int w_valid;
pos_T w_valid_cursor;
colnr_T w_valid_leftcol;
colnr_T w_valid_skipcol;
# 1156 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 1156 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
w_viewport_invalid;
linenr_T w_viewport_last_topline;
linenr_T w_viewport_last_botline;
linenr_T w_viewport_last_topfill;
linenr_T w_viewport_last_skipcol;
int w_cline_height;
# 1165 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 1165 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
w_cline_folded;
int w_cline_row;
colnr_T w_virtcol;
# 1179 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
int w_wrow, w_wcol;
linenr_T w_botline;
int w_empty_rows;
int w_filler_rows;
# 1195 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
int w_lines_valid;
wline_T *w_lines;
garray_T w_folds;
# 1199 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 1199 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
w_fold_manual;
# 1201 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 1201 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
w_foldinvalid;
int w_nrwidth;
int w_scwidth;
int w_minscwidth;
int w_maxscwidth;
int w_redr_type;
int w_upd_rows;
linenr_T w_redraw_top;
linenr_T w_redraw_bot;
# 1216 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 1216 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
w_redr_status;
# 1217 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 1217 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
w_redr_border;
# 1218 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 1218 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
w_redr_statuscol;
pos_T w_stl_cursor;
colnr_T w_stl_virtcol;
linenr_T w_stl_topline;
linenr_T w_stl_line_count;
int w_stl_topfill;
char w_stl_empty;
int w_stl_recording;
int w_stl_state;
int w_stl_visual_mode;
int w_alt_fnum;
alist_T *w_alist;
int w_arg_idx;
int w_arg_idx_invalid;
char *w_localdir;
char *w_prevdir;
winopt_T w_onebuf_opt;
winopt_T w_allbuf_opt;
uint32_t w_p_stl_flags;
uint32_t w_p_wbr_flags;
uint32_t w_p_fde_flags;
uint32_t w_p_fdt_flags;
int *w_p_cc_cols;
uint8_t w_p_culopt_flags;
int w_briopt_min;
int w_briopt_shift;
# 1260 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 1260 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
w_briopt_sbr;
int w_briopt_list;
int w_briopt_vcol;
int w_scbind_pos;
ScopeDictDictItem w_winvar;
dict_T *w_vars;
pos_T w_pcmark;
pos_T w_prev_pcmark;
xfmark_T w_jumplist[100];
int w_jumplistlen;
int w_jumplistidx;
int w_changelistidx;
matchitem_T *w_match_head;
int w_next_match_id;
taggy_T w_tagstack[20];
int w_tagstackidx;
int w_tagstacklen;
ScreenGrid w_grid;
ScreenGrid w_grid_alloc;
# 1295 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 1295 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
w_pos_changed;
# 1296 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 1296 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
w_floating;
# 1297 "/home/ubuntu/neovim/src/nvim/buffer_defs.h" 3 4
_Bool
# 1297 "/home/ubuntu/neovim/src/nvim/buffer_defs.h"
w_float_is_info;
WinConfig w_config;
int w_fraction;
int w_prev_fraction_row;
linenr_T w_nrwidth_line_count;
linenr_T w_statuscol_line_count;
int w_nrwidth_width;
qf_info_T *w_llist;
qf_info_T *w_llist_ref;
StlClickDefinition *w_status_click_defs;
size_t w_status_click_defs_size;
StlClickDefinition *w_winbar_click_defs;
size_t w_winbar_click_defs_size;
StlClickDefinition *w_statuscol_click_defs;
size_t w_statuscol_click_defs_size;
};
# 9 "/home/ubuntu/neovim/src/nvim/api/private/helpers.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/ex_eval_defs.h" 1
# 10 "/home/ubuntu/neovim/src/nvim/ex_eval_defs.h"
typedef struct eslist_elem eslist_T;
struct eslist_elem {
int saved_emsg_silent;
eslist_T *next;
};
enum {
CSTACK_LEN = 50,
};
typedef struct {
int cs_flags[CSTACK_LEN];
char cs_pending[CSTACK_LEN];
union {
void *csp_rv[CSTACK_LEN];
void *csp_ex[CSTACK_LEN];
} cs_pend;
void *cs_forinfo[CSTACK_LEN];
int cs_line[CSTACK_LEN];
int cs_idx;
int cs_looplevel;
int cs_trylevel;
eslist_T *cs_emsg_silent_list;
int cs_lflags;
} cstack_T;
enum {
CSF_TRUE = 0x0001,
CSF_ACTIVE = 0x0002,
CSF_ELSE = 0x0004,
CSF_WHILE = 0x0008,
CSF_FOR = 0x0010,
CSF_TRY = 0x0100,
CSF_FINALLY = 0x0200,
CSF_THROWN = 0x0800,
CSF_CAUGHT = 0x1000,
CSF_FINISHED = 0x2000,
CSF_SILENT = 0x4000,
};
enum {
CSTP_NONE = 0,
CSTP_ERROR = 1,
CSTP_INTERRUPT = 2,
CSTP_THROW = 4,
CSTP_BREAK = 8,
CSTP_CONTINUE = 16,
CSTP_RETURN = 24,
CSTP_FINISH = 32,
};
enum {
CSL_HAD_LOOP = 1,
CSL_HAD_ENDLOOP = 2,
CSL_HAD_CONT = 4,
CSL_HAD_FINA = 8,
};
typedef struct msglist msglist_T;
struct msglist {
msglist_T *next;
char *msg;
char *throw_msg;
char *sfile;
linenr_T slnum;
# 91 "/home/ubuntu/neovim/src/nvim/ex_eval_defs.h" 3 4
_Bool
# 91 "/home/ubuntu/neovim/src/nvim/ex_eval_defs.h"
multiline;
};
typedef enum {
ET_USER,
ET_ERROR,
ET_INTERRUPT,
} except_type_T;
typedef struct vim_exception except_T;
struct vim_exception {
except_type_T type;
char *value;
msglist_T *messages;
char *throw_name;
linenr_T throw_lnum;
except_T *caught;
};
typedef struct cleanup_stuff cleanup_T;
struct cleanup_stuff {
int pending;
except_T *exception;
};
typedef struct exception_state_S exception_state_T;
struct exception_state_S {
except_T *estate_current_exception;
# 127 "/home/ubuntu/neovim/src/nvim/ex_eval_defs.h" 3 4
_Bool
# 127 "/home/ubuntu/neovim/src/nvim/ex_eval_defs.h"
estate_did_throw;
# 128 "/home/ubuntu/neovim/src/nvim/ex_eval_defs.h" 3 4
_Bool
# 128 "/home/ubuntu/neovim/src/nvim/ex_eval_defs.h"
estate_need_rethrow;
int estate_trylevel;
int estate_did_emsg;
};
# 11 "/home/ubuntu/neovim/src/nvim/api/private/helpers.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/message_defs.h" 1
typedef struct {
String text;
int attr;
} HlMessageChunk;
typedef struct { size_t size; size_t capacity; HlMessageChunk *items; } HlMessage;
typedef struct msg_hist {
struct msg_hist *next;
char *msg;
const char *kind;
int attr;
# 20 "/home/ubuntu/neovim/src/nvim/message_defs.h" 3 4
_Bool
# 20 "/home/ubuntu/neovim/src/nvim/message_defs.h"
multiline;
HlMessage multiattr;
} MessageHistoryEntry;
# 14 "/home/ubuntu/neovim/src/nvim/api/private/helpers.h" 2
# 98 "/home/ubuntu/neovim/src/nvim/api/private/helpers.h"
typedef struct { size_t size; size_t capacity; Object *items; Object init_array[16]; } ArrayBuilder;
# 128 "/home/ubuntu/neovim/src/nvim/api/private/helpers.h"
extern Map_intptr_t buffer_handles ;
extern Map_intptr_t window_handles ;
extern Map_intptr_t tabpage_handles ;
# 140 "/home/ubuntu/neovim/src/nvim/api/private/helpers.h"
typedef struct {
except_T *current_exception;
msglist_T *private_msg_list;
const msglist_T *const *msg_list;
int trylevel;
int got_int;
# 146 "/home/ubuntu/neovim/src/nvim/api/private/helpers.h" 3 4
_Bool
# 146 "/home/ubuntu/neovim/src/nvim/api/private/helpers.h"
did_throw;
int need_rethrow;
int did_emsg;
} TryState;
# 15 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/ascii_defs.h" 1
# 91 "/home/ubuntu/neovim/src/nvim/ascii_defs.h"
static inline
# 91 "/home/ubuntu/neovim/src/nvim/ascii_defs.h" 3 4
_Bool
# 91 "/home/ubuntu/neovim/src/nvim/ascii_defs.h"
ascii_iswhite(int c)
FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
return c == ' ' || c == '\t';
}
static inline
# 100 "/home/ubuntu/neovim/src/nvim/ascii_defs.h" 3 4
_Bool
# 100 "/home/ubuntu/neovim/src/nvim/ascii_defs.h"
ascii_iswhite_or_nul(int c)
FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
return ascii_iswhite(c) || c == '\000';
}
# 115 "/home/ubuntu/neovim/src/nvim/ascii_defs.h"
static inline
# 115 "/home/ubuntu/neovim/src/nvim/ascii_defs.h" 3 4
_Bool
# 115 "/home/ubuntu/neovim/src/nvim/ascii_defs.h"
ascii_isdigit(int c)
FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
return c >= '0' && c <= '9';
}
static inline
# 124 "/home/ubuntu/neovim/src/nvim/ascii_defs.h" 3 4
_Bool
# 124 "/home/ubuntu/neovim/src/nvim/ascii_defs.h"
ascii_isxdigit(int c)
FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
return (c >= '0' && c <= '9')
|| (c >= 'a' && c <= 'f')
|| (c >= 'A' && c <= 'F');
}
static inline
# 135 "/home/ubuntu/neovim/src/nvim/ascii_defs.h" 3 4
_Bool
# 135 "/home/ubuntu/neovim/src/nvim/ascii_defs.h"
ascii_isident(int c)
FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
return ((((unsigned)(c) >= 'A' && (unsigned)(c) <= 'Z') || ((unsigned)(c) >= 'a' && (unsigned)(c) <= 'z')) || ascii_isdigit(c)) || c == '_';
}
static inline
# 144 "/home/ubuntu/neovim/src/nvim/ascii_defs.h" 3 4
_Bool
# 144 "/home/ubuntu/neovim/src/nvim/ascii_defs.h"
ascii_isbdigit(int c)
FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
return (c == '0' || c == '1');
}
static inline
# 153 "/home/ubuntu/neovim/src/nvim/ascii_defs.h" 3 4
_Bool
# 153 "/home/ubuntu/neovim/src/nvim/ascii_defs.h"
ascii_isodigit(int c)
FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
return (c >= '0' && c <= '7');
}
static inline
# 163 "/home/ubuntu/neovim/src/nvim/ascii_defs.h" 3 4
_Bool
# 163 "/home/ubuntu/neovim/src/nvim/ascii_defs.h"
ascii_isspace(int c)
FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
return (c >= 9 && c <= 13) || c == ' ';
}
# 16 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/autocmd.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 5 "/home/ubuntu/neovim/src/nvim/autocmd.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/autocmd_defs.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 5 "/home/ubuntu/neovim/src/nvim/autocmd_defs.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h" 1
# 72 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h"
typedef enum {
ADDR_LINES,
ADDR_WINDOWS,
ADDR_ARGUMENTS,
ADDR_LOADED_BUFFERS,
ADDR_BUFFERS,
ADDR_TABS,
ADDR_TABS_RELATIVE,
ADDR_QUICKFIX_VALID,
ADDR_QUICKFIX,
ADDR_UNSIGNED,
ADDR_OTHER,
ADDR_NONE,
} cmd_addr_T;
typedef struct exarg exarg_T;
typedef void (*ex_func_T)(exarg_T *eap);
typedef int (*ex_preview_func_T)(exarg_T *eap, int cmdpreview_ns, handle_T cmdpreview_bufnr);
# 109 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h"
typedef enum {
CALLABLE_NONE,
CALLABLE_EX,
CALLABLE_CB,
} AucmdExecutableType;
typedef struct aucmd_executable_t AucmdExecutable;
struct aucmd_executable_t {
AucmdExecutableType type;
union {
char *cmd;
Callback cb;
} callable;
};
typedef char *(*LineGetter)(int, void *, int,
# 126 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h" 3 4
_Bool
# 126 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h"
);
typedef struct {
char *cmd_name;
ex_func_T cmd_func;
ex_preview_func_T cmd_preview_func;
uint32_t cmd_argt;
cmd_addr_T cmd_addr_type;
} CommandDefinition;
struct exarg {
char *arg;
char **args;
size_t *arglens;
size_t argc;
char *nextcmd;
char *cmd;
char **cmdlinep;
char *cmdline_tofree;
cmdidx_T cmdidx;
uint32_t argt;
int skip;
int forceit;
int addr_count;
linenr_T line1;
linenr_T line2;
cmd_addr_T addr_type;
int flags;
char *do_ecmd_cmd;
linenr_T do_ecmd_lnum;
int append;
int usefilter;
int amount;
int regname;
int force_bin;
int read_edit;
int mkdir_p;
int force_ff;
int force_enc;
int bad_char;
int useridx;
char *errmsg;
LineGetter ea_getline;
void *cookie;
cstack_T *cstack;
};
# 183 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h"
enum {
CMOD_SANDBOX = 0x0001,
CMOD_SILENT = 0x0002,
CMOD_ERRSILENT = 0x0004,
CMOD_UNSILENT = 0x0008,
CMOD_NOAUTOCMD = 0x0010,
CMOD_HIDE = 0x0020,
CMOD_BROWSE = 0x0040,
CMOD_CONFIRM = 0x0080,
CMOD_KEEPALT = 0x0100,
CMOD_KEEPMARKS = 0x0200,
CMOD_KEEPJUMPS = 0x0400,
CMOD_LOCKMARKS = 0x0800,
CMOD_KEEPPATTERNS = 0x1000,
CMOD_NOSWAPFILE = 0x2000,
};
typedef struct {
int cmod_flags;
int cmod_split;
int cmod_tab;
char *cmod_filter_pat;
regmatch_T cmod_filter_regmatch;
# 210 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h" 3 4
_Bool
# 210 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h"
cmod_filter_force;
int cmod_verbose;
char *cmod_save_ei;
int cmod_did_sandbox;
OptInt cmod_verbose_save;
int cmod_save_msg_silent;
int cmod_save_msg_scroll;
int cmod_did_esilent;
} cmdmod_T;
typedef struct {
cmdmod_T cmdmod;
struct {
# 227 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h" 3 4
_Bool
# 227 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h"
file;
# 228 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h" 3 4
_Bool
# 228 "/home/ubuntu/neovim/src/nvim/ex_cmds_defs.h"
bar;
} magic;
} CmdParseInfo;
typedef struct {
char *sub;
Timestamp timestamp;
AdditionalData *additional_data;
} SubReplacementString;
# 9 "/home/ubuntu/neovim/src/nvim/autocmd_defs.h" 2
typedef struct {
int use_aucmd_win_idx;
handle_T save_curwin_handle;
handle_T new_curwin_handle;
handle_T save_prevwin_handle;
bufref_T new_curbuf;
char *tp_localdir;
char *globaldir;
# 24 "/home/ubuntu/neovim/src/nvim/autocmd_defs.h" 3 4
_Bool
# 24 "/home/ubuntu/neovim/src/nvim/autocmd_defs.h"
save_VIsual_active;
int save_State;
int save_prompt_insert;
} aco_save_T;
typedef struct {
size_t refcount;
char *pat;
regprog_T *reg_prog;
int group;
int patlen;
int buflocal_nr;
char allow_dirs;
} AutoPat;
typedef struct {
AucmdExecutable exec;
AutoPat *pat;
int64_t id;
char *desc;
sctx_T script_ctx;
# 45 "/home/ubuntu/neovim/src/nvim/autocmd_defs.h" 3 4
_Bool
# 45 "/home/ubuntu/neovim/src/nvim/autocmd_defs.h"
once;
# 46 "/home/ubuntu/neovim/src/nvim/autocmd_defs.h" 3 4
_Bool
# 46 "/home/ubuntu/neovim/src/nvim/autocmd_defs.h"
nested;
} AutoCmd;
typedef struct AutoPatCmd_S AutoPatCmd;
struct AutoPatCmd_S {
AutoPat *lastpat;
size_t auidx;
size_t ausize;
char *fname;
char *sfname;
char *tail;
int group;
event_T event;
sctx_T script_ctx;
int arg_bufnr;
Object *data;
AutoPatCmd *next;
};
typedef struct { size_t size; size_t capacity; AutoCmd *items; } AutoCmdVec;
# 10 "/home/ubuntu/neovim/src/nvim/autocmd.h" 2
# 19 "/home/ubuntu/neovim/src/nvim/autocmd.h"
extern win_T *last_cursormoved_win ;
extern pos_T last_cursormoved ;
extern
# 23 "/home/ubuntu/neovim/src/nvim/autocmd.h" 3 4
_Bool
# 23 "/home/ubuntu/neovim/src/nvim/autocmd.h"
autocmd_busy ;
extern int autocmd_no_enter ;
extern int autocmd_no_leave ;
extern bufref_T au_new_curbuf ;
extern buf_T *au_pending_free_buf ;
extern win_T *au_pending_free_win ;
extern char *autocmd_fname ;
extern
# 39 "/home/ubuntu/neovim/src/nvim/autocmd.h" 3 4
_Bool
# 39 "/home/ubuntu/neovim/src/nvim/autocmd.h"
autocmd_fname_full ;
extern int autocmd_bufnr ;
extern char *autocmd_match ;
extern
# 42 "/home/ubuntu/neovim/src/nvim/autocmd.h" 3 4
_Bool
# 42 "/home/ubuntu/neovim/src/nvim/autocmd.h"
did_cursorhold ;
typedef struct {
win_T *auc_win;
# 47 "/home/ubuntu/neovim/src/nvim/autocmd.h" 3 4
_Bool
# 47 "/home/ubuntu/neovim/src/nvim/autocmd.h"
auc_win_used;
} aucmdwin_T;
extern struct { size_t size; size_t capacity; aucmdwin_T *items; } aucmd_win_vec ;
enum {
AUGROUP_DEFAULT = -1,
AUGROUP_ERROR = -2,
AUGROUP_ALL = -3,
AUGROUP_DELETED = -4,
};
enum { BUFLOCAL_PAT_LEN = 25, };
# 17 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/buffer.h" 1
# 1 "/home/ubuntu/neovim/src/nvim/gettext_defs.h" 1
# 1 "/usr/include/libintl.h" 1 3 4
# 34 "/usr/include/libintl.h" 3 4
# 39 "/usr/include/libintl.h" 3 4
extern char *gettext (const char *__msgid)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format_arg__ (1)));
extern char *dgettext (const char *__domainname, const char *__msgid)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format_arg__ (2)));
extern char *__dgettext (const char *__domainname, const char *__msgid)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format_arg__ (2)));
extern char *dcgettext (const char *__domainname,
const char *__msgid, int __category)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format_arg__ (2)));
extern char *__dcgettext (const char *__domainname,
const char *__msgid, int __category)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format_arg__ (2)));
extern char *ngettext (const char *__msgid1, const char *__msgid2,
unsigned long int __n)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format_arg__ (1))) __attribute__ ((__format_arg__ (2)));
extern char *dngettext (const char *__domainname, const char *__msgid1,
const char *__msgid2, unsigned long int __n)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3)));
extern char *dcngettext (const char *__domainname, const char *__msgid1,
const char *__msgid2, unsigned long int __n,
int __category)
__attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format_arg__ (2))) __attribute__ ((__format_arg__ (3)));
extern char *textdomain (const char *__domainname) __attribute__ ((__nothrow__ , __leaf__));
extern char *bindtextdomain (const char *__domainname,
const char *__dirname) __attribute__ ((__nothrow__ , __leaf__));
extern char *bind_textdomain_codeset (const char *__domainname,
const char *__codeset) __attribute__ ((__nothrow__ , __leaf__));
# 121 "/usr/include/libintl.h" 3 4
# 5 "/home/ubuntu/neovim/src/nvim/gettext_defs.h" 2
# 9 "/home/ubuntu/neovim/src/nvim/buffer.h" 2
# 14 "/home/ubuntu/neovim/src/nvim/buffer.h"
enum getf_values {
GETF_SETMARK = 0x01,
GETF_ALT = 0x02,
GETF_SWITCH = 0x04,
};
enum getf_retvalues {
GETFILE_ERROR = 1,
GETFILE_NOT_WRITTEN = 2,
GETFILE_SAME_FILE = 0,
GETFILE_OPEN_OTHER = -1,
GETFILE_UNUSED = 8,
};
enum bln_values {
BLN_CURBUF = 1,
BLN_LISTED = 2,
BLN_DUMMY = 4,
BLN_NEW = 8,
BLN_NOOPT = 16,
BLN_NOCURWIN = 128,
};
enum dobuf_action_values {
DOBUF_GOTO = 0,
DOBUF_SPLIT = 1,
DOBUF_UNLOAD = 2,
DOBUF_DEL = 3,
DOBUF_WIPE = 4,
};
enum dobuf_start_values {
DOBUF_CURRENT = 0,
DOBUF_FIRST = 1,
DOBUF_LAST = 2,
DOBUF_MOD = 3,
};
enum dobuf_flags_value {
DOBUF_FORCEIT = 1,
DOBUF_SKIPHELP = 4,
};
enum bfa_values {
BFA_DEL = 1,
BFA_WIPE = 2,
BFA_KEEP_UNDO = 4,
BFA_IGNORE_ABORT = 8,
};
extern char *msg_loclist ;
extern char *msg_qflist ;
# 86 "/home/ubuntu/neovim/src/nvim/buffer.h"
static inline varnumber_T buf_get_changedtick(const buf_T *const buf)
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_PURE
FUNC_ATTR_WARN_UNUSED_RESULT
{
return buf->changedtick_di.di_tv.vval.v_number;
}
static inline uint32_t buf_meta_total(const buf_T *b, MetaIndex m)
{
return b->b_marktree->meta_root[m];
}
# 18 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/change.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/change.h" 2
enum {
OPENLINE_DELSPACES = 0x01,
OPENLINE_DO_COM = 0x02,
OPENLINE_KEEPTRAIL = 0x04,
OPENLINE_MARKFIX = 0x08,
OPENLINE_COM_LIST = 0x10,
OPENLINE_FORMAT = 0x20,
};
# 20 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/channel.h" 1
# 1 "/home/ubuntu/neovim/src/nvim/channel_defs.h" 1
# 1 "/home/ubuntu/neovim/src/nvim/event/defs.h" 1
# 1 "/usr/include/assert.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/event/defs.h" 2
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stdarg.h" 1 3 4
# 5 "/home/ubuntu/neovim/src/nvim/event/defs.h" 2
enum { EVENT_HANDLER_MAX_ARGC = 10, };
typedef void (*argv_callback)(void **argv);
typedef struct {
argv_callback handler;
void *argv[EVENT_HANDLER_MAX_ARGC];
} Event;
typedef struct multiqueue MultiQueue;
typedef void (*PutCallback)(MultiQueue *multiq, void *data);
typedef struct signal_watcher SignalWatcher;
typedef void (*signal_cb)(SignalWatcher *watcher, int signum, void *data);
typedef void (*signal_close_cb)(SignalWatcher *watcher, void *data);
struct signal_watcher {
uv_signal_t uv;
void *data;
signal_cb cb;
signal_close_cb close_cb;
MultiQueue *events;
};
typedef struct time_watcher TimeWatcher;
typedef void (*time_cb)(TimeWatcher *watcher, void *data);
struct time_watcher {
uv_timer_t uv;
void *data;
time_cb cb, close_cb;
MultiQueue *events;
# 44 "/home/ubuntu/neovim/src/nvim/event/defs.h" 3 4
_Bool
# 44 "/home/ubuntu/neovim/src/nvim/event/defs.h"
blockable;
};
typedef struct wbuffer WBuffer;
typedef void (*wbuffer_data_finalizer)(void *data);
struct wbuffer {
size_t size, refcount;
char *data;
wbuffer_data_finalizer cb;
};
typedef struct stream Stream;
typedef struct rstream RStream;
# 66 "/home/ubuntu/neovim/src/nvim/event/defs.h"
typedef size_t (*stream_read_cb)(RStream *stream, const char *read_data, size_t count, void *data,
# 67 "/home/ubuntu/neovim/src/nvim/event/defs.h" 3 4
_Bool
# 67 "/home/ubuntu/neovim/src/nvim/event/defs.h"
eof);
typedef void (*stream_write_cb)(Stream *stream, void *data, int status);
typedef void (*stream_close_cb)(Stream *stream, void *data);
struct stream {
# 80 "/home/ubuntu/neovim/src/nvim/event/defs.h" 3 4
_Bool
# 80 "/home/ubuntu/neovim/src/nvim/event/defs.h"
closed;
union {
uv_pipe_t pipe;
uv_tcp_t tcp;
uv_idle_t idle;
} uv;
uv_stream_t *uvstream;
uv_file fd;
void *cb_data;
stream_close_cb close_cb, internal_close_cb;
void *close_cb_data, *internal_data;
size_t pending_reqs;
MultiQueue *events;
stream_write_cb write_cb;
size_t curmem;
size_t maxmem;
};
struct rstream {
Stream s;
# 105 "/home/ubuntu/neovim/src/nvim/event/defs.h" 3 4
_Bool
# 105 "/home/ubuntu/neovim/src/nvim/event/defs.h"
did_eof;
# 106 "/home/ubuntu/neovim/src/nvim/event/defs.h" 3 4
_Bool
# 106 "/home/ubuntu/neovim/src/nvim/event/defs.h"
want_read;
# 107 "/home/ubuntu/neovim/src/nvim/event/defs.h" 3 4
_Bool
# 107 "/home/ubuntu/neovim/src/nvim/event/defs.h"
pending_read;
# 108 "/home/ubuntu/neovim/src/nvim/event/defs.h" 3 4
_Bool
# 108 "/home/ubuntu/neovim/src/nvim/event/defs.h"
paused_full;
char *buffer;
char *read_pos;
char *write_pos;
uv_buf_t uvbuf;
stream_read_cb read_cb;
size_t num_bytes;
int64_t fpos;
};
typedef struct socket_watcher SocketWatcher;
typedef void (*socket_cb)(SocketWatcher *watcher, int result, void *data);
typedef void (*socket_close_cb)(SocketWatcher *watcher, void *data);
struct socket_watcher {
char addr[256];
union {
struct {
uv_tcp_t handle;
struct addrinfo *addrinfo;
} tcp;
struct {
uv_pipe_t handle;
} pipe;
} uv;
uv_stream_t *stream;
void *data;
socket_cb cb;
socket_close_cb close_cb;
MultiQueue *events;
};
typedef enum {
kProcessTypeUv,
kProcessTypePty,
} ProcessType;
typedef struct process Process;
typedef void (*process_exit_cb)(Process *proc, int status, void *data);
typedef void (*internal_process_cb)(Process *proc);
struct process {
ProcessType type;
Loop *loop;
void *data;
int pid, status, refcount;
uint8_t exit_signal;
uint64_t stopped_time;
const char *cwd;
char **argv;
const char *exepath;
dict_T *env;
Stream in;
RStream out, err;
process_exit_cb cb;
internal_process_cb internal_exit_cb, internal_close_cb;
# 169 "/home/ubuntu/neovim/src/nvim/event/defs.h" 3 4
_Bool
# 169 "/home/ubuntu/neovim/src/nvim/event/defs.h"
closed, detach, overlapped, fwd_err;
MultiQueue *events;
};
# 7 "/home/ubuntu/neovim/src/nvim/channel_defs.h" 2
typedef enum {
kChannelStreamProc,
kChannelStreamSocket,
kChannelStreamStdio,
kChannelStreamStderr,
kChannelStreamInternal,
} ChannelStreamType;
typedef enum {
kChannelPartStdin,
kChannelPartStdout,
kChannelPartStderr,
kChannelPartRpc,
kChannelPartAll,
} ChannelPart;
typedef enum {
kChannelStdinPipe,
kChannelStdinNull,
} ChannelStdinMode;
typedef struct {
RStream in;
Stream out;
} StdioPair;
typedef struct {
# 38 "/home/ubuntu/neovim/src/nvim/channel_defs.h" 3 4
_Bool
# 38 "/home/ubuntu/neovim/src/nvim/channel_defs.h"
closed;
} StderrState;
typedef struct {
LuaRef cb;
# 43 "/home/ubuntu/neovim/src/nvim/channel_defs.h" 3 4
_Bool
# 43 "/home/ubuntu/neovim/src/nvim/channel_defs.h"
closed;
} InternalState;
typedef struct {
Callback cb;
dict_T *self;
garray_T buffer;
# 50 "/home/ubuntu/neovim/src/nvim/channel_defs.h" 3 4
_Bool
# 50 "/home/ubuntu/neovim/src/nvim/channel_defs.h"
eof;
# 51 "/home/ubuntu/neovim/src/nvim/channel_defs.h" 3 4
_Bool
# 51 "/home/ubuntu/neovim/src/nvim/channel_defs.h"
buffered;
# 52 "/home/ubuntu/neovim/src/nvim/channel_defs.h" 3 4
_Bool
# 52 "/home/ubuntu/neovim/src/nvim/channel_defs.h"
fwd_err;
const char *type;
} CallbackReader;
# 8 "/home/ubuntu/neovim/src/nvim/channel.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/event/libuv_process.h" 1
typedef struct {
Process process;
uv_process_t uv;
uv_process_options_t uvopts;
uv_stdio_container_t uvstdio[4];
} LibuvProcess;
# 11 "/home/ubuntu/neovim/src/nvim/channel.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/msgpack_rpc/channel_defs.h" 1
# 1 "/home/ubuntu/neovim/src/nvim/api/private/dispatch.h" 1
# 10 "/home/ubuntu/neovim/src/nvim/api/private/dispatch.h"
typedef Object (*ApiDispatchWrapper)(uint64_t channel_id, Array args, Arena *arena, Error *error);
struct MsgpackRpcRequestHandler {
const char *name;
ApiDispatchWrapper fn;
# 17 "/home/ubuntu/neovim/src/nvim/api/private/dispatch.h" 3 4
_Bool
# 17 "/home/ubuntu/neovim/src/nvim/api/private/dispatch.h"
fast;
# 21 "/home/ubuntu/neovim/src/nvim/api/private/dispatch.h" 3 4
_Bool
# 21 "/home/ubuntu/neovim/src/nvim/api/private/dispatch.h"
ret_alloc;
};
extern const MsgpackRpcRequestHandler method_handlers[];
# 7 "/home/ubuntu/neovim/src/nvim/msgpack_rpc/channel_defs.h" 2
typedef struct Channel Channel;
typedef struct Unpacker Unpacker;
typedef enum {
kClientTypeUnknown = -1,
kClientTypeRemote = 0,
kClientTypeMsgpackRpc = 5,
kClientTypeUi = 1,
kClientTypeEmbedder = 2,
kClientTypeHost = 3,
kClientTypePlugin = 4,
} ClientType;
typedef struct {
uint32_t request_id;
# 24 "/home/ubuntu/neovim/src/nvim/msgpack_rpc/channel_defs.h" 3 4
_Bool
# 24 "/home/ubuntu/neovim/src/nvim/msgpack_rpc/channel_defs.h"
returned, errored;
Object result;
ArenaMem result_mem;
} ChannelCallFrame;
typedef struct {
MessageType type;
Channel *channel;
MsgpackRpcRequestHandler handler;
Array args;
uint32_t request_id;
Arena used_mem;
} RequestEvent;
typedef struct {
# 39 "/home/ubuntu/neovim/src/nvim/msgpack_rpc/channel_defs.h" 3 4
_Bool
# 39 "/home/ubuntu/neovim/src/nvim/msgpack_rpc/channel_defs.h"
closed;
Unpacker *unpacker;
uint32_t next_request_id;
struct { size_t size; size_t capacity; ChannelCallFrame * *items; } call_stack;
Dictionary info;
ClientType client_type;
} RpcState;
# 14 "/home/ubuntu/neovim/src/nvim/channel.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/os/pty_process.h" 1
# 1 "/home/ubuntu/neovim/src/nvim/os/pty_process_unix.h" 1
# 1 "/usr/include/aarch64-linux-gnu/sys/ioctl.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/sys/ioctl.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/ioctls.h" 1 3 4
# 23 "/usr/include/aarch64-linux-gnu/bits/ioctls.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/ioctls.h" 1 3 4
# 1 "/usr/include/asm-generic/ioctls.h" 1 3 4
# 1 "/usr/include/linux/ioctl.h" 1 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/ioctl.h" 1 3 4
# 1 "/usr/include/asm-generic/ioctl.h" 1 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/ioctl.h" 2 3 4
# 6 "/usr/include/linux/ioctl.h" 2 3 4
# 6 "/usr/include/asm-generic/ioctls.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/ioctls.h" 2 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/ioctls.h" 2 3 4
# 27 "/usr/include/aarch64-linux-gnu/sys/ioctl.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/ioctl-types.h" 1 3 4
# 24 "/usr/include/aarch64-linux-gnu/bits/ioctl-types.h" 3 4
# 1 "/usr/include/aarch64-linux-gnu/asm/ioctls.h" 1 3 4
# 25 "/usr/include/aarch64-linux-gnu/bits/ioctl-types.h" 2 3 4
# 27 "/usr/include/aarch64-linux-gnu/bits/ioctl-types.h" 3 4
struct winsize
{
unsigned short int ws_row;
unsigned short int ws_col;
unsigned short int ws_xpixel;
unsigned short int ws_ypixel;
};
struct termio
{
unsigned short int c_iflag;
unsigned short int c_oflag;
unsigned short int c_cflag;
unsigned short int c_lflag;
unsigned char c_line;
unsigned char c_cc[8];
};
# 30 "/usr/include/aarch64-linux-gnu/sys/ioctl.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/sys/ttydefaults.h" 1 3 4
# 37 "/usr/include/aarch64-linux-gnu/sys/ioctl.h" 2 3 4
extern int ioctl (int __fd, unsigned long int __request, ...) __attribute__ ((__nothrow__ , __leaf__));
# 6 "/home/ubuntu/neovim/src/nvim/os/pty_process_unix.h" 2
# 9 "/home/ubuntu/neovim/src/nvim/os/pty_process_unix.h"
typedef struct {
Process process;
uint16_t width, height;
struct winsize winsize;
int tty_fd;
} PtyProcess;
# 7 "/home/ubuntu/neovim/src/nvim/os/pty_process.h" 2
# 15 "/home/ubuntu/neovim/src/nvim/channel.h" 2
struct Channel {
uint64_t id;
size_t refcount;
MultiQueue *events;
ChannelStreamType streamtype;
union {
Process proc;
LibuvProcess uv;
PtyProcess pty;
RStream socket;
StdioPair stdio;
StderrState err;
InternalState internal;
} stream;
# 33 "/home/ubuntu/neovim/src/nvim/channel.h" 3 4
_Bool
# 33 "/home/ubuntu/neovim/src/nvim/channel.h"
is_rpc;
RpcState rpc;
Terminal *term;
CallbackReader on_data;
CallbackReader on_stderr;
Callback on_exit;
int exit_status;
# 42 "/home/ubuntu/neovim/src/nvim/channel.h" 3 4
_Bool
# 42 "/home/ubuntu/neovim/src/nvim/channel.h"
callback_busy;
# 43 "/home/ubuntu/neovim/src/nvim/channel.h" 3 4
_Bool
# 43 "/home/ubuntu/neovim/src/nvim/channel.h"
callback_scheduled;
};
static inline
# 51 "/home/ubuntu/neovim/src/nvim/channel.h" 3 4
_Bool
# 51 "/home/ubuntu/neovim/src/nvim/channel.h"
callback_reader_set(CallbackReader reader)
{
return reader.cb.type != kCallbackNone || reader.self;
}
extern Map_uint64_tptr_t channels ;
extern Callback on_print ;
static inline Channel *find_channel(uint64_t id)
{
return (Channel *)map_get_uint64_tptr_t(&channels, id);
}
static inline Stream *channel_instream(Channel *chan)
FUNC_ATTR_NONNULL_ALL
{
switch (chan->streamtype) {
case kChannelStreamProc:
return &chan->stream.proc.in;
case kChannelStreamSocket:
return &chan->stream.socket.s;
case kChannelStreamStdio:
return &chan->stream.stdio.out;
case kChannelStreamInternal:
case kChannelStreamStderr:
abort();
}
abort();
}
static inline RStream *channel_outstream(Channel *chan)
FUNC_ATTR_NONNULL_ALL
{
switch (chan->streamtype) {
case kChannelStreamProc:
return &chan->stream.proc.out;
case kChannelStreamSocket:
return &chan->stream.socket;
case kChannelStreamStdio:
return &chan->stream.stdio.in;
case kChannelStreamInternal:
case kChannelStreamStderr:
abort();
}
abort();
}
# 21 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/charset.h" 1
# 1 "/home/ubuntu/neovim/src/nvim/option_vars.h" 1
# 207 "/home/ubuntu/neovim/src/nvim/option_vars.h"
enum {
SHM_RO = 'r',
SHM_MOD = 'm',
SHM_LINES = 'l',
SHM_WRI = 'w',
SHM_ABBREVIATIONS = 'a',
SHM_WRITE = 'W',
SHM_TRUNC = 't',
SHM_TRUNCALL = 'T',
SHM_OVER = 'o',
SHM_OVERALL = 'O',
SHM_SEARCH = 's',
SHM_ATTENTION = 'A',
SHM_INTRO = 'I',
SHM_COMPLETIONMENU = 'c',
SHM_COMPLETIONSCAN = 'C',
SHM_RECORDING = 'q',
SHM_FILEINFO = 'F',
SHM_SEARCHCOUNT = 'S',
};
# 272 "/home/ubuntu/neovim/src/nvim/option_vars.h"
enum {
STL_FILEPATH = 'f',
STL_FULLPATH = 'F',
STL_FILENAME = 't',
STL_COLUMN = 'c',
STL_VIRTCOL = 'v',
STL_VIRTCOL_ALT = 'V',
STL_LINE = 'l',
STL_NUMLINES = 'L',
STL_BUFNO = 'n',
STL_KEYMAP = 'k',
STL_OFFSET = 'o',
STL_OFFSET_X = 'O',
STL_BYTEVAL = 'b',
STL_BYTEVAL_X = 'B',
STL_ROFLAG = 'r',
STL_ROFLAG_ALT = 'R',
STL_HELPFLAG = 'h',
STL_HELPFLAG_ALT = 'H',
STL_FILETYPE = 'y',
STL_FILETYPE_ALT = 'Y',
STL_PREVIEWFLAG = 'w',
STL_PREVIEWFLAG_ALT = 'W',
STL_MODIFIED = 'm',
STL_MODIFIED_ALT = 'M',
STL_QUICKFIX = 'q',
STL_PERCENTAGE = 'p',
STL_ALTPERCENT = 'P',
STL_ARGLISTSTAT = 'a',
STL_PAGENUM = 'N',
STL_SHOWCMD = 'S',
STL_FOLDCOL = 'C',
STL_SIGNCOL = 's',
STL_VIM_EXPR = '{',
STL_SEPARATE = '=',
STL_TRUNCMARK = '<',
STL_USER_HL = '*',
STL_HIGHLIGHT = '#',
STL_TABPAGENR = 'T',
STL_TABCLOSENR = 'X',
STL_CLICK_FUNC = '@',
};
# 353 "/home/ubuntu/neovim/src/nvim/option_vars.h"
extern char *p_ambw;
extern int p_acd;
extern int p_ai;
extern int p_bin;
extern int p_bomb;
extern int p_bl;
extern int p_cin;
extern OptInt p_channel;
extern char *p_cink;
extern char *p_cinsd;
extern char *p_cinw;
extern char *p_cfu;
extern char *p_ofu;
extern char *p_tsrfu;
extern int p_ci;
extern int p_ar;
extern int p_aw;
extern int p_awa;
extern char *p_bs;
extern char *p_bg;
extern int p_bk;
extern char *p_bkc;
extern unsigned bkc_flags;
extern char *p_bdir;
extern char *p_bex;
extern char *p_bo;
extern char breakat_flags[256];
extern unsigned bo_flags;
# 408 "/home/ubuntu/neovim/src/nvim/option_vars.h"
extern char *p_bsk;
extern char *p_breakat;
extern char *p_bh;
extern char *p_bt;
extern char *p_cmp;
extern unsigned cmp_flags;
extern char *p_enc;
extern int p_deco;
extern char *p_ccv;
extern char *p_cino;
extern char *p_cedit;
extern char *p_cb;
extern unsigned cb_flags;
extern OptInt p_cwh;
extern OptInt p_ch;
extern char *p_cms;
extern char *p_cpt;
extern OptInt p_columns;
extern int p_confirm;
extern char *p_cot;
extern unsigned cot_flags;
# 449 "/home/ubuntu/neovim/src/nvim/option_vars.h"
extern OptInt p_pb;
extern OptInt p_ph;
extern OptInt p_pw;
extern char *p_com;
extern char *p_cpo;
extern char *p_debug;
extern char *p_def;
extern char *p_inc;
extern char *p_dip;
extern char *p_dex;
extern char *p_dict;
extern int p_dg;
extern char *p_dir;
extern char *p_dy;
extern unsigned dy_flags;
extern char *p_ead;
extern int p_emoji;
extern int p_ea;
extern char *p_ep;
extern int p_eb;
extern char *p_ef;
extern char *p_efm;
extern char *p_gefm;
extern char *p_gp;
extern int p_eof;
extern int p_eol;
extern char *p_ei;
extern int p_et;
extern int p_exrc;
extern char *p_fenc;
extern char *p_fencs;
extern char *p_ff;
extern char *p_ffs;
extern int p_fic;
extern char *p_ft;
extern char *p_fcs;
extern int p_fixeol;
extern char *p_fcl;
extern OptInt p_fdls;
extern char *p_fdo;
extern unsigned fdo_flags;
# 506 "/home/ubuntu/neovim/src/nvim/option_vars.h"
extern char *p_fex;
extern char *p_flp;
extern char *p_fo;
extern char *p_fp;
extern int p_fs;
extern int p_gd;
extern char *p_guicursor;
extern char *p_guifont;
extern char *p_guifontwide;
extern char *p_hf;
extern OptInt p_hh;
extern char *p_hlg;
extern int p_hid;
extern char *p_hl;
extern int p_hls;
extern OptInt p_hi;
extern int p_arshape;
extern int p_icon;
extern char *p_iconstring;
extern int p_ic;
extern OptInt p_iminsert;
extern OptInt p_imsearch;
extern int p_inf;
extern char *p_inex;
extern int p_is;
extern char *p_inde;
extern char *p_indk;
extern char *p_icm;
extern char *p_isf;
extern char *p_isi;
extern char *p_isk;
extern char *p_isp;
extern int p_js;
extern char *p_jop;
extern unsigned jop_flags;
extern char *p_keymap;
extern char *p_kp;
extern char *p_km;
extern char *p_langmap;
extern int p_lnr;
extern int p_lrm;
extern char *p_lm;
extern OptInt p_lines;
extern OptInt p_linespace;
extern int p_lisp;
extern char *p_lop;
extern char *p_lispwords;
extern OptInt p_ls;
extern OptInt p_stal;
extern char *p_lcs;
extern int p_lz;
extern int p_lpl;
extern int p_magic;
extern char *p_menc;
extern char *p_mef;
extern char *p_mp;
extern char *p_mps;
extern OptInt p_mat;
extern OptInt p_mfd;
extern OptInt p_mmd;
extern OptInt p_mmp;
extern OptInt p_mis;
extern char *p_msm;
extern int p_ml;
extern int p_mle;
extern OptInt p_mls;
extern int p_ma;
extern int p_mod;
extern char *p_mouse;
extern char *p_mousem;
extern int p_mousemev;
extern int p_mousef;
extern int p_mh;
extern char *p_mousescroll;
extern OptInt p_mousescroll_vert ;
extern OptInt p_mousescroll_hor ;
extern OptInt p_mouset;
extern int p_more;
extern char *p_nf;
extern char *p_opfunc;
extern char *p_para;
extern int p_paste;
extern char *p_pex;
extern char *p_pm;
extern char *p_path;
extern char *p_cdpath;
extern int p_pi;
extern OptInt p_pyx;
extern char *p_qe;
extern int p_ro;
extern char *p_rdb;
extern unsigned rdb_flags;
# 610 "/home/ubuntu/neovim/src/nvim/option_vars.h"
extern OptInt p_rdt;
extern OptInt p_re;
extern OptInt p_report;
extern OptInt p_pvh;
extern int p_ari;
extern int p_ri;
extern int p_ru;
extern char *p_ruf;
extern char *p_pp;
extern char *p_qftf;
extern char *p_rtp;
extern OptInt p_scbk;
extern OptInt p_sj;
extern OptInt p_so;
extern char *p_sbo;
extern char *p_sections;
extern int p_secure;
extern char *p_sel;
extern char *p_slm;
extern char *p_ssop;
extern unsigned ssop_flags;
# 651 "/home/ubuntu/neovim/src/nvim/option_vars.h"
extern char *p_sh;
extern char *p_shcf;
extern char *p_sp;
extern char *p_shq;
extern char *p_sxq;
extern char *p_sxe;
extern char *p_srr;
extern int p_stmp;
extern char *p_stl;
extern char *p_wbr;
extern int p_sr;
extern OptInt p_sw;
extern char *p_shm;
extern char *p_sbr;
extern int p_sc;
extern char *p_sloc;
extern int p_sft;
extern int p_sm;
extern int p_smd;
extern OptInt p_ss;
extern OptInt p_siso;
extern int p_scs;
extern int p_si;
extern int p_sta;
extern OptInt p_sts;
extern int p_sb;
extern char *p_sua;
extern int p_swf;
extern OptInt p_smc;
extern OptInt p_tpm;
extern char *p_tal;
extern char *p_tpf;
extern unsigned tpf_flags;
extern char *p_tfu;
extern char *p_spc;
extern char *p_spf;
extern char *p_spl;
extern char *p_spo;
extern unsigned spo_flags;
extern char *p_sps;
extern int p_spr;
extern int p_sol;
extern char *p_su;
extern char *p_swb;
extern unsigned swb_flags;
extern char *p_spk;
extern char *p_syn;
extern char *p_tcl;
extern unsigned tcl_flags;
extern OptInt p_ts;
extern int p_tbs;
extern char *p_tc;
extern unsigned tc_flags;
extern OptInt p_tl;
extern int p_tr;
extern char *p_tags;
extern int p_tgst;
extern int p_tbidi;
extern OptInt p_tw;
extern int p_to;
extern int p_timeout;
extern OptInt p_tm;
extern int p_title;
extern OptInt p_titlelen;
extern char *p_titleold;
extern char *p_titlestring;
extern char *p_tsr;
extern int p_tgc;
extern int p_ttimeout;
extern OptInt p_ttm;
extern char *p_udir;
extern int p_udf;
extern OptInt p_ul;
extern OptInt p_ur;
extern OptInt p_uc;
extern OptInt p_ut;
extern char *p_shada;
extern char *p_shadafile;
extern int p_termsync;
extern char *p_vsts;
extern char *p_vts;
extern char *p_vdir;
extern char *p_vop;
extern unsigned vop_flags;
extern int p_vb;
extern char *p_ve;
extern unsigned ve_flags;
extern OptInt p_verbose;
extern char *p_vfile;
extern int p_warn;
extern char *p_wop;
extern unsigned wop_flags;
extern OptInt p_window;
extern char *p_wak;
extern char *p_wig;
extern char *p_ww;
extern OptInt p_wc;
extern OptInt p_wcm;
extern int p_wic;
extern char *p_wim;
extern int p_wmnu;
extern OptInt p_wh;
extern OptInt p_wmh;
extern OptInt p_wmw;
extern OptInt p_wiw;
extern OptInt p_wm;
extern int p_ws;
extern int p_write;
extern int p_wa;
extern int p_wb;
extern OptInt p_wd;
extern int p_cdh;
# 7 "/home/ubuntu/neovim/src/nvim/charset.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/strings.h" 1
# 13 "/home/ubuntu/neovim/src/nvim/strings.h"
typedef struct { size_t size; size_t capacity; char *items; } StringBuilder;
typedef struct {
int key;
char *value;
size_t length;
} keyvalue_T;
# 41 "/home/ubuntu/neovim/src/nvim/strings.h"
static inline char *strappend(char *const dst, const char *const src)
FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_NONNULL_ALL
FUNC_ATTR_NONNULL_RET FUNC_ATTR_WARN_UNUSED_RESULT
{
const size_t src_len = strlen(src);
return (char *)memmove(dst, src, src_len) + src_len;
}
# 8 "/home/ubuntu/neovim/src/nvim/charset.h" 2
typedef enum {
STR2NR_DEC = 0,
STR2NR_BIN = (1 << 0),
STR2NR_OCT = (1 << 1),
STR2NR_HEX = (1 << 2),
STR2NR_OOCT = (1 << 3),
STR2NR_FORCE = (1 << 7),
STR2NR_ALL = STR2NR_BIN | STR2NR_OCT | STR2NR_HEX | STR2NR_OOCT,
STR2NR_NO_OCT = STR2NR_BIN | STR2NR_HEX | STR2NR_OOCT,
STR2NR_QUOTE = (1 << 4),
} ChStr2NrFlags;
# 38 "/home/ubuntu/neovim/src/nvim/charset.h"
static inline
# 38 "/home/ubuntu/neovim/src/nvim/charset.h" 3 4
_Bool
# 38 "/home/ubuntu/neovim/src/nvim/charset.h"
vim_isbreak(int c)
FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
return breakat_flags[(uint8_t)c];
}
# 22 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/cursor.h" 1
# 24 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/edit.h" 1
enum {
KEY_OPEN_FORW = 0x101,
KEY_OPEN_BACK = 0x102,
KEY_COMPLETE = 0x103,
};
enum {
INDENT_SET = 1,
INDENT_INC = 2,
INDENT_DEC = 3,
};
enum {
BL_WHITE = 1,
BL_SOL = 2,
BL_FIX = 4,
};
enum {
INSCHAR_FORMAT = 1,
INSCHAR_DO_COM = 2,
INSCHAR_CTRLV = 4,
INSCHAR_NO_FEX = 8,
INSCHAR_COM_LIST = 16,
};
# 25 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/errors.h" 1
# 10 "/home/ubuntu/neovim/src/nvim/errors.h"
extern const char e_abort[] ;
extern const char e_afterinit[] ;
extern const char e_api_spawn_failed[] ;
extern const char e_argreq[] ;
extern const char e_backslash[] ;
extern const char e_cmdwin[] ;
extern const char e_curdir[] ;
extern const char e_invalid_buffer_name_str[] ;
extern const char e_command_too_recursive[] ;
extern const char e_buffer_is_not_loaded[] ;
extern const char e_endif[] ;
extern const char e_endtry[] ;
extern const char e_endwhile[] ;
extern const char e_endfor[] ;
extern const char e_while[] ;
extern const char e_for[] ;
extern const char e_exists[] ;
extern const char e_failed[] ;
extern const char e_internal[] ;
extern const char e_intern2[] ;
extern const char e_interr[] ;
extern const char e_invarg[] ;
extern const char e_invarg2[] ;
extern const char e_invargval[] ;
extern const char e_invargNval[] ;
extern const char e_duparg2[] ;
extern const char e_invexpr2[] ;
extern const char e_invrange[] ;
extern const char e_invcmd[] ;
extern const char e_isadir2[] ;
extern const char e_no_spell[] ;
extern const char e_invchan[] ;
extern const char e_invchanjob[] ;
extern const char e_jobtblfull[] ;
extern const char e_jobspawn[] ;
extern const char e_channotpty[] ;
extern const char e_stdiochan2[] ;
extern const char e_invstream[] ;
extern const char e_invstreamrpc[] ;
extern const char e_streamkey[] ;
extern const char e_libcall[] ;
extern const char e_fsync[] ;
extern const char e_mkdir[] ;
extern const char e_markinval[] ;
extern const char e_marknotset[] ;
extern const char e_modifiable[] ;
extern const char e_nesting[] ;
extern const char e_noalt[] ;
extern const char e_noabbr[] ;
extern const char e_nobang[] ;
extern const char e_nogroup[] ;
extern const char e_noinstext[] ;
extern const char e_nolastcmd[] ;
extern const char e_nomap[] ;
extern const char e_nomatch[] ;
extern const char e_nomatch2[] ;
extern const char e_noname[] ;
extern const char e_nopresub[] ;
extern const char e_noprev[] ;
extern const char e_noprevre[] ;
extern const char e_norange[] ;
extern const char e_noroom[] ;
extern const char e_notmp[] ;
extern const char e_notopen[] ;
extern const char e_notopen_2[] ;
extern const char e_notread[] ;
extern const char e_null[] ;
extern const char e_number_exp[] ;
extern const char e_openerrf[] ;
extern const char e_outofmem[] ;
extern const char e_patnotf[] ;
extern const char e_patnotf2[] ;
extern const char e_positive[] ;
extern const char e_prev_dir[] ;
extern const char e_no_errors[] ;
extern const char e_loclist[] ;
extern const char e_re_damg[] ;
extern const char e_re_corr[] ;
extern const char e_readonly[] ;
extern const char e_letwrong[] ;
extern const char e_illvar[] ;
extern const char e_cannot_mod[] ;
extern const char e_readonlyvar[] ;
extern const char e_stringreq[] ;
extern const char e_dictreq[] ;
extern const char e_blobidx[] ;
extern const char e_invalblob[] ;
extern const char e_toomanyarg[] ;
extern const char e_toofewarg[] ;
extern const char e_dictkey[] ;
extern const char e_dictkey_len[] ;
extern const char e_listreq[] ;
extern const char e_listblobreq[] ;
extern const char e_listdictarg[] ;
extern const char e_listdictblobarg[] ;
extern const char e_readerrf[] ;
extern const char e_sandbox[] ;
extern const char e_secure[] ;
extern const char e_textlock[] ;
extern const char e_screenmode[] ;
extern const char e_scroll[] ;
extern const char e_shellempty[] ;
extern const char e_signdata[] ;
extern const char e_swapclose[] ;
extern const char e_toocompl[] ;
extern const char e_longname[] ;
extern const char e_toomsbra[] ;
extern const char e_toomany[] ;
extern const char e_trailing[] ;
extern const char e_trailing_arg[] ;
extern const char e_umark[] ;
extern const char e_wildexpand[] ;
extern const char e_winheight[] ;
extern const char e_winwidth[] ;
extern const char e_write[] ;
extern const char e_zerocount[] ;
extern const char e_usingsid[] ;
extern const char e_missingparen[] ;
extern const char e_empty_buffer[] ;
extern const char e_nobufnr[] ;
extern const char e_str_not_inside_function[] ;
extern const char e_invalpat[] ;
extern const char e_bufloaded[] ;
extern const char e_notset[] ;
extern const char e_invalidreg[] ;
extern const char e_dirnotf[] ;
extern const char e_au_recursive[] ;
extern const char e_menu_only_exists_in_another_mode[]
;
extern const char e_autocmd_close[] ;
extern const char e_listarg[] ;
extern const char e_unsupportedoption[] ;
extern const char e_fnametoolong[] ;
extern const char e_using_float_as_string[] ;
extern const char e_cannot_edit_other_buf[] ;
extern const char e_using_number_as_bool_nr[] ;
extern const char e_not_callable_type_str[] ;
extern const char e_auabort[] ;
extern const char e_api_error[] ;
extern const char e_luv_api_disabled[] ;
extern const char e_floatonly[] ;
extern const char e_floatexchange[] ;
extern const char e_cannot_define_autocommands_for_all_events[] ;
extern const char e_resulting_text_too_long[] ;
extern const char e_line_number_out_of_range[] ;
extern const char e_highlight_group_name_invalid_char[] ;
extern const char e_highlight_group_name_too_long[] ;
extern const char e_invalid_column_number_nr[] ;
extern const char e_invalid_line_number_nr[] ;
extern const char e_stray_closing_curly_str[]
;
extern const char e_missing_close_curly_str[]
;
extern const char e_val_too_large[] ;
extern const char e_undobang_cannot_redo_or_move_branch[]
;
extern const char e_winfixbuf_cannot_go_to_buffer[]
;
extern const char e_trustfile[] ;
extern const char e_unknown_option2[] ;
extern const char top_bot_msg[] ;
extern const char bot_top_msg[] ;
extern const char line_msg[] ;
# 26 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/eval.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 5 "/home/ubuntu/neovim/src/nvim/eval.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/eval_defs.h" 1
typedef enum {
kMPNil,
kMPBoolean,
kMPInteger,
kMPFloat,
kMPString,
kMPArray,
kMPMap,
kMPExt,
} MessagePackType;
typedef struct {
int eval_flags;
LineGetter eval_getline;
void *eval_cookie;
char *eval_tofree;
} evalarg_T;
# 11 "/home/ubuntu/neovim/src/nvim/eval.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/mbyte_defs.h" 1
# 1 "/home/ubuntu/neovim/src/nvim/iconv_defs.h" 1
# 1 "/usr/include/iconv.h" 1 3 4
# 23 "/usr/include/iconv.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 24 "/usr/include/iconv.h" 2 3 4
# 29 "/usr/include/iconv.h" 3 4
typedef void *iconv_t;
extern iconv_t iconv_open (const char *__tocode, const char *__fromcode);
extern size_t iconv (iconv_t __cd, char **__restrict __inbuf,
size_t *__restrict __inbytesleft,
char **__restrict __outbuf,
size_t *__restrict __outbytesleft);
extern int iconv_close (iconv_t __cd);
# 5 "/home/ubuntu/neovim/src/nvim/iconv_defs.h" 2
# 7 "/home/ubuntu/neovim/src/nvim/mbyte_defs.h" 2
# 8 "/home/ubuntu/neovim/src/nvim/mbyte_defs.h"
enum {
MB_MAXBYTES = 21,
MB_MAXCHAR = 6,
};
enum {
ENC_8BIT = 0x01,
ENC_DBCS = 0x02,
ENC_UNICODE = 0x04,
ENC_ENDIAN_B = 0x10,
ENC_ENDIAN_L = 0x20,
ENC_2BYTE = 0x40,
ENC_4BYTE = 0x80,
ENC_2WORD = 0x100,
ENC_LATIN1 = 0x200,
ENC_LATIN9 = 0x400,
ENC_MACROMAN = 0x800,
};
typedef enum {
CONV_NONE = 0,
CONV_TO_UTF8 = 1,
CONV_9_TO_UTF8 = 2,
CONV_TO_LATIN1 = 3,
CONV_TO_LATIN9 = 4,
CONV_ICONV = 5,
} ConvFlags;
# 52 "/home/ubuntu/neovim/src/nvim/mbyte_defs.h"
typedef struct {
int vc_type;
int vc_factor;
iconv_t vc_fd;
# 56 "/home/ubuntu/neovim/src/nvim/mbyte_defs.h" 3 4
_Bool
# 56 "/home/ubuntu/neovim/src/nvim/mbyte_defs.h"
vc_fail;
} vimconv_T;
typedef struct {
int32_t value;
int len;
} CharInfo;
typedef struct {
char *ptr;
CharInfo chr;
} StrCharInfo;
typedef struct {
int8_t begin_off;
int8_t end_off;
} CharBoundsOff;
# 17 "/home/ubuntu/neovim/src/nvim/eval.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/os/fileio_defs.h" 1
typedef struct {
int fd;
char *buffer;
char *read_pos;
char *write_pos;
# 12 "/home/ubuntu/neovim/src/nvim/os/fileio_defs.h" 3 4
_Bool
# 12 "/home/ubuntu/neovim/src/nvim/os/fileio_defs.h"
wr;
# 13 "/home/ubuntu/neovim/src/nvim/os/fileio_defs.h" 3 4
_Bool
# 13 "/home/ubuntu/neovim/src/nvim/os/fileio_defs.h"
eof;
# 14 "/home/ubuntu/neovim/src/nvim/os/fileio_defs.h" 3 4
_Bool
# 14 "/home/ubuntu/neovim/src/nvim/os/fileio_defs.h"
non_blocking;
uint64_t bytes_read;
} FileDescriptor;
# 28 "/home/ubuntu/neovim/src/nvim/os/fileio_defs.h"
static inline
# 28 "/home/ubuntu/neovim/src/nvim/os/fileio_defs.h" 3 4
_Bool
# 28 "/home/ubuntu/neovim/src/nvim/os/fileio_defs.h"
file_eof(const FileDescriptor *const fp)
FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL
{
return fp->eof && fp->read_pos == fp->write_pos;
}
static inline int file_fd(const FileDescriptor *const fp)
FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL
{
return fp->fd;
}
# 20 "/home/ubuntu/neovim/src/nvim/eval.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/os/stdpaths_defs.h" 1
typedef enum {
kXDGNone = -1,
kXDGConfigHome,
kXDGDataHome,
kXDGCacheHome,
kXDGStateHome,
kXDGRuntimeDir,
kXDGConfigDirs,
kXDGDataDirs,
} XDGVarType;
# 21 "/home/ubuntu/neovim/src/nvim/eval.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/vim_defs.h" 1
enum {
NUMBUFLEN = 65,
};
typedef enum {
kDirectionNotSet = 0,
FORWARD = 1,
BACKWARD = -1,
FORWARD_FILE = 3,
BACKWARD_FILE = -3,
} Direction;
typedef enum {
kUnknown,
kWorking,
kBroken,
} WorkingStatus;
typedef enum {
kCdScopeInvalid = -1,
kCdScopeWindow,
kCdScopeTabpage,
kCdScopeGlobal,
} CdScope;
typedef enum {
kCdCauseOther = -1,
kCdCauseManual,
kCdCauseWindow,
kCdCauseAuto,
} CdCause;
# 23 "/home/ubuntu/neovim/src/nvim/eval.h" 2
# 52 "/home/ubuntu/neovim/src/nvim/eval.h"
typedef struct {
const char *ll_name;
size_t ll_name_len;
char *ll_exp_name;
typval_T *ll_tv;
listitem_T *ll_li;
list_T *ll_list;
# 60 "/home/ubuntu/neovim/src/nvim/eval.h" 3 4
_Bool
# 60 "/home/ubuntu/neovim/src/nvim/eval.h"
ll_range;
# 61 "/home/ubuntu/neovim/src/nvim/eval.h" 3 4
_Bool
# 61 "/home/ubuntu/neovim/src/nvim/eval.h"
ll_empty2;
int ll_n1;
int ll_n2;
dict_T *ll_dict;
dictitem_T *ll_di;
char *ll_newkey;
blob_T *ll_blob;
} lval_T;
typedef enum {
VAR_FLAVOUR_DEFAULT = 1,
VAR_FLAVOUR_SESSION = 2,
VAR_FLAVOUR_SHADA = 4,
} var_flavour_T;
typedef enum {
VV_COUNT,
VV_COUNT1,
VV_PREVCOUNT,
VV_ERRMSG,
VV_WARNINGMSG,
VV_STATUSMSG,
VV_SHELL_ERROR,
VV_THIS_SESSION,
VV_VERSION,
VV_LNUM,
VV_TERMREQUEST,
VV_TERMRESPONSE,
VV_FNAME,
VV_LANG,
VV_LC_TIME,
VV_CTYPE,
VV_CC_FROM,
VV_CC_TO,
VV_FNAME_IN,
VV_FNAME_OUT,
VV_FNAME_NEW,
VV_FNAME_DIFF,
VV_CMDARG,
VV_FOLDSTART,
VV_FOLDEND,
VV_FOLDDASHES,
VV_FOLDLEVEL,
VV_PROGNAME,
VV_SEND_SERVER,
VV_DYING,
VV_EXCEPTION,
VV_THROWPOINT,
VV_REG,
VV_CMDBANG,
VV_INSERTMODE,
VV_VAL,
VV_KEY,
VV_PROFILING,
VV_FCS_REASON,
VV_FCS_CHOICE,
VV_BEVAL_BUFNR,
VV_BEVAL_WINNR,
VV_BEVAL_WINID,
VV_BEVAL_LNUM,
VV_BEVAL_COL,
VV_BEVAL_TEXT,
VV_SCROLLSTART,
VV_SWAPNAME,
VV_SWAPCHOICE,
VV_SWAPCOMMAND,
VV_CHAR,
VV_MOUSE_WIN,
VV_MOUSE_WINID,
VV_MOUSE_LNUM,
VV_MOUSE_COL,
VV_OP,
VV_SEARCHFORWARD,
VV_HLSEARCH,
VV_OLDFILES,
VV_WINDOWID,
VV_PROGPATH,
VV_COMPLETED_ITEM,
VV_OPTION_NEW,
VV_OPTION_OLD,
VV_OPTION_OLDLOCAL,
VV_OPTION_OLDGLOBAL,
VV_OPTION_COMMAND,
VV_OPTION_TYPE,
VV_ERRORS,
VV_FALSE,
VV_TRUE,
VV_NULL,
VV_NUMBERMAX,
VV_NUMBERMIN,
VV_NUMBERSIZE,
VV_VIM_DID_ENTER,
VV_TESTING,
VV_TYPE_NUMBER,
VV_TYPE_STRING,
VV_TYPE_FUNC,
VV_TYPE_LIST,
VV_TYPE_DICT,
VV_TYPE_FLOAT,
VV_TYPE_BOOL,
VV_TYPE_BLOB,
VV_EVENT,
VV_ECHOSPACE,
VV_ARGV,
VV_COLLATE,
VV_EXITING,
VV_MAXCOL,
VV_STDERR,
VV_MSGPACK_TYPES,
VV__NULL_STRING,
VV__NULL_LIST,
VV__NULL_DICT,
VV__NULL_BLOB,
VV_LUA,
VV_RELNUM,
VV_VIRTNUM,
} VimVarIndex;
extern const list_T *eval_msgpack_type_lists[(kMPExt + 1)];
typedef struct {
# 187 "/home/ubuntu/neovim/src/nvim/eval.h" 3 4
_Bool
# 187 "/home/ubuntu/neovim/src/nvim/eval.h"
sve_did_save;
hashtab_T sve_hashtab;
} save_v_event_T;
typedef enum {
TFN_INT = 1,
TFN_QUIET = 2,
TFN_NO_AUTOLOAD = 4,
TFN_NO_DEREF = 8,
TFN_READ_ONLY = 16,
} TransFunctionNameFlags;
typedef enum {
GLV_QUIET = TFN_QUIET,
GLV_NO_AUTOLOAD = TFN_NO_AUTOLOAD,
GLV_READ_ONLY = TFN_READ_ONLY,
} GetLvalFlags;
typedef struct {
TimeWatcher tw;
int timer_id;
int repeat_count;
int refcount;
int emsg_count;
int64_t timeout;
# 220 "/home/ubuntu/neovim/src/nvim/eval.h" 3 4
_Bool
# 220 "/home/ubuntu/neovim/src/nvim/eval.h"
stopped;
# 221 "/home/ubuntu/neovim/src/nvim/eval.h" 3 4
_Bool
# 221 "/home/ubuntu/neovim/src/nvim/eval.h"
paused;
Callback callback;
} timer_T;
typedef enum {
EXPR_UNKNOWN = 0,
EXPR_EQUAL,
EXPR_NEQUAL,
EXPR_GREATER,
EXPR_GEQUAL,
EXPR_SMALLER,
EXPR_SEQUAL,
EXPR_MATCH,
EXPR_NOMATCH,
EXPR_IS,
EXPR_ISNOT,
} exprtype_T;
extern
# 241 "/home/ubuntu/neovim/src/nvim/eval.h" 3 4
_Bool
# 241 "/home/ubuntu/neovim/src/nvim/eval.h"
*eval_lavars_used;
enum {
EVAL_EVALUATE = 1,
};
extern evalarg_T EVALARG_EVALUATE ;
# 27 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/eval/encode.h" 1
# 1 "/home/ubuntu/neovim/src/nvim/msgpack_rpc/packer_defs.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/msgpack_rpc/packer_defs.h" 2
typedef struct packer_buffer_t PackerBuffer;
typedef void (*PackerBufferFlush)(PackerBuffer *self);
struct packer_buffer_t {
char *startptr;
char *ptr;
char *endptr;
void *anydata;
int64_t anyint;
PackerBufferFlush packer_flush;
};
# 8 "/home/ubuntu/neovim/src/nvim/eval/encode.h" 2
# 16 "/home/ubuntu/neovim/src/nvim/eval/encode.h"
int encode_vim_to_msgpack(PackerBuffer *packer, typval_T *tv, const char *objname);
# 25 "/home/ubuntu/neovim/src/nvim/eval/encode.h"
int encode_vim_to_echo(garray_T *packer, typval_T *tv, const char *objname);
typedef struct {
const list_T *const list;
const listitem_T *li;
size_t offset;
size_t li_length;
} ListReaderState;
extern const char *const encode_bool_var_names[];
extern const char *const encode_special_var_names[];
# 28 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/eval/executor.h" 1
extern char *e_list_index_out_of_range_nr;
# 29 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/eval/gc.h" 1
extern dict_T *gc_first_dict;
extern list_T *gc_first_list;
# 30 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 1
# 1 "/usr/include/assert.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 2
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 6 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/hashtab.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/hashtab.h" 2
extern char hash_removed;
# 12 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/message.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 6 "/home/ubuntu/neovim/src/nvim/message.h" 2
enum {
VIM_GENERIC = 0,
VIM_ERROR = 1,
VIM_WARNING = 2,
VIM_INFO = 3,
VIM_QUESTION = 4,
VIM_LAST_TYPE = 4,
};
enum {
VIM_YES = 2,
VIM_NO = 3,
VIM_CANCEL = 4,
VIM_ALL = 5,
VIM_DISCARDALL = 6,
};
enum { MSG_HIST = 0x1000, };
extern MessageHistoryEntry *first_msg_hist;
extern MessageHistoryEntry *last_msg_hist;
extern
# 38 "/home/ubuntu/neovim/src/nvim/message.h" 3 4
_Bool
# 38 "/home/ubuntu/neovim/src/nvim/message.h"
msg_ext_need_clear ;
extern ScreenGrid msg_grid ;
extern int msg_grid_pos ;
extern ScreenGrid msg_grid_adj ;
extern int msg_scrolled_at_flush ;
extern int msg_grid_scroll_discount ;
extern int msg_listdo_overwrite ;
# 16 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 2
# 34 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
static inline void tv_list_ref(list_T *const l)
FUNC_ATTR_ALWAYS_INLINE
{
if (l ==
# 37 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
((void *)0)
# 37 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
) {
return;
}
l->lv_refcount++;
}
static inline void tv_list_set_ret(typval_T *const tv, list_T *const l)
FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_NONNULL_ARG(1)
{
tv->v_type = VAR_LIST;
tv->vval.v_list = l;
tv_list_ref(l);
}
static inline VarLockStatus tv_list_locked(const list_T *const l)
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
{
if (l ==
# 63 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
((void *)0)
# 63 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
) {
return VAR_FIXED;
}
return l->lv_lock;
}
static inline void tv_list_set_lock(list_T *const l, const VarLockStatus lock)
{
if (l ==
# 77 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
((void *)0)
# 77 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
) {
# 78 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
((void) sizeof ((
# 78 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
lock == VAR_FIXED
# 78 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
) ? 1 : 0), __extension__ ({ if (
# 78 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
lock == VAR_FIXED
# 78 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
) ; else __assert_fail (
# 78 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
"lock == VAR_FIXED"
# 78 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
, "/home/ubuntu/neovim/src/nvim/eval/typval.h", 78, __extension__ __PRETTY_FUNCTION__); }))
# 78 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
;
return;
}
l->lv_lock = lock;
}
static inline void tv_list_set_copyid(list_T *const l, const int copyid)
FUNC_ATTR_NONNULL_ALL
{
l->lv_copyID = copyid;
}
static inline int tv_list_len(const list_T *const l)
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
{
if (l ==
# 102 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
((void *)0)
# 102 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
) {
return 0;
}
return l->lv_len;
}
static inline int tv_list_copyid(const list_T *const l)
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL
{
return l->lv_copyID;
}
# 126 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
static inline list_T *tv_list_latest_copy(const list_T *const l)
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL
{
return l->lv_copylist;
}
static inline int tv_list_uidx(const list_T *const l, int n)
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
{
if (n < 0) {
n += tv_list_len(l);
}
if (n < 0 || n >= tv_list_len(l)) {
return -1;
}
return n;
}
# 160 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
static inline
# 160 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
_Bool
# 160 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
tv_list_has_watchers(const list_T *const l)
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
{
return l && l->lv_watch;
}
static inline listitem_T *tv_list_first(const list_T *const l)
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
{
if (l ==
# 174 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
((void *)0)
# 174 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
) {
return
# 175 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
((void *)0)
# 175 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
;
}
return l->lv_first;
}
static inline listitem_T *tv_list_last(const list_T *const l)
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
{
if (l ==
# 188 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
((void *)0)
# 188 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
) {
return
# 189 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
((void *)0)
# 189 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
;
}
return l->lv_last;
}
static inline void tv_dict_set_ret(typval_T *const tv, dict_T *const d)
FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_NONNULL_ARG(1)
{
tv->v_type = VAR_DICT;
tv->vval.v_dict = d;
if (d !=
# 203 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
((void *)0)
# 203 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
) {
d->dv_refcount++;
}
}
static inline long tv_dict_len(const dict_T *const d)
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
{
if (d ==
# 214 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
((void *)0)
# 214 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
) {
return 0;
}
return (long)d->dv_hashtab.ht_used;
}
static inline
# 225 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
_Bool
# 225 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
tv_dict_is_watched(const dict_T *const d)
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
{
return d && !QUEUE_EMPTY(&d->watchers);
}
static inline void tv_blob_set_ret(typval_T *const tv, blob_T *const b)
FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_NONNULL_ARG(1)
{
tv->v_type = VAR_BLOB;
tv->vval.v_blob = b;
if (b !=
# 242 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
((void *)0)
# 242 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
) {
b->bv_refcount++;
}
}
static inline int tv_blob_len(const blob_T *const b)
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
{
if (b ==
# 253 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
((void *)0)
# 253 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
) {
return 0;
}
return b->bv_ga.ga_len;
}
static inline uint8_t tv_blob_get(const blob_T *const b, int idx)
FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_NONNULL_ALL FUNC_ATTR_WARN_UNUSED_RESULT
{
return ((uint8_t *)b->bv_ga.ga_data)[idx];
}
static inline void tv_blob_set(blob_T *const blob, int idx, uint8_t c)
FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_NONNULL_ALL
{
((uint8_t *)blob->bv_ga.ga_data)[idx] = c;
}
static inline void tv_init(typval_T *const tv)
{
if (tv !=
# 289 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
((void *)0)
# 289 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
) {
memset(tv, 0, sizeof(*tv));
}
}
extern const char *const tv_empty_string;
extern
# 301 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
_Bool
# 301 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
tv_in_free_unref_items;
# 395 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
static inline
# 395 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
_Bool
# 395 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
tv_get_float_chk(const typval_T *const tv, float_T *const ret_f)
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_WARN_UNUSED_RESULT
{
if (tv->v_type == VAR_FLOAT) {
*ret_f = tv->vval.v_float;
return
# 400 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
1
# 400 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
;
}
if (tv->v_type == VAR_NUMBER) {
*ret_f = (float_T)tv->vval.v_number;
return
# 404 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
1
# 404 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
;
}
semsg("%s", gettext("E808: Number or Float required"));
return
# 407 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
0
# 407 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
;
}
static inline DictWatcher *tv_dict_watcher_node_data(QUEUE *q)
FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_NONNULL_ALL FUNC_ATTR_NONNULL_RET
FUNC_ATTR_NO_SANITIZE_ADDRESS FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
{
return ((DictWatcher *)((char *)(q) -
# 418 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
__builtin_offsetof (
# 418 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
DictWatcher
# 418 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
,
# 418 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
node
# 418 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
)
# 418 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
));
}
# 428 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
static inline
# 428 "/home/ubuntu/neovim/src/nvim/eval/typval.h" 3 4
_Bool
# 428 "/home/ubuntu/neovim/src/nvim/eval/typval.h"
tv_is_func(const typval_T tv)
FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_CONST
{
return tv.v_type == VAR_FUNC || tv.v_type == VAR_PARTIAL;
}
# 31 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/eval/userfunc.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 5 "/home/ubuntu/neovim/src/nvim/eval/userfunc.h" 2
# 34 "/home/ubuntu/neovim/src/nvim/eval/userfunc.h"
typedef struct {
dict_T *fd_dict;
char *fd_newkey;
dictitem_T *fd_di;
} funcdict_T;
typedef struct funccal_entry funccal_entry_T;
struct funccal_entry {
void *top_funccal;
funccal_entry_T *next;
};
typedef enum {
FCERR_UNKNOWN = 0,
FCERR_TOOMANY = 1,
FCERR_TOOFEW = 2,
FCERR_SCRIPT = 3,
FCERR_DICT = 4,
FCERR_NONE = 5,
FCERR_OTHER = 6,
FCERR_DELETED = 7,
FCERR_NOTMETHOD = 8,
} FnameTransError;
typedef int (*ArgvFunc)(int current_argcount, typval_T *argv, int partial_argcount,
ufunc_T *called_func);
typedef struct {
ArgvFunc fe_argv_func;
linenr_T fe_firstline;
linenr_T fe_lastline;
# 69 "/home/ubuntu/neovim/src/nvim/eval/userfunc.h" 3 4
_Bool
# 69 "/home/ubuntu/neovim/src/nvim/eval/userfunc.h"
*fe_doesrange;
# 70 "/home/ubuntu/neovim/src/nvim/eval/userfunc.h" 3 4
_Bool
# 70 "/home/ubuntu/neovim/src/nvim/eval/userfunc.h"
fe_evaluate;
partial_T *fe_partial;
dict_T *fe_selfdict;
typval_T *fe_basetv;
# 74 "/home/ubuntu/neovim/src/nvim/eval/userfunc.h" 3 4
_Bool
# 74 "/home/ubuntu/neovim/src/nvim/eval/userfunc.h"
fe_found_var;
} funcexe_T;
# 32 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/eval/vars.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/eval/vars.h" 2
# 33 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/event/loop.h" 1
# 1 "/home/ubuntu/neovim/src/klib/klist.h" 1
# 29 "/home/ubuntu/neovim/src/klib/klist.h"
# 1 "/usr/include/assert.h" 1 3 4
# 30 "/home/ubuntu/neovim/src/klib/klist.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/func_attr.h" 1
# 33 "/home/ubuntu/neovim/src/klib/klist.h" 2
# 7 "/home/ubuntu/neovim/src/nvim/event/loop.h" 2
typedef void *WatcherPtr;
struct __kl1_WatcherPtr { WatcherPtr data; struct __kl1_WatcherPtr *next; }; typedef struct __kl1_WatcherPtr kl1_WatcherPtr; typedef struct { size_t cnt, n, max; kl1_WatcherPtr **buf; } kmp_WatcherPtr_t; static inline kmp_WatcherPtr_t *kmp_init_WatcherPtr(void) { return (kmp_WatcherPtr_t *)xcalloc(1, sizeof(kmp_WatcherPtr_t)); } static inline void kmp_destroy_WatcherPtr(kmp_WatcherPtr_t *mp) __attribute__((unused)); static inline void kmp_destroy_WatcherPtr(kmp_WatcherPtr_t *mp) { size_t k; for (k = 0; k < mp->n; k++) { ; do { void **ptr_ = (void **)&(mp->buf[k]); xfree(*ptr_); *ptr_ =
# 13 "/home/ubuntu/neovim/src/nvim/event/loop.h" 3 4
((void *)0)
# 13 "/home/ubuntu/neovim/src/nvim/event/loop.h"
; (void)(*ptr_); } while (0); } do { void **ptr_ = (void **)&(mp->buf); xfree(*ptr_); *ptr_ =
# 13 "/home/ubuntu/neovim/src/nvim/event/loop.h" 3 4
((void *)0)
# 13 "/home/ubuntu/neovim/src/nvim/event/loop.h"
; (void)(*ptr_); } while (0); do { void **ptr_ = (void **)&(mp); xfree(*ptr_); *ptr_ =
# 13 "/home/ubuntu/neovim/src/nvim/event/loop.h" 3 4
((void *)0)
# 13 "/home/ubuntu/neovim/src/nvim/event/loop.h"
; (void)(*ptr_); } while (0); } static inline kl1_WatcherPtr *kmp_alloc_WatcherPtr(kmp_WatcherPtr_t *mp) { mp->cnt++; if (mp->n == 0) { return (kl1_WatcherPtr *)xcalloc(1, sizeof(kl1_WatcherPtr)); } return mp->buf[--mp->n]; } static inline void kmp_free_WatcherPtr(kmp_WatcherPtr_t *mp, kl1_WatcherPtr *p) { mp->cnt--; if (mp->n == mp->max) { mp->max = mp->max ? (mp->max << 1) : 16; mp->buf = (kl1_WatcherPtr **)xrealloc(mp->buf, sizeof(kl1_WatcherPtr *) * mp->max); } mp->buf[mp->n++] = p; } typedef struct { kl1_WatcherPtr *head, *tail; kmp_WatcherPtr_t *mp; size_t size; } kl_WatcherPtr_t; static inline kl_WatcherPtr_t *kl_init_WatcherPtr(void) { kl_WatcherPtr_t *kl = (kl_WatcherPtr_t *)xcalloc(1, sizeof(kl_WatcherPtr_t)); kl->mp = kmp_init_WatcherPtr(); kl->head = kl->tail = kmp_alloc_WatcherPtr(kl->mp); kl->head->next = 0; return kl; } static inline void kl_destroy_WatcherPtr(kl_WatcherPtr_t *kl) __attribute__((unused)); static inline void kl_destroy_WatcherPtr(kl_WatcherPtr_t *kl) { kl1_WatcherPtr *p; for (p = kl->head; p != kl->tail; p = p->next) { kmp_free_WatcherPtr(kl->mp, p); } kmp_free_WatcherPtr(kl->mp, p); kmp_destroy_WatcherPtr(kl->mp); do { void **ptr_ = (void **)&(kl); xfree(*ptr_); *ptr_ =
# 13 "/home/ubuntu/neovim/src/nvim/event/loop.h" 3 4
((void *)0)
# 13 "/home/ubuntu/neovim/src/nvim/event/loop.h"
; (void)(*ptr_); } while (0); } static inline void kl_push_WatcherPtr(kl_WatcherPtr_t *kl, WatcherPtr d) { kl1_WatcherPtr *q, *p = kmp_alloc_WatcherPtr(kl->mp); q = kl->tail; p->next = 0; kl->tail->next = p; kl->tail = p; kl->size++; q->data = d; } static inline WatcherPtr kl_shift_at_WatcherPtr(kl_WatcherPtr_t *kl, kl1_WatcherPtr **n) {
# 13 "/home/ubuntu/neovim/src/nvim/event/loop.h" 3 4
((void) sizeof ((
# 13 "/home/ubuntu/neovim/src/nvim/event/loop.h"
(*n)->next
# 13 "/home/ubuntu/neovim/src/nvim/event/loop.h" 3 4
) ? 1 : 0), __extension__ ({ if (
# 13 "/home/ubuntu/neovim/src/nvim/event/loop.h"
(*n)->next
# 13 "/home/ubuntu/neovim/src/nvim/event/loop.h" 3 4
) ; else __assert_fail (
# 13 "/home/ubuntu/neovim/src/nvim/event/loop.h"
"(*n)->next"
# 13 "/home/ubuntu/neovim/src/nvim/event/loop.h" 3 4
, "/home/ubuntu/neovim/src/nvim/event/loop.h", 13, __extension__ __PRETTY_FUNCTION__); }))
# 13 "/home/ubuntu/neovim/src/nvim/event/loop.h"
; kl1_WatcherPtr *p; kl->size--; p = *n; *n = (*n)->next; if (p == kl->head) { kl->head = *n; } WatcherPtr d = p->data; kmp_free_WatcherPtr(kl->mp, p); return d; }
struct loop {
uv_loop_t uv;
MultiQueue *events;
MultiQueue *thread_events;
# 28 "/home/ubuntu/neovim/src/nvim/event/loop.h"
MultiQueue *fast_events;
kl_WatcherPtr_t *children;
uv_signal_t children_watcher;
uv_timer_t children_kill_timer;
uv_timer_t poll_timer;
uv_timer_t exit_delay_timer;
uv_async_t async;
uv_mutex_t mutex;
int recursive;
# 43 "/home/ubuntu/neovim/src/nvim/event/loop.h" 3 4
_Bool
# 43 "/home/ubuntu/neovim/src/nvim/event/loop.h"
closing;
};
# 34 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/event/multiqueue.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/event/multiqueue.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/os/time.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/os/time.h" 2
# 7 "/home/ubuntu/neovim/src/nvim/event/multiqueue.h" 2
# 35 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/event/process.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 5 "/home/ubuntu/neovim/src/nvim/event/process.h" 2
static inline Process process_init(Loop *loop, ProcessType type, void *data)
{
return (Process) {
.type = type,
.data = data,
.loop = loop,
.events =
# 15 "/home/ubuntu/neovim/src/nvim/event/process.h" 3 4
((void *)0)
# 15 "/home/ubuntu/neovim/src/nvim/event/process.h"
,
.pid = 0,
.status = -1,
.refcount = 0,
.stopped_time = 0,
.cwd =
# 20 "/home/ubuntu/neovim/src/nvim/event/process.h" 3 4
((void *)0)
# 20 "/home/ubuntu/neovim/src/nvim/event/process.h"
,
.argv =
# 21 "/home/ubuntu/neovim/src/nvim/event/process.h" 3 4
((void *)0)
# 21 "/home/ubuntu/neovim/src/nvim/event/process.h"
,
.exepath =
# 22 "/home/ubuntu/neovim/src/nvim/event/process.h" 3 4
((void *)0)
# 22 "/home/ubuntu/neovim/src/nvim/event/process.h"
,
.in = { .closed =
# 23 "/home/ubuntu/neovim/src/nvim/event/process.h" 3 4
0
# 23 "/home/ubuntu/neovim/src/nvim/event/process.h"
},
.out = { .s.closed =
# 24 "/home/ubuntu/neovim/src/nvim/event/process.h" 3 4
0
# 24 "/home/ubuntu/neovim/src/nvim/event/process.h"
},
.err = { .s.closed =
# 25 "/home/ubuntu/neovim/src/nvim/event/process.h" 3 4
0
# 25 "/home/ubuntu/neovim/src/nvim/event/process.h"
},
.cb =
# 26 "/home/ubuntu/neovim/src/nvim/event/process.h" 3 4
((void *)0)
# 26 "/home/ubuntu/neovim/src/nvim/event/process.h"
,
.closed =
# 27 "/home/ubuntu/neovim/src/nvim/event/process.h" 3 4
0
# 27 "/home/ubuntu/neovim/src/nvim/event/process.h"
,
.internal_close_cb =
# 28 "/home/ubuntu/neovim/src/nvim/event/process.h" 3 4
((void *)0)
# 28 "/home/ubuntu/neovim/src/nvim/event/process.h"
,
.internal_exit_cb =
# 29 "/home/ubuntu/neovim/src/nvim/event/process.h" 3 4
((void *)0)
# 29 "/home/ubuntu/neovim/src/nvim/event/process.h"
,
.detach =
# 30 "/home/ubuntu/neovim/src/nvim/event/process.h" 3 4
0
# 30 "/home/ubuntu/neovim/src/nvim/event/process.h"
,
.fwd_err =
# 31 "/home/ubuntu/neovim/src/nvim/event/process.h" 3 4
0
# 31 "/home/ubuntu/neovim/src/nvim/event/process.h"
,
};
}
static inline const char *process_get_exepath(Process *proc)
{
return proc->exepath !=
# 38 "/home/ubuntu/neovim/src/nvim/event/process.h" 3 4
((void *)0)
# 38 "/home/ubuntu/neovim/src/nvim/event/process.h"
? proc->exepath : proc->argv[0];
}
static inline
# 41 "/home/ubuntu/neovim/src/nvim/event/process.h" 3 4
_Bool
# 41 "/home/ubuntu/neovim/src/nvim/event/process.h"
process_is_stopped(Process *proc)
{
# 43 "/home/ubuntu/neovim/src/nvim/event/process.h" 3 4
_Bool
# 43 "/home/ubuntu/neovim/src/nvim/event/process.h"
exited = (proc->status >= 0);
return exited || (proc->stopped_time != 0);
}
# 36 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/event/time.h" 1
# 37 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/ex_cmds.h" 1
enum {
ECMD_HIDE = 0x01,
ECMD_SET_HELP = 0x02,
ECMD_OLDBUF = 0x04,
ECMD_FORCEIT = 0x08,
ECMD_ADDBUF = 0x10,
ECMD_ALTBUF = 0x20,
ECMD_NOWINENTER = 0x40,
};
enum {
ECMD_LASTL = 0,
ECMD_LAST = -1,
ECMD_ONE = 1,
};
# 38 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/ex_docmd.h" 1
# 1 "/home/ubuntu/neovim/src/nvim/getchar_defs.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 5 "/home/ubuntu/neovim/src/nvim/getchar_defs.h" 2
typedef struct buffblock {
struct buffblock *b_next;
char b_str[1];
} buffblock_T;
typedef struct {
buffblock_T bh_first;
buffblock_T *bh_curr;
size_t bh_index;
size_t bh_space;
} buffheader_T;
typedef struct {
buffheader_T sr_redobuff;
buffheader_T sr_old_redobuff;
} save_redo_T;
typedef struct {
uint8_t *tb_buf;
uint8_t *tb_noremap;
int tb_buflen;
int tb_off;
int tb_len;
int tb_maplen;
int tb_silent;
int tb_no_abbr_cnt;
int tb_change_cnt;
} typebuf_T;
typedef struct {
typebuf_T save_typebuf;
# 44 "/home/ubuntu/neovim/src/nvim/getchar_defs.h" 3 4
_Bool
# 44 "/home/ubuntu/neovim/src/nvim/getchar_defs.h"
typebuf_valid;
int old_char;
int old_mod_mask;
buffheader_T save_readbuf1;
buffheader_T save_readbuf2;
String save_inputbuf;
} tasave_T;
enum RemapValues {
REMAP_YES = 0,
REMAP_NONE = -1,
REMAP_SCRIPT = -2,
REMAP_SKIP = -3,
};
# 9 "/home/ubuntu/neovim/src/nvim/ex_docmd.h" 2
enum {
DOCMD_VERBOSE = 0x01,
DOCMD_NOWAIT = 0x02,
DOCMD_REPEAT = 0x04,
DOCMD_KEYTYPED = 0x08,
DOCMD_EXCRESET = 0x10,
DOCMD_KEEPLINE = 0x20,
};
enum {
VALID_PATH = 1,
VALID_HEAD = 2,
};
enum { DIALOG_MSG_SIZE = 1000, };
typedef struct {
int save_msg_scroll;
int save_restart_edit;
# 38 "/home/ubuntu/neovim/src/nvim/ex_docmd.h" 3 4
_Bool
# 38 "/home/ubuntu/neovim/src/nvim/ex_docmd.h"
save_msg_didout;
int save_State;
# 40 "/home/ubuntu/neovim/src/nvim/ex_docmd.h" 3 4
_Bool
# 40 "/home/ubuntu/neovim/src/nvim/ex_docmd.h"
save_finish_op;
int save_opcount;
int save_reg_executing;
# 43 "/home/ubuntu/neovim/src/nvim/ex_docmd.h" 3 4
_Bool
# 43 "/home/ubuntu/neovim/src/nvim/ex_docmd.h"
save_pending_end_reg_executing;
tasave_T tabuf;
} save_state_T;
# 39 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/ex_eval.h" 1
# 40 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/garray.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 5 "/home/ubuntu/neovim/src/nvim/garray.h" 2
# 41 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/globals.h" 1
# 14 "/home/ubuntu/neovim/src/nvim/globals.h"
# 1 "/home/ubuntu/neovim/src/nvim/menu_defs.h" 1
enum {
MENU_INDEX_INVALID = -1,
MENU_INDEX_NORMAL = 0,
MENU_INDEX_VISUAL = 1,
MENU_INDEX_SELECT = 2,
MENU_INDEX_OP_PENDING = 3,
MENU_INDEX_INSERT = 4,
MENU_INDEX_CMDLINE = 5,
MENU_INDEX_TERMINAL = 6,
MENU_INDEX_TIP = 7,
MENU_MODES = 8,
};
enum {
MENU_NORMAL_MODE = 1 << MENU_INDEX_NORMAL,
MENU_VISUAL_MODE = 1 << MENU_INDEX_VISUAL,
MENU_SELECT_MODE = 1 << MENU_INDEX_SELECT,
MENU_OP_PENDING_MODE = 1 << MENU_INDEX_OP_PENDING,
MENU_INSERT_MODE = 1 << MENU_INDEX_INSERT,
MENU_CMDLINE_MODE = 1 << MENU_INDEX_CMDLINE,
MENU_TERMINAL_MODE = 1 << MENU_INDEX_TERMINAL,
MENU_TIP_MODE = 1 << MENU_INDEX_TIP,
MENU_ALL_MODES = (1 << MENU_INDEX_TIP) - 1,
};
typedef struct VimMenu vimmenu_T;
struct VimMenu {
int modes;
int enabled;
char *name;
char *dname;
char *en_name;
char *en_dname;
int mnemonic;
char *actext;
int priority;
char *strings[MENU_MODES];
int noremap[MENU_MODES];
# 57 "/home/ubuntu/neovim/src/nvim/menu_defs.h" 3 4
_Bool
# 57 "/home/ubuntu/neovim/src/nvim/menu_defs.h"
silent[MENU_MODES];
vimmenu_T *children;
vimmenu_T *parent;
vimmenu_T *next;
};
# 15 "/home/ubuntu/neovim/src/nvim/globals.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/runtime_defs.h" 1
typedef enum {
ETYPE_TOP,
ETYPE_SCRIPT,
ETYPE_UFUNC,
ETYPE_AUCMD,
ETYPE_MODELINE,
ETYPE_EXCEPT,
ETYPE_ARGS,
ETYPE_ENV,
ETYPE_INTERNAL,
ETYPE_SPELL,
} etype_T;
typedef struct {
linenr_T es_lnum;
char *es_name;
etype_T es_type;
union {
sctx_T *sctx;
ufunc_T *ufunc;
AutoPatCmd *aucmd;
except_T *except;
} es_info;
} estack_T;
typedef enum {
ESTACK_NONE,
ESTACK_SFILE,
ESTACK_STACK,
ESTACK_SCRIPT,
} estack_arg_T;
typedef struct {
ScopeDictDictItem sv_var;
dict_T sv_dict;
} scriptvar_T;
typedef struct {
scriptvar_T *sn_vars;
char *sn_name;
# 52 "/home/ubuntu/neovim/src/nvim/runtime_defs.h" 3 4
_Bool
# 52 "/home/ubuntu/neovim/src/nvim/runtime_defs.h"
sn_prof_on;
# 53 "/home/ubuntu/neovim/src/nvim/runtime_defs.h" 3 4
_Bool
# 53 "/home/ubuntu/neovim/src/nvim/runtime_defs.h"
sn_pr_force;
proftime_T sn_pr_child;
int sn_pr_nest;
int sn_pr_count;
proftime_T sn_pr_total;
proftime_T sn_pr_self;
proftime_T sn_pr_start;
proftime_T sn_pr_children;
garray_T sn_prl_ga;
proftime_T sn_prl_start;
proftime_T sn_prl_children;
proftime_T sn_prl_wait;
linenr_T sn_prl_idx;
int sn_prl_execed;
} scriptitem_T;
typedef
# 71 "/home/ubuntu/neovim/src/nvim/runtime_defs.h" 3 4
_Bool
# 71 "/home/ubuntu/neovim/src/nvim/runtime_defs.h"
(*DoInRuntimepathCB)(int, char **,
# 71 "/home/ubuntu/neovim/src/nvim/runtime_defs.h" 3 4
_Bool
# 71 "/home/ubuntu/neovim/src/nvim/runtime_defs.h"
, void *);
# 17 "/home/ubuntu/neovim/src/nvim/globals.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/state_defs.h" 1
typedef struct vim_state VimState;
typedef int (*state_check_callback)(VimState *state);
typedef int (*state_execute_callback)(VimState *state, int key);
struct vim_state {
state_check_callback check;
state_execute_callback execute;
};
# 20 "/home/ubuntu/neovim/src/nvim/state_defs.h"
enum {
MODE_NORMAL = 0x01,
MODE_VISUAL = 0x02,
MODE_OP_PENDING = 0x04,
MODE_CMDLINE = 0x08,
MODE_INSERT = 0x10,
MODE_LANGMAP = 0x20,
MODE_SELECT = 0x40,
MODE_TERMINAL = 0x80,
MAP_ALL_MODES = 0xff,
REPLACE_FLAG = 0x100,
MODE_REPLACE = REPLACE_FLAG | MODE_INSERT,
VREPLACE_FLAG = 0x200,
MODE_VREPLACE = REPLACE_FLAG | VREPLACE_FLAG | MODE_INSERT,
MODE_LREPLACE = REPLACE_FLAG | MODE_LANGMAP,
MODE_NORMAL_BUSY = 0x1000 | MODE_NORMAL,
MODE_HITRETURN = 0x2000 | MODE_NORMAL,
MODE_ASKMORE = 0x3000,
MODE_SETWSIZE = 0x4000,
MODE_EXTERNCMD = 0x5000,
MODE_SHOWMATCH = 0x6000 | MODE_INSERT,
MODE_CONFIRM = 0x7000,
};
# 18 "/home/ubuntu/neovim/src/nvim/globals.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/syntax_defs.h" 1
# 12 "/home/ubuntu/neovim/src/nvim/syntax_defs.h"
struct sp_syn {
int inc_tag;
int16_t id;
int16_t *cont_in_list;
};
typedef struct keyentry keyentry_T;
struct keyentry {
keyentry_T *ke_next;
struct sp_syn k_syn;
int16_t *next_list;
int flags;
int k_char;
char keyword[];
};
typedef struct {
int bs_idx;
int bs_flags;
int bs_seqnr;
int bs_cchar;
reg_extmatch_T *bs_extmatch;
} bufstate_T;
struct syn_state {
synstate_T *sst_next;
linenr_T sst_lnum;
union {
bufstate_T sst_stack[7];
garray_T sst_ga;
} sst_union;
int sst_next_flags;
int sst_stacksize;
int16_t *sst_next_list;
disptick_T sst_tick;
linenr_T sst_change_lnum;
};
# 19 "/home/ubuntu/neovim/src/nvim/globals.h" 2
# 84 "/home/ubuntu/neovim/src/nvim/globals.h"
extern struct nvim_stats_s {
int64_t fsync;
int64_t redraw;
int16_t log_skip;
} g_stats ;
# 102 "/home/ubuntu/neovim/src/nvim/globals.h"
extern int Rows ;
extern int Columns ;
extern int mod_mask ;
extern int vgetc_mod_mask ;
extern int vgetc_char ;
# 121 "/home/ubuntu/neovim/src/nvim/globals.h"
extern int cmdline_row;
extern
# 123 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 123 "/home/ubuntu/neovim/src/nvim/globals.h"
redraw_cmdline ;
extern
# 124 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 124 "/home/ubuntu/neovim/src/nvim/globals.h"
redraw_mode ;
extern
# 125 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 125 "/home/ubuntu/neovim/src/nvim/globals.h"
clear_cmdline ;
extern
# 126 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 126 "/home/ubuntu/neovim/src/nvim/globals.h"
mode_displayed ;
extern int cmdline_star ;
extern
# 128 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 128 "/home/ubuntu/neovim/src/nvim/globals.h"
redrawing_cmdline ;
extern
# 129 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 129 "/home/ubuntu/neovim/src/nvim/globals.h"
cmdline_was_last_drawn ;
extern
# 131 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 131 "/home/ubuntu/neovim/src/nvim/globals.h"
exec_from_reg ;
extern colnr_T dollar_vcol ;
extern char *edit_submode ;
extern char *edit_submode_pre ;
extern char *edit_submode_extra ;
extern hlf_T edit_submode_highl;
extern
# 147 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 147 "/home/ubuntu/neovim/src/nvim/globals.h"
cmdmsg_rl ;
extern int msg_col;
extern int msg_row;
extern int msg_scrolled;
extern
# 153 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 153 "/home/ubuntu/neovim/src/nvim/globals.h"
msg_scrolled_ign ;
extern
# 156 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 156 "/home/ubuntu/neovim/src/nvim/globals.h"
msg_did_scroll ;
extern char *keep_msg ;
extern int keep_msg_attr ;
extern
# 160 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 160 "/home/ubuntu/neovim/src/nvim/globals.h"
need_fileinfo ;
extern int msg_scroll ;
extern
# 162 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 162 "/home/ubuntu/neovim/src/nvim/globals.h"
msg_didout ;
extern
# 163 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 163 "/home/ubuntu/neovim/src/nvim/globals.h"
msg_didany ;
extern
# 164 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 164 "/home/ubuntu/neovim/src/nvim/globals.h"
msg_nowait ;
extern int emsg_off ;
extern
# 167 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 167 "/home/ubuntu/neovim/src/nvim/globals.h"
info_message ;
extern
# 168 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 168 "/home/ubuntu/neovim/src/nvim/globals.h"
msg_hist_off ;
extern
# 169 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 169 "/home/ubuntu/neovim/src/nvim/globals.h"
need_clr_eos ;
extern int emsg_skip ;
extern
# 173 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 173 "/home/ubuntu/neovim/src/nvim/globals.h"
emsg_severe ;
extern char *emsg_assert_fails_msg ;
extern long emsg_assert_fails_lnum ;
extern char *emsg_assert_fails_context ;
extern
# 180 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 180 "/home/ubuntu/neovim/src/nvim/globals.h"
did_endif ;
extern dict_T vimvardict;
extern dict_T globvardict;
extern int did_emsg;
extern
# 187 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 187 "/home/ubuntu/neovim/src/nvim/globals.h"
called_vim_beep;
extern
# 188 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 188 "/home/ubuntu/neovim/src/nvim/globals.h"
did_emsg_syntax;
extern int called_emsg;
extern int ex_exitval ;
extern
# 192 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 192 "/home/ubuntu/neovim/src/nvim/globals.h"
emsg_on_display ;
extern
# 193 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 193 "/home/ubuntu/neovim/src/nvim/globals.h"
rc_did_emsg ;
extern int no_wait_return ;
extern
# 196 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 196 "/home/ubuntu/neovim/src/nvim/globals.h"
need_wait_return ;
extern
# 197 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 197 "/home/ubuntu/neovim/src/nvim/globals.h"
did_wait_return ;
extern
# 199 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 199 "/home/ubuntu/neovim/src/nvim/globals.h"
need_maketitle ;
extern
# 201 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 201 "/home/ubuntu/neovim/src/nvim/globals.h"
quit_more ;
extern int vgetc_busy ;
extern
# 204 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 204 "/home/ubuntu/neovim/src/nvim/globals.h"
didset_vim ;
extern
# 205 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 205 "/home/ubuntu/neovim/src/nvim/globals.h"
didset_vimruntime ;
extern int lines_left ;
extern
# 210 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 210 "/home/ubuntu/neovim/src/nvim/globals.h"
msg_no_more ;
extern int ex_nesting_level ;
extern int debug_break_level ;
extern
# 215 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 215 "/home/ubuntu/neovim/src/nvim/globals.h"
debug_did_msg ;
extern int debug_tick ;
extern int debug_backtrace_level ;
extern int do_profiling ;
extern except_T *current_exception;
extern
# 232 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 232 "/home/ubuntu/neovim/src/nvim/globals.h"
did_throw ;
extern
# 236 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 236 "/home/ubuntu/neovim/src/nvim/globals.h"
need_rethrow ;
extern
# 240 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 240 "/home/ubuntu/neovim/src/nvim/globals.h"
check_cstack ;
extern int trylevel ;
extern
# 252 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 252 "/home/ubuntu/neovim/src/nvim/globals.h"
force_abort ;
# 262 "/home/ubuntu/neovim/src/nvim/globals.h"
extern msglist_T **msg_list ;
extern
# 268 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 268 "/home/ubuntu/neovim/src/nvim/globals.h"
suppress_errthrow ;
extern except_T *caught_stack ;
# 284 "/home/ubuntu/neovim/src/nvim/globals.h"
extern
# 284 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 284 "/home/ubuntu/neovim/src/nvim/globals.h"
may_garbage_collect ;
extern
# 285 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 285 "/home/ubuntu/neovim/src/nvim/globals.h"
want_garbage_collect ;
extern
# 286 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 286 "/home/ubuntu/neovim/src/nvim/globals.h"
garbage_collect_at_exit ;
# 301 "/home/ubuntu/neovim/src/nvim/globals.h"
extern sctx_T current_sctx ;
extern uint64_t current_channel_id ;
extern
# 305 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 305 "/home/ubuntu/neovim/src/nvim/globals.h"
did_source_packages ;
extern struct caller_scope {
sctx_T script_ctx;
estack_T es_entry;
char *autocmd_fname, *autocmd_match;
# 313 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 313 "/home/ubuntu/neovim/src/nvim/globals.h"
autocmd_fname_full;
int autocmd_bufnr;
void *funccalp;
} provider_caller_scope;
extern int provider_call_nesting ;
extern int t_colors ;
extern int include_none ;
extern int include_default ;
extern int include_link ;
extern
# 330 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 330 "/home/ubuntu/neovim/src/nvim/globals.h"
highlight_match ;
extern linenr_T search_match_lines;
extern colnr_T search_match_endcol;
extern linenr_T search_first_line ;
extern linenr_T search_last_line ;
extern
# 336 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 336 "/home/ubuntu/neovim/src/nvim/globals.h"
no_smartcase ;
extern
# 338 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 338 "/home/ubuntu/neovim/src/nvim/globals.h"
need_check_timestamps ;
extern
# 340 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 340 "/home/ubuntu/neovim/src/nvim/globals.h"
did_check_timestamps ;
extern int no_check_timestamps ;
extern int mouse_grid;
extern int mouse_row;
extern int mouse_col;
extern
# 348 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 348 "/home/ubuntu/neovim/src/nvim/globals.h"
mouse_past_bottom ;
extern
# 349 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 349 "/home/ubuntu/neovim/src/nvim/globals.h"
mouse_past_eol ;
extern int mouse_dragging ;
extern vimmenu_T *root_menu ;
extern
# 357 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 357 "/home/ubuntu/neovim/src/nvim/globals.h"
sys_menu ;
extern win_T *firstwin;
extern win_T *lastwin;
extern win_T *prevwin ;
# 379 "/home/ubuntu/neovim/src/nvim/globals.h"
extern win_T *curwin;
extern frame_T *topframe;
extern tabpage_T *first_tabpage;
extern tabpage_T *curtab;
extern tabpage_T *lastused_tabpage;
extern
# 391 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 391 "/home/ubuntu/neovim/src/nvim/globals.h"
redraw_tabline ;
extern buf_T *firstbuf ;
extern buf_T *lastbuf ;
extern buf_T *curbuf ;
# 413 "/home/ubuntu/neovim/src/nvim/globals.h"
extern alist_T global_alist;
extern int max_alist_id ;
extern
# 415 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 415 "/home/ubuntu/neovim/src/nvim/globals.h"
arg_had_last ;
extern int ru_col;
extern int ru_wid;
extern int sc_col;
extern int starting ;
extern
# 428 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 428 "/home/ubuntu/neovim/src/nvim/globals.h"
exiting ;
extern int v_dying ;
extern
# 432 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 432 "/home/ubuntu/neovim/src/nvim/globals.h"
stdin_isatty ;
extern
# 434 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 434 "/home/ubuntu/neovim/src/nvim/globals.h"
stdout_isatty ;
extern
# 436 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 436 "/home/ubuntu/neovim/src/nvim/globals.h"
stderr_isatty ;
extern int stdin_fd ;
extern
# 442 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 442 "/home/ubuntu/neovim/src/nvim/globals.h"
full_screen ;
extern int secure ;
extern int textlock ;
extern int allbuf_lock ;
extern int sandbox ;
extern
# 460 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 460 "/home/ubuntu/neovim/src/nvim/globals.h"
silent_mode ;
extern pos_T VIsual;
extern
# 465 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 465 "/home/ubuntu/neovim/src/nvim/globals.h"
VIsual_active ;
extern
# 467 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 467 "/home/ubuntu/neovim/src/nvim/globals.h"
VIsual_select ;
extern int VIsual_select_reg ;
extern int restart_VIsual_select ;
extern int VIsual_reselect;
extern int VIsual_mode ;
extern
# 477 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 477 "/home/ubuntu/neovim/src/nvim/globals.h"
redo_VIsual_busy ;
extern int resel_VIsual_mode ;
extern linenr_T resel_VIsual_line_count;
extern colnr_T resel_VIsual_vcol;
extern pos_T where_paste_started;
extern
# 492 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 492 "/home/ubuntu/neovim/src/nvim/globals.h"
did_ai ;
extern colnr_T ai_col ;
extern int end_comment_pending ;
extern
# 508 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 508 "/home/ubuntu/neovim/src/nvim/globals.h"
did_syncbind ;
extern
# 512 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 512 "/home/ubuntu/neovim/src/nvim/globals.h"
did_si ;
extern
# 516 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 516 "/home/ubuntu/neovim/src/nvim/globals.h"
can_si ;
extern
# 520 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 520 "/home/ubuntu/neovim/src/nvim/globals.h"
can_si_back ;
extern int old_indent ;
extern pos_T saved_cursor ;
extern pos_T Insstart;
extern pos_T Insstart_orig;
extern linenr_T orig_line_count ;
extern int vr_lines_changed ;
extern int inhibit_delete_count ;
# 558 "/home/ubuntu/neovim/src/nvim/globals.h"
extern char *fenc_default ;
# 567 "/home/ubuntu/neovim/src/nvim/globals.h"
extern int State ;
extern
# 569 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 569 "/home/ubuntu/neovim/src/nvim/globals.h"
debug_mode ;
extern
# 570 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 570 "/home/ubuntu/neovim/src/nvim/globals.h"
finish_op ;
extern int opcount ;
extern int motion_force ;
extern
# 575 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 575 "/home/ubuntu/neovim/src/nvim/globals.h"
exmode_active ;
extern
# 578 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 578 "/home/ubuntu/neovim/src/nvim/globals.h"
pending_exmode_active ;
extern
# 580 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 580 "/home/ubuntu/neovim/src/nvim/globals.h"
ex_no_reprint ;
extern
# 583 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 583 "/home/ubuntu/neovim/src/nvim/globals.h"
cmdpreview ;
extern int reg_recording ;
extern int reg_executing ;
extern
# 588 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 588 "/home/ubuntu/neovim/src/nvim/globals.h"
pending_end_reg_executing ;
extern int reg_recorded ;
extern int no_mapping ;
extern int no_zero_mapping ;
extern int allow_keys ;
extern int no_u_sync ;
extern int u_sync_once ;
extern
# 598 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 598 "/home/ubuntu/neovim/src/nvim/globals.h"
force_restart_edit ;
extern int restart_edit ;
extern
# 601 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 601 "/home/ubuntu/neovim/src/nvim/globals.h"
arrow_used;
extern
# 605 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 605 "/home/ubuntu/neovim/src/nvim/globals.h"
ins_at_eol ;
extern
# 608 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 608 "/home/ubuntu/neovim/src/nvim/globals.h"
no_abbr ;
extern int mapped_ctrl_c ;
extern
# 611 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 611 "/home/ubuntu/neovim/src/nvim/globals.h"
ctrl_c_interrupts ;
extern cmdmod_T cmdmod;
extern int msg_silent ;
extern int emsg_silent ;
extern
# 617 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 617 "/home/ubuntu/neovim/src/nvim/globals.h"
emsg_noredir ;
extern
# 618 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 618 "/home/ubuntu/neovim/src/nvim/globals.h"
cmd_silent ;
extern
# 620 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 620 "/home/ubuntu/neovim/src/nvim/globals.h"
in_assert_fails ;
# 629 "/home/ubuntu/neovim/src/nvim/globals.h"
extern int swap_exists_action ;
extern
# 630 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 630 "/home/ubuntu/neovim/src/nvim/globals.h"
swap_exists_did_quit ;
extern char IObuff[(1024 + 1)];
extern char NameBuff[4096];
extern char msg_buf[480];
extern char os_buf[
4096
];
extern int RedrawingDisabled ;
extern
# 646 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 646 "/home/ubuntu/neovim/src/nvim/globals.h"
readonlymode ;
extern
# 647 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 647 "/home/ubuntu/neovim/src/nvim/globals.h"
recoverymode ;
extern typebuf_T typebuf ;
extern
# 654 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 654 "/home/ubuntu/neovim/src/nvim/globals.h"
typebuf_was_empty ;
extern int ex_normal_busy ;
extern int expr_map_lock ;
extern
# 658 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 658 "/home/ubuntu/neovim/src/nvim/globals.h"
ignore_script ;
extern
# 659 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 659 "/home/ubuntu/neovim/src/nvim/globals.h"
stop_insert_mode;
extern
# 660 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 660 "/home/ubuntu/neovim/src/nvim/globals.h"
KeyTyped;
extern int KeyStuffed;
extern int maptick ;
extern int must_redraw ;
extern
# 665 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 665 "/home/ubuntu/neovim/src/nvim/globals.h"
skip_redraw ;
extern
# 666 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 666 "/home/ubuntu/neovim/src/nvim/globals.h"
do_redraw ;
extern
# 667 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 667 "/home/ubuntu/neovim/src/nvim/globals.h"
must_redraw_pum ;
extern
# 670 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 670 "/home/ubuntu/neovim/src/nvim/globals.h"
need_highlight_changed ;
extern FILE *scriptout ;
extern
# 676 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 676 "/home/ubuntu/neovim/src/nvim/globals.h"
got_int ;
extern
# 677 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 677 "/home/ubuntu/neovim/src/nvim/globals.h"
bangredo ;
extern int searchcmdlen;
extern int reg_do_extmatch ;
extern reg_extmatch_T *re_extmatch_in ;
extern reg_extmatch_T *re_extmatch_out ;
extern
# 687 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 687 "/home/ubuntu/neovim/src/nvim/globals.h"
did_outofmem_msg ;
extern
# 688 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 688 "/home/ubuntu/neovim/src/nvim/globals.h"
did_swapwrite_msg ;
extern int global_busy ;
extern
# 690 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 690 "/home/ubuntu/neovim/src/nvim/globals.h"
listcmd_busy ;
extern
# 691 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 691 "/home/ubuntu/neovim/src/nvim/globals.h"
need_start_insertmode ;
extern char last_mode[4] ;
extern char *last_cmdline ;
extern char *repeat_cmdline ;
extern char *new_last_cmdline ;
extern int postponed_split ;
extern int postponed_split_flags ;
extern int postponed_split_tab ;
extern int g_do_tagpreview ;
extern
# 706 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 706 "/home/ubuntu/neovim/src/nvim/globals.h"
g_tag_at_cursor ;
extern int replace_offset ;
extern char *escape_chars ;
extern
# 714 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 714 "/home/ubuntu/neovim/src/nvim/globals.h"
keep_help_flag ;
extern char *empty_string_option ;
extern
# 722 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 722 "/home/ubuntu/neovim/src/nvim/globals.h"
redir_off ;
extern FILE *redir_fd ;
extern int redir_reg ;
extern
# 725 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 725 "/home/ubuntu/neovim/src/nvim/globals.h"
redir_vname ;
extern garray_T *capture_ga ;
extern uint8_t langmap_mapchar[256];
extern int save_p_ls ;
extern int save_p_wmh ;
extern int wild_menu_showing ;
enum {
WM_SHOWN = 1,
WM_SCROLLED = 2,
WM_LIST = 3,
};
extern char *globaldir ;
extern char *last_chdir_reason ;
extern
# 747 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 747 "/home/ubuntu/neovim/src/nvim/globals.h"
km_stopsel ;
extern
# 748 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 748 "/home/ubuntu/neovim/src/nvim/globals.h"
km_startsel ;
extern int cmdwin_type ;
extern int cmdwin_result ;
extern int cmdwin_level ;
extern buf_T *cmdwin_buf ;
extern win_T *cmdwin_win ;
extern win_T *cmdwin_old_curwin ;
extern char no_lines_msg[] ;
extern int sub_nsubs;
extern linenr_T sub_nlines;
extern uint8_t wim_flags[4];
extern int stl_syntax ;
extern
# 774 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 774 "/home/ubuntu/neovim/src/nvim/globals.h"
no_hlsearch ;
extern
# 776 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 776 "/home/ubuntu/neovim/src/nvim/globals.h"
typebuf_was_filled ;
# 787 "/home/ubuntu/neovim/src/nvim/globals.h"
extern TriState virtual_op ;
extern disptick_T display_tick ;
extern linenr_T spell_redraw_lnum ;
extern FILE *time_fd ;
extern int vim_ignored;
extern
# 804 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 804 "/home/ubuntu/neovim/src/nvim/globals.h"
embedded_mode ;
extern
# 806 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 806 "/home/ubuntu/neovim/src/nvim/globals.h"
headless_mode ;
extern char windowsVersion[20] ;
extern optmagic_T magic_overruled ;
extern
# 816 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 816 "/home/ubuntu/neovim/src/nvim/globals.h"
skip_win_fix_cursor ;
extern
# 818 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 818 "/home/ubuntu/neovim/src/nvim/globals.h"
skip_win_fix_scroll ;
extern
# 820 "/home/ubuntu/neovim/src/nvim/globals.h" 3 4
_Bool
# 820 "/home/ubuntu/neovim/src/nvim/globals.h"
skip_update_topline ;
# 44 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/highlight_group.h" 1
# 1 "/home/ubuntu/neovim/src/nvim/api/keysets_defs.h" 1
typedef struct {
OptionalKeys is_set__empty_;
} Dict(empty);
typedef struct {
OptionalKeys is_set__context_;
Array types;
} Dict(context);
typedef struct {
OptionalKeys is_set__set_decoration_provider_;
LuaRef on_start;
LuaRef on_buf;
LuaRef on_win;
LuaRef on_line;
LuaRef on_end;
LuaRef _on_hl_def;
LuaRef _on_spell_nav;
} Dict(set_decoration_provider);
typedef struct {
OptionalKeys is_set__set_extmark_;
Integer id;
Integer end_line;
Integer end_row;
Integer end_col;
HLGroupID hl_group;
Array virt_text;
String virt_text_pos;
Integer virt_text_win_col;
Boolean virt_text_hide;
Boolean virt_text_repeat_linebreak;
Boolean hl_eol;
String hl_mode;
Boolean invalidate;
Boolean ephemeral;
Integer priority;
Boolean right_gravity;
Boolean end_right_gravity;
Array virt_lines;
Boolean virt_lines_above;
Boolean virt_lines_leftcol;
Boolean strict;
String sign_text;
HLGroupID sign_hl_group;
HLGroupID number_hl_group;
HLGroupID line_hl_group;
HLGroupID cursorline_hl_group;
String conceal;
Boolean spell;
Boolean ui_watched;
Boolean undo_restore;
String url;
Boolean scoped;
} Dict(set_extmark);
typedef struct {
OptionalKeys is_set__get_extmark_;
Boolean details;
Boolean hl_name;
} Dict(get_extmark);
typedef struct {
OptionalKeys is_set__get_extmarks_;
Integer limit;
Boolean details;
Boolean hl_name;
Boolean overlap;
String type;
} Dict(get_extmarks);
typedef struct {
OptionalKeys is_set__keymap_;
Boolean noremap;
Boolean nowait;
Boolean silent;
Boolean script;
Boolean expr;
Boolean unique;
LuaRef callback;
String desc;
Boolean replace_keycodes;
} Dict(keymap);
typedef struct {
Boolean builtin;
} Dict(get_commands);
typedef struct {
OptionalKeys is_set__user_command_;
Object addr;
Boolean bang;
Boolean bar;
Object complete;
Object count;
Object desc;
Boolean force;
Boolean keepscript;
Object nargs;
Object preview;
Object range;
Boolean register_ DictKey(register);
} Dict(user_command);
typedef struct {
OptionalKeys is_set__win_config_;
Float row;
Float col;
Integer width;
Integer height;
String anchor;
String relative;
String split;
Window win;
Array bufpos;
Boolean external;
Boolean focusable;
Boolean vertical;
Integer zindex;
Object border;
Object title;
String title_pos;
Object footer;
String footer_pos;
String style;
Boolean noautocmd;
Boolean fixed;
Boolean hide;
} Dict(win_config);
typedef struct {
Boolean is_lua;
Boolean do_source;
} Dict(runtime);
typedef struct {
OptionalKeys is_set__eval_statusline_;
Window winid;
Integer maxwidth;
String fillchar;
Boolean highlights;
Boolean use_winbar;
Boolean use_tabline;
Integer use_statuscol_lnum;
} Dict(eval_statusline);
typedef struct {
OptionalKeys is_set__option_;
String scope;
Window win;
Buffer buf;
String filetype;
} Dict(option);
typedef struct {
OptionalKeys is_set__highlight_;
Boolean bold;
Boolean standout;
Boolean strikethrough;
Boolean underline;
Boolean undercurl;
Boolean underdouble;
Boolean underdotted;
Boolean underdashed;
Boolean italic;
Boolean reverse;
Boolean altfont;
Boolean nocombine;
Boolean default_ DictKey(default);
Object cterm;
Object foreground;
Object fg;
Object background;
Object bg;
Object ctermfg;
Object ctermbg;
Object special;
Object sp;
Object link;
Object global_link;
Boolean fallback;
Integer blend;
Boolean fg_indexed;
Boolean bg_indexed;
Boolean force;
String url;
} Dict(highlight);
typedef struct {
Boolean bold;
Boolean standout;
Boolean strikethrough;
Boolean underline;
Boolean undercurl;
Boolean underdouble;
Boolean underdotted;
Boolean underdashed;
Boolean italic;
Boolean reverse;
Boolean altfont;
Boolean nocombine;
} Dict(highlight_cterm);
typedef struct {
OptionalKeys is_set__get_highlight_;
Integer id;
String name;
Boolean link;
Boolean create;
} Dict(get_highlight);
typedef struct {
OptionalKeys is_set__get_ns_;
Window winid;
} Dict(get_ns);
typedef struct {
OptionalKeys is_set__win_text_height_;
Integer start_row;
Integer end_row;
Integer start_vcol;
Integer end_vcol;
} Dict(win_text_height);
typedef struct {
OptionalKeys is_set__clear_autocmds_;
Buffer buffer;
Object event;
Object group;
Object pattern;
} Dict(clear_autocmds);
typedef struct {
OptionalKeys is_set__create_autocmd_;
Buffer buffer;
Object callback;
String command;
String desc;
Object group;
Boolean nested;
Boolean once;
Object pattern;
} Dict(create_autocmd);
typedef struct {
OptionalKeys is_set__exec_autocmds_;
Buffer buffer;
Object group;
Boolean modeline;
Object pattern;
Object data;
} Dict(exec_autocmds);
typedef struct {
OptionalKeys is_set__get_autocmds_;
Object event;
Object group;
Object pattern;
Object buffer;
} Dict(get_autocmds);
typedef struct {
Object clear;
} Dict(create_augroup);
typedef struct {
OptionalKeys is_set__cmd_;
String cmd;
Array range;
Integer count;
String reg;
Boolean bang;
Array args;
Dictionary magic;
Dictionary mods;
Object nargs;
Object addr;
Object nextcmd;
} Dict(cmd);
typedef struct {
OptionalKeys is_set__cmd_magic_;
Boolean file;
Boolean bar;
} Dict(cmd_magic);
typedef struct {
OptionalKeys is_set__cmd_mods_;
Boolean silent;
Boolean emsg_silent;
Boolean unsilent;
Dictionary filter;
Boolean sandbox;
Boolean noautocmd;
Boolean browse;
Boolean confirm;
Boolean hide;
Boolean horizontal;
Boolean keepalt;
Boolean keepjumps;
Boolean keepmarks;
Boolean keeppatterns;
Boolean lockmarks;
Boolean noswapfile;
Integer tab;
Integer verbose;
Boolean vertical;
String split;
} Dict(cmd_mods);
typedef struct {
OptionalKeys is_set__cmd_mods_filter_;
String pattern;
Boolean force;
} Dict(cmd_mods_filter);
typedef struct {
Boolean output;
} Dict(cmd_opts);
typedef struct {
Boolean verbose;
} Dict(echo_opts);
typedef struct {
Boolean output;
} Dict(exec_opts);
typedef struct {
OptionalKeys is_set__buf_attach_;
LuaRef on_lines;
LuaRef on_bytes;
LuaRef on_changedtick;
LuaRef on_detach;
LuaRef on_reload;
Boolean utf_sizes;
Boolean preview;
} Dict(buf_attach);
typedef struct {
OptionalKeys is_set__buf_delete_;
Boolean force;
Boolean unload;
} Dict(buf_delete);
typedef struct {
OptionalKeys is_set__open_term_;
LuaRef on_input;
Boolean force_crlf;
} Dict(open_term);
typedef struct {
OptionalKeys is_set__complete_set_;
String info;
} Dict(complete_set);
typedef struct {
OptionalKeys is_set__xdl_diff_;
LuaRef on_hunk;
String result_type;
String algorithm;
Integer ctxlen;
Integer interhunkctxlen;
Object linematch;
Boolean ignore_whitespace;
Boolean ignore_whitespace_change;
Boolean ignore_whitespace_change_at_eol;
Boolean ignore_cr_at_eol;
Boolean ignore_blank_lines;
Boolean indent_heuristic;
} Dict(xdl_diff);
typedef struct {
OptionalKeys is_set__redraw_;
Boolean flush;
Boolean cursor;
Boolean valid;
Boolean statuscolumn;
Boolean statusline;
Boolean tabline;
Boolean winbar;
Array range;
Window win;
Buffer buf;
} Dict(redraw);
typedef struct {
OptionalKeys is_set__ns_opts_;
Array wins;
} Dict(ns_opts);
typedef struct {
OptionalKeys is_set___shada_search_pat_;
Boolean magic DictKey(sm);
Boolean smartcase DictKey(sc);
Boolean has_line_offset DictKey(sl);
Boolean place_cursor_at_end DictKey(se);
Boolean is_last_used DictKey(su);
Boolean is_substitute_pattern DictKey(ss);
Boolean highlighted DictKey(sh);
Boolean search_backward DictKey(sb);
Integer offset DictKey(so);
String pat DictKey(sp);
} Dict(_shada_search_pat);
typedef struct {
OptionalKeys is_set___shada_mark_;
Integer n;
Integer l;
Integer c;
String f;
} Dict(_shada_mark);
typedef struct {
OptionalKeys is_set___shada_register_;
StringArray rc;
Boolean ru;
Integer rt;
Integer n;
Integer rw;
} Dict(_shada_register);
typedef struct {
OptionalKeys is_set___shada_buflist_item_;
Integer l;
Integer c;
String f;
} Dict(_shada_buflist_item);
# 4 "/home/ubuntu/neovim/src/nvim/highlight_group.h" 2
enum { MAX_HL_ID = 20000, };
typedef struct {
char *name;
RgbValue color;
} color_name_table_T;
extern color_name_table_T color_name_table[708];
# 46 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/insexpand.h" 1
# 47 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/keycodes.h" 1
# 97 "/home/ubuntu/neovim/src/nvim/keycodes.h"
enum key_extra {
KE_S_UP = 4,
KE_S_DOWN = 5,
KE_S_F1 = 6,
KE_S_F2 = 7,
KE_S_F3 = 8,
KE_S_F4 = 9,
KE_S_F5 = 10,
KE_S_F6 = 11,
KE_S_F7 = 12,
KE_S_F8 = 13,
KE_S_F9 = 14,
KE_S_F10 = 15,
KE_S_F11 = 16,
KE_S_F12 = 17,
KE_S_F13 = 18,
KE_S_F14 = 19,
KE_S_F15 = 20,
KE_S_F16 = 21,
KE_S_F17 = 22,
KE_S_F18 = 23,
KE_S_F19 = 24,
KE_S_F20 = 25,
KE_S_F21 = 26,
KE_S_F22 = 27,
KE_S_F23 = 28,
KE_S_F24 = 29,
KE_S_F25 = 30,
KE_S_F26 = 31,
KE_S_F27 = 32,
KE_S_F28 = 33,
KE_S_F29 = 34,
KE_S_F30 = 35,
KE_S_F31 = 36,
KE_S_F32 = 37,
KE_S_F33 = 38,
KE_S_F34 = 39,
KE_S_F35 = 40,
KE_S_F36 = 41,
KE_S_F37 = 42,
KE_MOUSE = 43,
KE_LEFTMOUSE = 44,
KE_LEFTDRAG = 45,
KE_LEFTRELEASE = 46,
KE_MIDDLEMOUSE = 47,
KE_MIDDLEDRAG = 48,
KE_MIDDLERELEASE = 49,
KE_RIGHTMOUSE = 50,
KE_RIGHTDRAG = 51,
KE_RIGHTRELEASE = 52,
KE_IGNORE = 53,
KE_TAB = 54,
KE_S_TAB_OLD = 55,
KE_XF1 = 57,
KE_XF2 = 58,
KE_XF3 = 59,
KE_XF4 = 60,
KE_XEND = 61,
KE_ZEND = 62,
KE_XHOME = 63,
KE_ZHOME = 64,
KE_XUP = 65,
KE_XDOWN = 66,
KE_XLEFT = 67,
KE_XRIGHT = 68,
KE_LEFTMOUSE_NM = 69,
KE_LEFTRELEASE_NM = 70,
KE_S_XF1 = 71,
KE_S_XF2 = 72,
KE_S_XF3 = 73,
KE_S_XF4 = 74,
KE_MOUSEDOWN = 75,
KE_MOUSEUP = 76,
KE_MOUSELEFT = 77,
KE_MOUSERIGHT = 78,
KE_KINS = 79,
KE_KDEL = 80,
KE_SNR = 82,
KE_PLUG = 83,
KE_CMDWIN = 84,
KE_C_LEFT = 85,
KE_C_RIGHT = 86,
KE_C_HOME = 87,
KE_C_END = 88,
KE_X1MOUSE = 89,
KE_X1DRAG = 90,
KE_X1RELEASE = 91,
KE_X2MOUSE = 92,
KE_X2DRAG = 93,
KE_X2RELEASE = 94,
KE_DROP = 95,
KE_NOP = 97,
KE_MOUSEMOVE = 100,
KE_EVENT = 102,
KE_LUA = 103,
KE_COMMAND = 104,
};
# 476 "/home/ubuntu/neovim/src/nvim/keycodes.h"
enum {
REPTERM_FROM_PART = 1,
REPTERM_DO_LT = 2,
REPTERM_NO_SPECIAL = 4,
REPTERM_NO_SIMPLIFY = 8,
};
enum {
FSK_KEYCODE = 0x01,
FSK_KEEP_X_KEY = 0x02,
FSK_IN_STRING = 0x04,
FSK_SIMPLIFY = 0x08,
};
# 48 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/lua/executor.h" 1
# 1 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/lauxlib.h" 1
# 12 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/lauxlib.h"
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 13 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/lauxlib.h" 2
# 1 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/lua.h" 1
# 13 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/lua.h"
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 14 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/lua.h" 2
# 1 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/luaconf.h" 1
# 12 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/luaconf.h"
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/limits.h" 1 3 4
# 13 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/luaconf.h" 2
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 14 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/luaconf.h" 2
# 17 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/lua.h" 2
# 51 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/lua.h"
typedef struct lua_State lua_State;
typedef int (*lua_CFunction) (lua_State *L);
typedef const char * (*lua_Reader) (lua_State *L, void *ud, size_t *sz);
typedef int (*lua_Writer) (lua_State *L, const void* p, size_t sz, void* ud);
typedef void * (*lua_Alloc) (void *ud, void *ptr, size_t osize, size_t nsize);
# 100 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/lua.h"
typedef double lua_Number;
typedef ptrdiff_t lua_Integer;
extern lua_State *(lua_newstate) (lua_Alloc f, void *ud);
extern void (lua_close) (lua_State *L);
extern lua_State *(lua_newthread) (lua_State *L);
extern lua_CFunction (lua_atpanic) (lua_State *L, lua_CFunction panicf);
extern int (lua_gettop) (lua_State *L);
extern void (lua_settop) (lua_State *L, int idx);
extern void (lua_pushvalue) (lua_State *L, int idx);
extern void (lua_remove) (lua_State *L, int idx);
extern void (lua_insert) (lua_State *L, int idx);
extern void (lua_replace) (lua_State *L, int idx);
extern int (lua_checkstack) (lua_State *L, int sz);
extern void (lua_xmove) (lua_State *from, lua_State *to, int n);
extern int (lua_isnumber) (lua_State *L, int idx);
extern int (lua_isstring) (lua_State *L, int idx);
extern int (lua_iscfunction) (lua_State *L, int idx);
extern int (lua_isuserdata) (lua_State *L, int idx);
extern int (lua_type) (lua_State *L, int idx);
extern const char *(lua_typename) (lua_State *L, int tp);
extern int (lua_equal) (lua_State *L, int idx1, int idx2);
extern int (lua_rawequal) (lua_State *L, int idx1, int idx2);
extern int (lua_lessthan) (lua_State *L, int idx1, int idx2);
extern lua_Number (lua_tonumber) (lua_State *L, int idx);
extern lua_Integer (lua_tointeger) (lua_State *L, int idx);
extern int (lua_toboolean) (lua_State *L, int idx);
extern const char *(lua_tolstring) (lua_State *L, int idx, size_t *len);
extern size_t (lua_objlen) (lua_State *L, int idx);
extern lua_CFunction (lua_tocfunction) (lua_State *L, int idx);
extern void *(lua_touserdata) (lua_State *L, int idx);
extern lua_State *(lua_tothread) (lua_State *L, int idx);
extern const void *(lua_topointer) (lua_State *L, int idx);
extern void (lua_pushnil) (lua_State *L);
extern void (lua_pushnumber) (lua_State *L, lua_Number n);
extern void (lua_pushinteger) (lua_State *L, lua_Integer n);
extern void (lua_pushlstring) (lua_State *L, const char *s, size_t l);
extern void (lua_pushstring) (lua_State *L, const char *s);
extern const char *(lua_pushvfstring) (lua_State *L, const char *fmt,
va_list argp);
extern const char *(lua_pushfstring) (lua_State *L, const char *fmt, ...);
extern void (lua_pushcclosure) (lua_State *L, lua_CFunction fn, int n);
extern void (lua_pushboolean) (lua_State *L, int b);
extern void (lua_pushlightuserdata) (lua_State *L, void *p);
extern int (lua_pushthread) (lua_State *L);
extern void (lua_gettable) (lua_State *L, int idx);
extern void (lua_getfield) (lua_State *L, int idx, const char *k);
extern void (lua_rawget) (lua_State *L, int idx);
extern void (lua_rawgeti) (lua_State *L, int idx, int n);
extern void (lua_createtable) (lua_State *L, int narr, int nrec);
extern void *(lua_newuserdata) (lua_State *L, size_t sz);
extern int (lua_getmetatable) (lua_State *L, int objindex);
extern void (lua_getfenv) (lua_State *L, int idx);
extern void (lua_settable) (lua_State *L, int idx);
extern void (lua_setfield) (lua_State *L, int idx, const char *k);
extern void (lua_rawset) (lua_State *L, int idx);
extern void (lua_rawseti) (lua_State *L, int idx, int n);
extern int (lua_setmetatable) (lua_State *L, int objindex);
extern int (lua_setfenv) (lua_State *L, int idx);
extern void (lua_call) (lua_State *L, int nargs, int nresults);
extern int (lua_pcall) (lua_State *L, int nargs, int nresults, int errfunc);
extern int (lua_cpcall) (lua_State *L, lua_CFunction func, void *ud);
extern int (lua_load) (lua_State *L, lua_Reader reader, void *dt,
const char *chunkname);
extern int (lua_dump) (lua_State *L, lua_Writer writer, void *data);
extern int (lua_yield) (lua_State *L, int nresults);
extern int (lua_resume) (lua_State *L, int narg);
extern int (lua_status) (lua_State *L);
# 232 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/lua.h"
extern int (lua_gc) (lua_State *L, int what, int data);
extern int (lua_error) (lua_State *L);
extern int (lua_next) (lua_State *L, int idx);
extern void (lua_concat) (lua_State *L, int n);
extern lua_Alloc (lua_getallocf) (lua_State *L, void **ud);
extern void lua_setallocf (lua_State *L, lua_Alloc f, void *ud);
# 300 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/lua.h"
extern void lua_setlevel (lua_State *from, lua_State *to);
# 328 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/lua.h"
typedef struct lua_Debug lua_Debug;
typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);
extern int lua_getstack (lua_State *L, int level, lua_Debug *ar);
extern int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar);
extern const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int n);
extern const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int n);
extern const char *lua_getupvalue (lua_State *L, int funcindex, int n);
extern const char *lua_setupvalue (lua_State *L, int funcindex, int n);
extern int lua_sethook (lua_State *L, lua_Hook func, int mask, int count);
extern lua_Hook lua_gethook (lua_State *L);
extern int lua_gethookmask (lua_State *L);
extern int lua_gethookcount (lua_State *L);
extern void *lua_upvalueid (lua_State *L, int idx, int n);
extern void lua_upvaluejoin (lua_State *L, int idx1, int n1, int idx2, int n2);
extern int lua_loadx (lua_State *L, lua_Reader reader, void *dt,
const char *chunkname, const char *mode);
extern const lua_Number *lua_version (lua_State *L);
extern void lua_copy (lua_State *L, int fromidx, int toidx);
extern lua_Number lua_tonumberx (lua_State *L, int idx, int *isnum);
extern lua_Integer lua_tointegerx (lua_State *L, int idx, int *isnum);
extern int lua_isyieldable (lua_State *L);
struct lua_Debug {
int event;
const char *name;
const char *namewhat;
const char *what;
const char *source;
int currentline;
int nups;
int linedefined;
int lastlinedefined;
char short_src[60];
int i_ci;
};
# 16 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/lauxlib.h" 2
typedef struct luaL_Reg {
const char *name;
lua_CFunction func;
} luaL_Reg;
extern void (luaL_openlib) (lua_State *L, const char *libname,
const luaL_Reg *l, int nup);
extern void (luaL_register) (lua_State *L, const char *libname,
const luaL_Reg *l);
extern int (luaL_getmetafield) (lua_State *L, int obj, const char *e);
extern int (luaL_callmeta) (lua_State *L, int obj, const char *e);
extern int (luaL_typerror) (lua_State *L, int narg, const char *tname);
extern int (luaL_argerror) (lua_State *L, int numarg, const char *extramsg);
extern const char *(luaL_checklstring) (lua_State *L, int numArg,
size_t *l);
extern const char *(luaL_optlstring) (lua_State *L, int numArg,
const char *def, size_t *l);
extern lua_Number (luaL_checknumber) (lua_State *L, int numArg);
extern lua_Number (luaL_optnumber) (lua_State *L, int nArg, lua_Number def);
extern lua_Integer (luaL_checkinteger) (lua_State *L, int numArg);
extern lua_Integer (luaL_optinteger) (lua_State *L, int nArg,
lua_Integer def);
extern void (luaL_checkstack) (lua_State *L, int sz, const char *msg);
extern void (luaL_checktype) (lua_State *L, int narg, int t);
extern void (luaL_checkany) (lua_State *L, int narg);
extern int (luaL_newmetatable) (lua_State *L, const char *tname);
extern void *(luaL_checkudata) (lua_State *L, int ud, const char *tname);
extern void (luaL_where) (lua_State *L, int lvl);
extern int (luaL_error) (lua_State *L, const char *fmt, ...);
extern int (luaL_checkoption) (lua_State *L, int narg, const char *def,
const char *const lst[]);
extern int (luaL_ref) (lua_State *L, int t);
extern void (luaL_unref) (lua_State *L, int t, int ref);
extern int (luaL_loadfile) (lua_State *L, const char *filename);
extern int (luaL_loadbuffer) (lua_State *L, const char *buff, size_t sz,
const char *name);
extern int (luaL_loadstring) (lua_State *L, const char *s);
extern lua_State *(luaL_newstate) (void);
extern const char *(luaL_gsub) (lua_State *L, const char *s, const char *p,
const char *r);
extern const char *(luaL_findtable) (lua_State *L, int idx,
const char *fname, int szhint);
extern int luaL_fileresult(lua_State *L, int stat, const char *fname);
extern int luaL_execresult(lua_State *L, int stat);
extern int (luaL_loadfilex) (lua_State *L, const char *filename,
const char *mode);
extern int (luaL_loadbufferx) (lua_State *L, const char *buff, size_t sz,
const char *name, const char *mode);
extern void luaL_traceback (lua_State *L, lua_State *L1, const char *msg,
int level);
extern void (luaL_setfuncs) (lua_State *L, const luaL_Reg *l, int nup);
extern void (luaL_pushmodule) (lua_State *L, const char *modname,
int sizehint);
extern void *(luaL_testudata) (lua_State *L, int ud, const char *tname);
extern void (luaL_setmetatable) (lua_State *L, const char *tname);
# 135 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/lauxlib.h"
typedef struct luaL_Buffer {
char *p;
int lvl;
lua_State *L;
char buffer[(
# 139 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/lauxlib.h" 3 4
8192
# 139 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/lauxlib.h"
> 16384 ? 8192 :
# 139 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/lauxlib.h" 3 4
8192
# 139 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/lauxlib.h"
)];
} luaL_Buffer;
# 151 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/lauxlib.h"
extern void (luaL_buffinit) (lua_State *L, luaL_Buffer *B);
extern char *(luaL_prepbuffer) (luaL_Buffer *B);
extern void (luaL_addlstring) (luaL_Buffer *B, const char *s, size_t l);
extern void (luaL_addstring) (luaL_Buffer *B, const char *s);
extern void (luaL_addvalue) (luaL_Buffer *B);
extern void (luaL_pushresult) (luaL_Buffer *B);
# 4 "/home/ubuntu/neovim/src/nvim/lua/executor.h" 2
# 1 "/home/ubuntu/neovim/.deps/usr/include/luajit-2.1/lua.h" 1
# 5 "/home/ubuntu/neovim/src/nvim/lua/executor.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/func_attr.h" 1
# 11 "/home/ubuntu/neovim/src/nvim/lua/executor.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/usercmd.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/usercmd.h" 2
# 13 "/home/ubuntu/neovim/src/nvim/usercmd.h"
typedef struct {
char *uc_name;
uint32_t uc_argt;
char *uc_rep;
int64_t uc_def;
int uc_compl;
cmd_addr_T uc_addr_type;
sctx_T uc_script_ctx;
char *uc_compl_arg;
LuaRef uc_compl_luaref;
LuaRef uc_preview_luaref;
LuaRef uc_luaref;
} ucmd_T;
enum { UC_BUFFER = 1, };
extern garray_T ucmds;
# 14 "/home/ubuntu/neovim/src/nvim/lua/executor.h" 2
void nlua_add_api_functions(lua_State *lstate) __attribute__((nonnull));
typedef struct {
LuaRef nil_ref;
LuaRef empty_dict_ref;
int ref_count;
} nlua_ref_state_t;
# 39 "/home/ubuntu/neovim/src/nvim/lua/executor.h"
typedef enum {
kRetObject,
kRetNilBool,
kRetLuaref,
} LuaRetMode;
# 53 "/home/ubuntu/neovim/src/nvim/lua/executor.h"
extern nlua_ref_state_t *nlua_global_refs ;
extern
# 54 "/home/ubuntu/neovim/src/nvim/lua/executor.h" 3 4
_Bool
# 54 "/home/ubuntu/neovim/src/nvim/lua/executor.h"
nlua_disable_preload ;
# 50 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/main.h" 1
# 11 "/home/ubuntu/neovim/src/nvim/main.h"
extern Loop main_loop;
typedef struct {
int argc;
char **argv;
char *use_vimrc;
# 19 "/home/ubuntu/neovim/src/nvim/main.h" 3 4
_Bool
# 19 "/home/ubuntu/neovim/src/nvim/main.h"
clean;
int n_commands;
char *commands[10];
char cmds_tofree[10];
int n_pre_commands;
char *pre_commands[10];
char *luaf;
int lua_arg0;
int edit_type;
char *tagname;
char *use_ef;
# 33 "/home/ubuntu/neovim/src/nvim/main.h" 3 4
_Bool
# 33 "/home/ubuntu/neovim/src/nvim/main.h"
input_istext;
int no_swap_file;
int use_debug_break_level;
int window_count;
int window_layout;
int diff_mode;
char *listen_addr;
int remote;
char *server_addr;
char *scriptin;
char *scriptout;
# 47 "/home/ubuntu/neovim/src/nvim/main.h" 3 4
_Bool
# 47 "/home/ubuntu/neovim/src/nvim/main.h"
scriptout_append;
# 48 "/home/ubuntu/neovim/src/nvim/main.h" 3 4
_Bool
# 48 "/home/ubuntu/neovim/src/nvim/main.h"
had_stdin_file;
} mparm_T;
# 52 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/mark.h" 1
# 1 "/usr/include/locale.h" 1 3 4
# 28 "/usr/include/locale.h" 3 4
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 29 "/usr/include/locale.h" 2 3 4
# 1 "/usr/include/aarch64-linux-gnu/bits/locale.h" 1 3 4
# 30 "/usr/include/locale.h" 2 3 4
# 51 "/usr/include/locale.h" 3 4
# 51 "/usr/include/locale.h" 3 4
struct lconv
{
char *decimal_point;
char *thousands_sep;
char *grouping;
char *int_curr_symbol;
char *currency_symbol;
char *mon_decimal_point;
char *mon_thousands_sep;
char *mon_grouping;
char *positive_sign;
char *negative_sign;
char int_frac_digits;
char frac_digits;
char p_cs_precedes;
char p_sep_by_space;
char n_cs_precedes;
char n_sep_by_space;
char p_sign_posn;
char n_sign_posn;
char int_p_cs_precedes;
char int_p_sep_by_space;
char int_n_cs_precedes;
char int_n_sep_by_space;
char int_p_sign_posn;
char int_n_sign_posn;
# 118 "/usr/include/locale.h" 3 4
};
extern char *setlocale (int __category, const char *__locale) __attribute__ ((__nothrow__ , __leaf__));
extern struct lconv *localeconv (void) __attribute__ ((__nothrow__ , __leaf__));
# 141 "/usr/include/locale.h" 3 4
extern locale_t newlocale (int __category_mask, const char *__locale,
locale_t __base) __attribute__ ((__nothrow__ , __leaf__));
# 176 "/usr/include/locale.h" 3 4
extern locale_t duplocale (locale_t __dataset) __attribute__ ((__nothrow__ , __leaf__));
extern void freelocale (locale_t __dataset) __attribute__ ((__nothrow__ , __leaf__));
extern locale_t uselocale (locale_t __dataset) __attribute__ ((__nothrow__ , __leaf__));
# 4 "/home/ubuntu/neovim/src/nvim/mark.h" 2
# 18 "/home/ubuntu/neovim/src/nvim/mark.h"
# 18 "/home/ubuntu/neovim/src/nvim/mark.h"
static inline int mark_global_index(const char name)
FUNC_ATTR_CONST
{
return (((unsigned)(name) >= 'A' && (unsigned)(name) <= 'Z')
? (name - 'A')
: (ascii_isdigit(name)
? (('z' - 'a' + 1) + (name - '0'))
: -1));
}
static inline int mark_local_index(const char name)
FUNC_ATTR_CONST
{
return (((unsigned)(name) >= 'a' && (unsigned)(name) <= 'z')
? (name - 'a')
: (name == '"'
? ('z' - 'a' + 1)
: (name == '^'
? ('z' - 'a' + 1) + 1
: (name == '.'
? ('z' - 'a' + 1) + 2
: -1))));
}
extern xfmark_T namedfm[(('z' - 'a' + 1) + ('9' - '0' + 1))] ;
# 54 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/mbyte.h" 1
# 19 "/home/ubuntu/neovim/src/nvim/mbyte.h"
enum {
kInvalidByteCells = 4,
};
# 30 "/home/ubuntu/neovim/src/nvim/mbyte.h"
extern const uint8_t utf8len_tab_zero[256];
extern const uint8_t utf8len_tab[256];
# 57 "/home/ubuntu/neovim/src/nvim/mbyte.h"
static inline
# 57 "/home/ubuntu/neovim/src/nvim/mbyte.h" 3 4
_Bool
# 57 "/home/ubuntu/neovim/src/nvim/mbyte.h"
utf_is_trail_byte(uint8_t const byte)
FUNC_ATTR_CONST FUNC_ATTR_ALWAYS_INLINE
{
return (uint8_t)(byte & 0xC0U) == 0x80U;
}
# 71 "/home/ubuntu/neovim/src/nvim/mbyte.h"
static inline CharInfo utf_ptr2CharInfo(char const *const p_in)
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_ALWAYS_INLINE
{
uint8_t const *const p = (uint8_t const *)p_in;
uint8_t const first = *p;
if (first < 0x80) {
return (CharInfo){ .value = first, .len = 1 };
} else {
int len = utf8len_tab[first];
int32_t const code_point = utf_ptr2CharInfo_impl(p, (uintptr_t)len);
if (code_point < 0) {
len = 1;
}
return (CharInfo){ .value = code_point, .len = len };
}
}
static inline StrCharInfo utfc_next(StrCharInfo cur)
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_PURE
{
int32_t prev_code = cur.chr.value;
uint8_t *next = (uint8_t *)(cur.ptr + cur.chr.len);
while (
# 98 "/home/ubuntu/neovim/src/nvim/mbyte.h" 3 4
1
# 98 "/home/ubuntu/neovim/src/nvim/mbyte.h"
) {
if (__builtin_expect((*next < 0x80U), (
# 99 "/home/ubuntu/neovim/src/nvim/mbyte.h" 3 4
1
# 99 "/home/ubuntu/neovim/src/nvim/mbyte.h"
))) {
return (StrCharInfo){
.ptr = (char *)next,
.chr = (CharInfo){ .value = *next, .len = 1 },
};
}
uint8_t const next_len = utf8len_tab[*next];
int32_t const next_code = utf_ptr2CharInfo_impl(next, (uintptr_t)next_len);
if (!utf_char_composinglike(prev_code, next_code)) {
return (StrCharInfo){
.ptr = (char *)next,
.chr = (CharInfo){ .value = next_code, .len = (next_code < 0 ? 1 : next_len) },
};
}
prev_code = next_code;
next += next_len;
}
}
static inline StrCharInfo utf_ptr2StrCharInfo(char *ptr)
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_ALWAYS_INLINE FUNC_ATTR_PURE
{
return (StrCharInfo){ .ptr = ptr, .chr = utf_ptr2CharInfo(ptr) };
}
# 56 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/memline.h" 1
# 57 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/move.h" 1
# 60 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/ops.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 5 "/home/ubuntu/neovim/src/nvim/ops.h" 2
# 1 "/home/ubuntu/neovim/src/nvim/normal_defs.h" 1
# 11 "/home/ubuntu/neovim/src/nvim/normal_defs.h"
typedef enum {
kMTCharWise = 0,
kMTLineWise = 1,
kMTBlockWise = 2,
kMTUnknown = -1,
} MotionType;
typedef struct {
int op_type;
int regname;
MotionType motion_type;
int motion_force;
# 24 "/home/ubuntu/neovim/src/nvim/normal_defs.h" 3 4
_Bool
# 24 "/home/ubuntu/neovim/src/nvim/normal_defs.h"
use_reg_one;
# 26 "/home/ubuntu/neovim/src/nvim/normal_defs.h" 3 4
_Bool
# 26 "/home/ubuntu/neovim/src/nvim/normal_defs.h"
inclusive;
# 28 "/home/ubuntu/neovim/src/nvim/normal_defs.h" 3 4
_Bool
# 28 "/home/ubuntu/neovim/src/nvim/normal_defs.h"
end_adjusted;
pos_T start;
pos_T end;
pos_T cursor_start;
linenr_T line_count;
# 35 "/home/ubuntu/neovim/src/nvim/normal_defs.h" 3 4
_Bool
# 35 "/home/ubuntu/neovim/src/nvim/normal_defs.h"
empty;
# 36 "/home/ubuntu/neovim/src/nvim/normal_defs.h" 3 4
_Bool
# 36 "/home/ubuntu/neovim/src/nvim/normal_defs.h"
is_VIsual;
colnr_T start_vcol;
colnr_T end_vcol;
int prev_opcount;
int prev_count0;
# 41 "/home/ubuntu/neovim/src/nvim/normal_defs.h" 3 4
_Bool
# 41 "/home/ubuntu/neovim/src/nvim/normal_defs.h"
excl_tr_ws;
} oparg_T;
typedef struct {
oparg_T *oap;
int prechar;
int cmdchar;
int nchar;
int ncharC1;
int ncharC2;
int extra_char;
int opcount;
int count0;
int count1;
int arg;
int retval;
char *searchbuf;
} cmdarg_T;
enum {
CA_COMMAND_BUSY = 1,
CA_NO_ADJ_OP_END = 2,
};
enum {
REPLACE_CR_NCHAR = -1,
REPLACE_NL_NCHAR = -2,
};
enum { SHOWCMD_COLS = 10, };
enum { SHOWCMD_BUFLEN = SHOWCMD_COLS + 1 + 30, };
# 12 "/home/ubuntu/neovim/src/nvim/ops.h" 2
struct block_def {
int startspaces;
int endspaces;
int textlen;
char *textstart;
colnr_T textcol;
colnr_T start_vcol;
colnr_T end_vcol;
int is_short;
int is_MAX;
int is_oneChar;
int pre_whitesp;
int pre_whitesp_c;
colnr_T end_char_vcols;
colnr_T start_char_vcols;
};
typedef int (*Indenter)(void);
enum {
PUT_FIXINDENT = 1,
PUT_CURSEND = 2,
PUT_CURSLINE = 4,
PUT_LINE = 8,
PUT_LINE_SPLIT = 16,
PUT_LINE_FORWARD = 32,
PUT_BLOCK_INNER = 64,
};
# 56 "/home/ubuntu/neovim/src/nvim/ops.h"
enum {
DELETION_REGISTER = 36,
NUM_SAVED_REGISTERS = 37,
STAR_REGISTER = 37,
PLUS_REGISTER = 38,
NUM_REGISTERS = 39,
};
enum {
OP_NOP = 0,
OP_DELETE = 1,
OP_YANK = 2,
OP_CHANGE = 3,
OP_LSHIFT = 4,
OP_RSHIFT = 5,
OP_FILTER = 6,
OP_TILDE = 7,
OP_INDENT = 8,
OP_FORMAT = 9,
OP_COLON = 10,
OP_UPPER = 11,
OP_LOWER = 12,
OP_JOIN = 13,
OP_JOIN_NS = 14,
OP_ROT13 = 15,
OP_REPLACE = 16,
OP_INSERT = 17,
OP_APPEND = 18,
OP_FOLD = 19,
OP_FOLDOPEN = 20,
OP_FOLDOPENREC = 21,
OP_FOLDCLOSE = 22,
OP_FOLDCLOSEREC = 23,
OP_FOLDDEL = 24,
OP_FOLDDELREC = 25,
OP_FORMAT2 = 26,
OP_FUNCTION = 27,
OP_NR_ADD = 28,
OP_NR_SUB = 29,
};
enum GRegFlags {
kGRegNoExpr = 1,
kGRegExprSrc = 2,
kGRegList = 4,
};
typedef struct {
char **y_array;
size_t y_size;
MotionType y_type;
colnr_T y_width;
Timestamp timestamp;
AdditionalData *additional_data;
} yankreg_T;
typedef enum {
YREG_PASTE,
YREG_YANK,
YREG_PUT,
} yreg_mode_t;
# 133 "/home/ubuntu/neovim/src/nvim/ops.h"
static inline int op_reg_index(const int regname)
FUNC_ATTR_CONST
{
if (ascii_isdigit(regname)) {
return regname - '0';
} else if (((unsigned)(regname) >= 'a' && (unsigned)(regname) <= 'z')) {
return ((uint8_t)(regname) - 'a') + 10;
} else if (((unsigned)(regname) >= 'A' && (unsigned)(regname) <= 'Z')) {
return ((uint8_t)(regname) - 'A') + 10;
} else if (regname == '-') {
return DELETION_REGISTER;
} else if (regname == '*') {
return STAR_REGISTER;
} else if (regname == '+') {
return PLUS_REGISTER;
} else {
return -1;
}
}
static inline
# 156 "/home/ubuntu/neovim/src/nvim/ops.h" 3 4
_Bool
# 156 "/home/ubuntu/neovim/src/nvim/ops.h"
is_literal_register(const int regname)
FUNC_ATTR_CONST
{
return regname == '*' || regname == '+';
}
extern LuaRef repeat_luaref ;
# 62 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/option.h" 1
# 22 "/home/ubuntu/neovim/src/nvim/option.h"
enum {
PV_BOTH = 0x1000,
PV_WIN = 0x2000,
PV_BUF = 0x4000,
PV_MASK = 0x0fff,
};
typedef enum {
PV_NONE = 0,
PV_MAXVAL = 0xffff,
} idopt_T;
typedef struct {
char *fullname;
char *shortname;
uint32_t flags;
OptTypeFlags type_flags;
void *var;
idopt_T indir;
# 52 "/home/ubuntu/neovim/src/nvim/option.h" 3 4
_Bool
# 52 "/home/ubuntu/neovim/src/nvim/option.h"
hidden;
# 53 "/home/ubuntu/neovim/src/nvim/option.h" 3 4
_Bool
# 53 "/home/ubuntu/neovim/src/nvim/option.h"
immutable;
opt_did_set_cb_T opt_did_set_cb;
opt_expand_cb_T opt_expand_cb;
union {
int boolean;
OptInt number;
char *string;
} def_val;
LastSet last_set;
} vimoption_T;
enum {
BCO_ENTER = 1,
BCO_ALWAYS = 2,
BCO_NOHELP = 4,
};
typedef enum {
OPT_GLOBAL = 0x01,
OPT_LOCAL = 0x02,
OPT_MODELINE = 0x04,
OPT_WINONLY = 0x08,
OPT_NOWIN = 0x10,
OPT_ONECOLUMN = 0x20,
OPT_NO_REDRAW = 0x40,
OPT_SKIPRTP = 0x80,
} OptionSetFlags;
enum {
SOPT_GLOBAL = 0x01,
SOPT_WIN = 0x02,
SOPT_BUF = 0x04,
};
static inline const char *optval_type_get_name(const OptValType type)
{
switch (type) {
case kOptValTypeNil:
return "nil";
case kOptValTypeBoolean:
return "boolean";
case kOptValTypeNumber:
return "number";
case kOptValTypeString:
return "string";
}
__builtin_unreachable();
}
# 63 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/optionstr.h" 1
typedef enum {
kFillchars,
kListchars,
} CharsOption;
# 65 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/os/fs.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/os/fs.h" 2
# 66 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/os/lang.h" 1
# 67 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/os/os.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/os/os.h" 2
# 13 "/home/ubuntu/neovim/src/nvim/os/os.h"
extern char *default_vim_dir;
extern char *default_vimruntime_dir;
extern char *default_lib_dir;
# 68 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/os/shell.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/os/shell.h" 2
typedef enum {
kShellOptFilter = 1,
kShellOptExpand = 2,
kShellOptDoOut = 4,
kShellOptSilent = 8,
kShellOptRead = 16,
kShellOptWrite = 32,
kShellOptHideMess = 64,
} ShellOpts;
# 70 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/path.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/path.h" 2
enum {
EW_DIR = 0x01,
EW_FILE = 0x02,
EW_NOTFOUND = 0x04,
EW_ADDSLASH = 0x08,
EW_KEEPALL = 0x10,
EW_SILENT = 0x20,
EW_EXEC = 0x40,
EW_PATH = 0x80,
EW_ICASE = 0x100,
EW_NOERROR = 0x200,
EW_NOTWILD = 0x400,
EW_KEEPDOLLAR = 0x800,
EW_ALLLINKS = 0x1000,
EW_SHELLCMD = 0x2000,
EW_DODOT = 0x4000,
EW_EMPTYOK = 0x8000,
EW_NOTENV = 0x10000,
EW_CDPATH = 0x20000,
EW_NOBREAK = 0x40000,
};
typedef enum file_comparison {
kEqualFiles = 1,
kDifferentFiles = 2,
kBothFilesMissing = 4,
kOneFileMissing = 6,
kEqualFileNames = 7,
} FileComparison;
# 71 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/profile.h" 1
# 73 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/quickfix.h" 1
# 11 "/home/ubuntu/neovim/src/nvim/quickfix.h"
enum {
VGR_GLOBAL = 1,
VGR_NOJUMP = 2,
VGR_FUZZY = 4,
};
# 74 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/regexp.h" 1
# 75 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/runtime.h" 1
# 1 "/usr/lib/gcc/aarch64-linux-gnu/9/include/stddef.h" 1 3 4
# 4 "/home/ubuntu/neovim/src/nvim/runtime.h" 2
# 17 "/home/ubuntu/neovim/src/nvim/runtime.h"
extern garray_T exestack;
extern garray_T script_items;
enum {
DOSO_NONE = 0,
DOSO_VIMRC = 1,
};
enum {
DIP_ALL = 0x01,
DIP_DIR = 0x02,
DIP_ERR = 0x04,
DIP_START = 0x08,
DIP_OPT = 0x10,
DIP_NORTP = 0x20,
DIP_NOAFTER = 0x40,
DIP_AFTER = 0x80,
DIP_DIRFILE = 0x200,
};
# 77 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/tag.h" 1
enum { LSIZE = 512, };
enum {
DT_TAG = 1,
DT_POP = 2,
DT_NEXT = 3,
DT_PREV = 4,
DT_FIRST = 5,
DT_LAST = 6,
DT_SELECT = 7,
DT_HELP = 8,
DT_JUMP = 9,
DT_LTAG = 11,
DT_FREE = 99,
};
enum {
TAG_HELP = 1,
TAG_NAMES = 2,
TAG_REGEXP = 4,
TAG_NOIC = 8,
TAG_VERBOSE = 32,
TAG_INS_COMP = 64,
TAG_KEEP_LANG = 128,
TAG_NO_TAGFUNC = 256,
TAG_MANY = 300,
};
typedef struct {
char *tn_tags;
char *tn_np;
int tn_did_filefind_init;
int tn_hf_idx;
void *tn_search_ctx;
} tagname_T;
# 80 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/version.h" 1
extern char *Version;
extern char *longVersion;
extern char *version_cflags;
# 82 "/home/ubuntu/neovim/src/nvim/eval.c" 2
# 1 "/home/ubuntu/neovim/src/nvim/window.h" 1
# 12 "/home/ubuntu/neovim/src/nvim/window.h"
enum {
WSP_ROOM = 0x01,
WSP_VERT = 0x02,
WSP_HOR = 0x04,
WSP_TOP = 0x08,
WSP_BOT = 0x10,
WSP_HELP = 0x20,
WSP_BELOW = 0x40,
WSP_ABOVE = 0x80,
WSP_NEWLOC = 0x100,
WSP_NOENTER = 0x200,
};
enum {
MIN_COLUMNS = 12,
MIN_LINES = 2,
STATUS_HEIGHT = 1,
};
enum {
LOWEST_WIN_ID = 1000,
};
extern int tabpage_move_disallowed ;
extern
# 39 "/home/ubuntu/neovim/src/nvim/window.h" 3 4
_Bool
# 39 "/home/ubuntu/neovim/src/nvim/window.h"
p_ch_was_zero ;
# 84 "/home/ubuntu/neovim/src/nvim/eval.c" 2
static const char *e_missbrac = "E111: Missing ']'";
static const char *e_list_end = "E697: Missing end of List ']': %s";
static const char e_cannot_slice_dictionary[]
= "E719: Cannot slice a Dictionary";
static const char e_cannot_index_special_variable[]
= "E909: Cannot index a special variable";
static const char *e_nowhitespace
= "E274: No white space allowed before parenthesis";
static const char e_cannot_index_a_funcref[]
= "E695: Cannot index a Funcref";
static const char e_variable_nested_too_deep_for_making_copy[]
= "E698: Variable nested too deep for making a copy";
static const char e_string_list_or_blob_required[]
= "E1098: String, List or Blob required";
static const char e_expression_too_recursive_str[]
= "E1169: Expression too recursive: %s";
static const char e_dot_can_only_be_used_on_dictionary_str[]
= "E1203: Dot can only be used on a dictionary: %s";
static const char e_empty_function_name[]
= "E1192: Empty function name";
static const char e_argument_of_str_must_be_list_string_dictionary_or_blob[]
= "E1250: Argument of %s must be a List, String, Dictionary or Blob";
static const char e_cannot_use_partial_here[]
= "E1265: Cannot use a partial here";
static char * const namespace_char = "abglstvw";
static ScopeDictDictItem globvars_var;
static hashtab_T compat_hashtab;
# 124 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 124 "/home/ubuntu/neovim/src/nvim/eval.c"
*eval_lavars_used =
# 124 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 124 "/home/ubuntu/neovim/src/nvim/eval.c"
;
static int echo_attr = 0;
typedef struct {
int fi_semicolon;
int fi_varcount;
listwatch_T fi_lw;
list_T *fi_list;
int fi_bi;
blob_T *fi_blob;
char *fi_string;
int fi_byte_idx;
} forinfo_T;
typedef enum {
GLV_FAIL,
GLV_OK,
GLV_STOP,
} glv_status_T;
# 171 "/home/ubuntu/neovim/src/nvim/eval.c"
static struct vimvar {
char *vv_name;
struct { typval_T di_tv; uint8_t di_flags; char di_key[16 + 1]; } vv_di;
char vv_flags;
} vimvars[] = {
[VV_COUNT] = { .vv_name = ("count"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_COUNT1] = { .vv_name = ("count1"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_PREVCOUNT] = { .vv_name = ("prevcount"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_ERRMSG] = { .vv_name = ("errmsg"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (0), },
[VV_WARNINGMSG] = { .vv_name = ("warningmsg"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (0), },
[VV_STATUSMSG] = { .vv_name = ("statusmsg"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (0), },
[VV_SHELL_ERROR] = { .vv_name = ("shell_error"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_THIS_SESSION] = { .vv_name = ("this_session"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (0), },
[VV_VERSION] = { .vv_name = ("version"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (1 + 2), },
[VV_LNUM] = { .vv_name = ("lnum"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (4), },
[VV_TERMRESPONSE] = { .vv_name = ("termresponse"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_TERMREQUEST] = { .vv_name = ("termrequest"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_FNAME] = { .vv_name = ("fname"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_LANG] = { .vv_name = ("lang"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_LC_TIME] = { .vv_name = ("lc_time"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_CTYPE] = { .vv_name = ("ctype"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_CC_FROM] = { .vv_name = ("charconvert_from"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_CC_TO] = { .vv_name = ("charconvert_to"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_FNAME_IN] = { .vv_name = ("fname_in"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_FNAME_OUT] = { .vv_name = ("fname_out"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_FNAME_NEW] = { .vv_name = ("fname_new"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_FNAME_DIFF] = { .vv_name = ("fname_diff"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_CMDARG] = { .vv_name = ("cmdarg"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_FOLDSTART] = { .vv_name = ("foldstart"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (4), },
[VV_FOLDEND] = { .vv_name = ("foldend"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (4), },
[VV_FOLDDASHES] = { .vv_name = ("folddashes"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (4), },
[VV_FOLDLEVEL] = { .vv_name = ("foldlevel"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (4), },
[VV_PROGNAME] = { .vv_name = ("progname"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_SEND_SERVER] = { .vv_name = ("servername"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_DYING] = { .vv_name = ("dying"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_EXCEPTION] = { .vv_name = ("exception"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_THROWPOINT] = { .vv_name = ("throwpoint"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_REG] = { .vv_name = ("register"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_CMDBANG] = { .vv_name = ("cmdbang"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_INSERTMODE] = { .vv_name = ("insertmode"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_VAL] = { .vv_name = ("val"), .vv_di = { .di_tv = { .v_type = (VAR_UNKNOWN) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_KEY] = { .vv_name = ("key"), .vv_di = { .di_tv = { .v_type = (VAR_UNKNOWN) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_PROFILING] = { .vv_name = ("profiling"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_FCS_REASON] = { .vv_name = ("fcs_reason"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_FCS_CHOICE] = { .vv_name = ("fcs_choice"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (0), },
[VV_BEVAL_BUFNR] = { .vv_name = ("beval_bufnr"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_BEVAL_WINNR] = { .vv_name = ("beval_winnr"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_BEVAL_WINID] = { .vv_name = ("beval_winid"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_BEVAL_LNUM] = { .vv_name = ("beval_lnum"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_BEVAL_COL] = { .vv_name = ("beval_col"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_BEVAL_TEXT] = { .vv_name = ("beval_text"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_SCROLLSTART] = { .vv_name = ("scrollstart"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (0), },
[VV_SWAPNAME] = { .vv_name = ("swapname"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_SWAPCHOICE] = { .vv_name = ("swapchoice"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (0), },
[VV_SWAPCOMMAND] = { .vv_name = ("swapcommand"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_CHAR] = { .vv_name = ("char"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (0), },
[VV_MOUSE_WIN] = { .vv_name = ("mouse_win"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (0), },
[VV_MOUSE_WINID] = { .vv_name = ("mouse_winid"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (0), },
[VV_MOUSE_LNUM] = { .vv_name = ("mouse_lnum"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (0), },
[VV_MOUSE_COL] = { .vv_name = ("mouse_col"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (0), },
[VV_OP] = { .vv_name = ("operator"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_SEARCHFORWARD] = { .vv_name = ("searchforward"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (0), },
[VV_HLSEARCH] = { .vv_name = ("hlsearch"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (0), },
[VV_OLDFILES] = { .vv_name = ("oldfiles"), .vv_di = { .di_tv = { .v_type = (VAR_LIST) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (0), },
[VV_WINDOWID] = { .vv_name = ("windowid"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (4), },
[VV_PROGPATH] = { .vv_name = ("progpath"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_COMPLETED_ITEM] = { .vv_name = ("completed_item"), .vv_di = { .di_tv = { .v_type = (VAR_DICT) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (0), },
[VV_OPTION_NEW] = { .vv_name = ("option_new"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_OPTION_OLD] = { .vv_name = ("option_old"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_OPTION_OLDLOCAL] = { .vv_name = ("option_oldlocal"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_OPTION_OLDGLOBAL] = { .vv_name = ("option_oldglobal"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_OPTION_COMMAND] = { .vv_name = ("option_command"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_OPTION_TYPE] = { .vv_name = ("option_type"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_ERRORS] = { .vv_name = ("errors"), .vv_di = { .di_tv = { .v_type = (VAR_LIST) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (0), },
[VV_FALSE] = { .vv_name = ("false"), .vv_di = { .di_tv = { .v_type = (VAR_BOOL) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_TRUE] = { .vv_name = ("true"), .vv_di = { .di_tv = { .v_type = (VAR_BOOL) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_NULL] = { .vv_name = ("null"), .vv_di = { .di_tv = { .v_type = (VAR_SPECIAL) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_NUMBERMAX] = { .vv_name = ("numbermax"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_NUMBERMIN] = { .vv_name = ("numbermin"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_NUMBERSIZE] = { .vv_name = ("numbersize"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_VIM_DID_ENTER] = { .vv_name = ("vim_did_enter"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_TESTING] = { .vv_name = ("testing"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (0), },
[VV_TYPE_NUMBER] = { .vv_name = ("t_number"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_TYPE_STRING] = { .vv_name = ("t_string"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_TYPE_FUNC] = { .vv_name = ("t_func"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_TYPE_LIST] = { .vv_name = ("t_list"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_TYPE_DICT] = { .vv_name = ("t_dict"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_TYPE_FLOAT] = { .vv_name = ("t_float"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_TYPE_BOOL] = { .vv_name = ("t_bool"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_TYPE_BLOB] = { .vv_name = ("t_blob"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_EVENT] = { .vv_name = ("event"), .vv_di = { .di_tv = { .v_type = (VAR_DICT) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_ECHOSPACE] = { .vv_name = ("echospace"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_ARGV] = { .vv_name = ("argv"), .vv_di = { .di_tv = { .v_type = (VAR_LIST) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_COLLATE] = { .vv_name = ("collate"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_EXITING] = { .vv_name = ("exiting"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_MAXCOL] = { .vv_name = ("maxcol"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_STDERR] = { .vv_name = ("stderr"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_MSGPACK_TYPES] = { .vv_name = ("msgpack_types"), .vv_di = { .di_tv = { .v_type = (VAR_DICT) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV__NULL_STRING] = { .vv_name = ("_null_string"), .vv_di = { .di_tv = { .v_type = (VAR_STRING) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV__NULL_LIST] = { .vv_name = ("_null_list"), .vv_di = { .di_tv = { .v_type = (VAR_LIST) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV__NULL_DICT] = { .vv_name = ("_null_dict"), .vv_di = { .di_tv = { .v_type = (VAR_DICT) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV__NULL_BLOB] = { .vv_name = ("_null_blob"), .vv_di = { .di_tv = { .v_type = (VAR_BLOB) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_LUA] = { .vv_name = ("lua"), .vv_di = { .di_tv = { .v_type = (VAR_PARTIAL) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_RELNUM] = { .vv_name = ("relnum"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
[VV_VIRTNUM] = { .vv_name = ("virtnum"), .vv_di = { .di_tv = { .v_type = (VAR_NUMBER) }, .di_flags = 0, .di_key = { 0 }, }, .vv_flags = (2), },
};
# 300 "/home/ubuntu/neovim/src/nvim/eval.c"
static ScopeDictDictItem vimvars_var;
static partial_T *vvlua_partial;
typedef enum {
FILTERMAP_FILTER,
FILTERMAP_MAP,
FILTERMAP_MAPNEW,
FILTERMAP_FOREACH,
} filtermap_T;
static uint64_t last_timer_id = 1;
static Map_uint64_tptr_t timers = { { { 0, 0, 0, 0, 0, 0,
# 320 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 320 "/home/ubuntu/neovim/src/nvim/eval.c"
},
# 320 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 320 "/home/ubuntu/neovim/src/nvim/eval.c"
},
# 320 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 320 "/home/ubuntu/neovim/src/nvim/eval.c"
};
static const char *const msgpack_type_names[] = {
[kMPNil] = "nil",
[kMPBoolean] = "boolean",
[kMPInteger] = "integer",
[kMPFloat] = "float",
[kMPString] = "string",
[kMPArray] = "array",
[kMPMap] = "map",
[kMPExt] = "ext",
};
const list_T *eval_msgpack_type_lists[] = {
[kMPNil] =
# 333 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 333 "/home/ubuntu/neovim/src/nvim/eval.c"
,
[kMPBoolean] =
# 334 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 334 "/home/ubuntu/neovim/src/nvim/eval.c"
,
[kMPInteger] =
# 335 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 335 "/home/ubuntu/neovim/src/nvim/eval.c"
,
[kMPFloat] =
# 336 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 336 "/home/ubuntu/neovim/src/nvim/eval.c"
,
[kMPString] =
# 337 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 337 "/home/ubuntu/neovim/src/nvim/eval.c"
,
[kMPArray] =
# 338 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 338 "/home/ubuntu/neovim/src/nvim/eval.c"
,
[kMPMap] =
# 339 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 339 "/home/ubuntu/neovim/src/nvim/eval.c"
,
[kMPExt] =
# 340 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 340 "/home/ubuntu/neovim/src/nvim/eval.c"
,
};
dict_T *get_v_event(save_v_event_T *sve)
{
dict_T *v_event = get_vim_var_dict(VV_EVENT);
if (v_event->dv_hashtab.ht_used > 0) {
sve->sve_did_save =
# 349 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 349 "/home/ubuntu/neovim/src/nvim/eval.c"
;
sve->sve_hashtab = v_event->dv_hashtab;
hash_init(&v_event->dv_hashtab);
} else {
sve->sve_did_save =
# 353 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 353 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
return v_event;
}
void restore_v_event(dict_T *v_event, save_v_event_T *sve)
{
tv_dict_free_contents(v_event);
if (sve->sve_did_save) {
v_event->dv_hashtab = sve->sve_hashtab;
} else {
hash_init(&v_event->dv_hashtab);
}
}
varnumber_T num_divide(varnumber_T n1, varnumber_T n2)
FUNC_ATTR_CONST FUNC_ATTR_WARN_UNUSED_RESULT
{
varnumber_T result;
if (n2 == 0) {
if (n1 == 0) {
result =
# 376 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(-9223372036854775807L -1)
# 376 "/home/ubuntu/neovim/src/nvim/eval.c"
;
} else if (n1 < 0) {
result = -
# 378 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(9223372036854775807L)
# 378 "/home/ubuntu/neovim/src/nvim/eval.c"
;
} else {
result =
# 380 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(9223372036854775807L)
# 380 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
} else if (n1 ==
# 382 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(-9223372036854775807L -1)
# 382 "/home/ubuntu/neovim/src/nvim/eval.c"
&& n2 == -1) {
result =
# 385 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(9223372036854775807L)
# 385 "/home/ubuntu/neovim/src/nvim/eval.c"
;
} else {
result = n1 / n2;
}
return result;
}
varnumber_T num_modulus(varnumber_T n1, varnumber_T n2)
FUNC_ATTR_CONST FUNC_ATTR_WARN_UNUSED_RESULT
{
return (n2 == 0) ? 0 : (n1 % n2);
}
void eval_init(void)
{
vimvars[VV_VERSION].vv_di.di_tv.vval.v_number = (8 * 100 + 1);
init_var_dict(&globvardict, &globvars_var, VAR_DEF_SCOPE);
init_var_dict(&vimvardict, &vimvars_var, VAR_SCOPE);
vimvardict.dv_lock = VAR_FIXED;
hash_init(&compat_hashtab);
func_init();
for (size_t i = 0; i < ((sizeof(vimvars)/sizeof((vimvars)[0])) / ((size_t)(!(sizeof(vimvars) % sizeof((vimvars)[0]))))); i++) {
struct vimvar *p = &vimvars[i];
# 414 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void) sizeof ((
# 414 "/home/ubuntu/neovim/src/nvim/eval.c"
strlen(p->vv_name) <= 16
# 414 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
) ? 1 : 0), __extension__ ({ if (
# 414 "/home/ubuntu/neovim/src/nvim/eval.c"
strlen(p->vv_name) <= 16
# 414 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
) ; else __assert_fail (
# 414 "/home/ubuntu/neovim/src/nvim/eval.c"
"strlen(p->vv_name) <= VIMVAR_KEY_LEN"
# 414 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
, "/home/ubuntu/neovim/src/nvim/eval.c", 414, __extension__ __PRETTY_FUNCTION__); }))
# 414 "/home/ubuntu/neovim/src/nvim/eval.c"
;
strcpy((char *)(p->vv_di.di_key), (char *)(p->vv_name));
if (p->vv_flags & 2) {
p->vv_di.di_flags = DI_FLAGS_RO | DI_FLAGS_FIX;
} else if (p->vv_flags & 4) {
p->vv_di.di_flags = DI_FLAGS_RO_SBX | DI_FLAGS_FIX;
} else {
p->vv_di.di_flags = DI_FLAGS_FIX;
}
if (p->vv_di.di_tv.v_type != VAR_UNKNOWN) {
hash_add(&vimvardict.dv_hashtab, p->vv_di.di_key);
}
if (p->vv_flags & 1) {
hash_add(&compat_hashtab, p->vv_di.di_key);
}
}
vimvars[VV_VERSION].vv_di.di_tv.vval.v_number = (8 * 100 + 1);
dict_T *const msgpack_types_dict = tv_dict_alloc();
for (size_t i = 0; i < ((sizeof(msgpack_type_names)/sizeof((msgpack_type_names)[0])) / ((size_t)(!(sizeof(msgpack_type_names) % sizeof((msgpack_type_names)[0]))))); i++) {
list_T *const type_list = tv_list_alloc(0);
tv_list_set_lock(type_list, VAR_FIXED);
tv_list_ref(type_list);
dictitem_T *const di = tv_dict_item_alloc(msgpack_type_names[i]);
di->di_flags |= DI_FLAGS_RO|DI_FLAGS_FIX;
di->di_tv = (typval_T) {
.v_type = VAR_LIST,
.vval = { .v_list = type_list, },
};
eval_msgpack_type_lists[i] = type_list;
if (tv_dict_add(msgpack_types_dict, di) == 0) {
abort();
}
}
msgpack_types_dict->dv_lock = VAR_FIXED;
set_vim_var_dict(VV_MSGPACK_TYPES, msgpack_types_dict);
set_vim_var_dict(VV_COMPLETED_ITEM, tv_dict_alloc_lock(VAR_FIXED));
set_vim_var_dict(VV_EVENT, tv_dict_alloc_lock(VAR_FIXED));
set_vim_var_list(VV_ERRORS, tv_list_alloc(kListLenUnknown));
set_vim_var_nr(VV_STDERR, 2);
set_vim_var_nr(VV_SEARCHFORWARD, 1);
set_vim_var_nr(VV_HLSEARCH, 1);
set_vim_var_nr(VV_COUNT1, 1);
set_vim_var_nr(VV_TYPE_NUMBER, VAR_TYPE_NUMBER);
set_vim_var_nr(VV_TYPE_STRING, VAR_TYPE_STRING);
set_vim_var_nr(VV_TYPE_FUNC, VAR_TYPE_FUNC);
set_vim_var_nr(VV_TYPE_LIST, VAR_TYPE_LIST);
set_vim_var_nr(VV_TYPE_DICT, VAR_TYPE_DICT);
set_vim_var_nr(VV_TYPE_FLOAT, VAR_TYPE_FLOAT);
set_vim_var_nr(VV_TYPE_BOOL, VAR_TYPE_BOOL);
set_vim_var_nr(VV_TYPE_BLOB, VAR_TYPE_BLOB);
set_vim_var_bool(VV_FALSE, kBoolVarFalse);
set_vim_var_bool(VV_TRUE, kBoolVarTrue);
set_vim_var_special(VV_NULL, kSpecialVarNull);
set_vim_var_nr(VV_NUMBERMAX,
# 475 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(9223372036854775807L)
# 475 "/home/ubuntu/neovim/src/nvim/eval.c"
);
set_vim_var_nr(VV_NUMBERMIN,
# 476 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(-9223372036854775807L -1)
# 476 "/home/ubuntu/neovim/src/nvim/eval.c"
);
set_vim_var_nr(VV_NUMBERSIZE, sizeof(varnumber_T) * 8);
set_vim_var_special(VV_EXITING, kSpecialVarNull);
set_vim_var_nr(VV_MAXCOL, MAXCOL);
set_vim_var_nr(VV_ECHOSPACE, sc_col - 1);
vimvars[VV_LUA].vv_di.di_tv.v_type = VAR_PARTIAL;
vvlua_partial = xcalloc(1, sizeof(partial_T));
vimvars[VV_LUA].vv_di.di_tv.vval.v_partial = vvlua_partial;
vvlua_partial->pt_name = xmallocz(0);
vvlua_partial->pt_refcount++;
set_reg_var(0);
}
# 547 "/home/ubuntu/neovim/src/nvim/eval.c"
void set_internal_string_var(const char *name, char *value)
FUNC_ATTR_NONNULL_ARG(1)
{
typval_T tv = {
.v_type = VAR_STRING,
.vval.v_string = value,
};
set_var(name, strlen(name), &tv,
# 555 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 555 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
static lval_T *redir_lval =
# 558 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 558 "/home/ubuntu/neovim/src/nvim/eval.c"
;
static garray_T redir_ga;
static char *redir_endp =
# 560 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 560 "/home/ubuntu/neovim/src/nvim/eval.c"
;
static char *redir_varname =
# 561 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 561 "/home/ubuntu/neovim/src/nvim/eval.c"
;
int var_redir_start(char *name,
# 568 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 568 "/home/ubuntu/neovim/src/nvim/eval.c"
append)
{
if (!eval_isnamec1(*name)) {
emsg(gettext(e_invarg));
return 0;
}
redir_varname = xstrdup(name);
redir_lval = xcalloc(1, sizeof(lval_T));
ga_init(&redir_ga, (int)sizeof(char), 500);
redir_endp = get_lval(redir_varname,
# 585 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 585 "/home/ubuntu/neovim/src/nvim/eval.c"
, redir_lval,
# 585 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 585 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 585 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 585 "/home/ubuntu/neovim/src/nvim/eval.c"
,
0, 2);
if (redir_endp ==
# 587 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 587 "/home/ubuntu/neovim/src/nvim/eval.c"
|| redir_lval->ll_name ==
# 587 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 588 "/home/ubuntu/neovim/src/nvim/eval.c"
|| *redir_endp != '\000') {
clear_lval(redir_lval);
if (redir_endp !=
# 590 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 590 "/home/ubuntu/neovim/src/nvim/eval.c"
&& *redir_endp != '\000') {
semsg(gettext(e_trailing_arg), redir_endp);
} else {
semsg(gettext(e_invarg2), name);
}
redir_endp =
# 596 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 596 "/home/ubuntu/neovim/src/nvim/eval.c"
;
var_redir_stop();
return 0;
}
const int called_emsg_before = called_emsg;
did_emsg =
# 604 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 604 "/home/ubuntu/neovim/src/nvim/eval.c"
;
typval_T tv;
tv.v_type = VAR_STRING;
tv.vval.v_string = "";
if (append) {
set_var_lval(redir_lval, redir_endp, &tv,
# 609 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 609 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 609 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 609 "/home/ubuntu/neovim/src/nvim/eval.c"
, ".");
} else {
set_var_lval(redir_lval, redir_endp, &tv,
# 611 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 611 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 611 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 611 "/home/ubuntu/neovim/src/nvim/eval.c"
, "=");
}
clear_lval(redir_lval);
if (called_emsg > called_emsg_before) {
redir_endp =
# 615 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 615 "/home/ubuntu/neovim/src/nvim/eval.c"
;
var_redir_stop();
return 0;
}
return 1;
}
# 630 "/home/ubuntu/neovim/src/nvim/eval.c"
void var_redir_str(const char *value, int value_len)
{
if (redir_lval ==
# 632 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 632 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return;
}
int len;
if (value_len == -1) {
len = (int)strlen(value);
} else {
len = value_len;
}
ga_grow(&redir_ga, len);
memmove((char *)redir_ga.ga_data + redir_ga.ga_len, value, (size_t)len);
redir_ga.ga_len += len;
}
void var_redir_stop(void)
{
if (redir_lval !=
# 652 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 652 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
if (redir_endp !=
# 654 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 654 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
ga_append(&redir_ga, '\000');
typval_T tv;
tv.v_type = VAR_STRING;
tv.vval.v_string = redir_ga.ga_data;
redir_endp = get_lval(redir_varname,
# 661 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 661 "/home/ubuntu/neovim/src/nvim/eval.c"
, redir_lval,
# 662 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 662 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 662 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 662 "/home/ubuntu/neovim/src/nvim/eval.c"
, 0, 2);
if (redir_endp !=
# 663 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 663 "/home/ubuntu/neovim/src/nvim/eval.c"
&& redir_lval->ll_name !=
# 663 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 663 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
set_var_lval(redir_lval, redir_endp, &tv,
# 664 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 664 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 664 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 664 "/home/ubuntu/neovim/src/nvim/eval.c"
, ".");
}
clear_lval(redir_lval);
}
do { void **ptr_ = (void **)&(redir_ga.ga_data); xfree(*ptr_); *ptr_ =
# 670 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 670 "/home/ubuntu/neovim/src/nvim/eval.c"
; (void)(*ptr_); } while (0);
do { void **ptr_ = (void **)&(redir_lval); xfree(*ptr_); *ptr_ =
# 672 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 672 "/home/ubuntu/neovim/src/nvim/eval.c"
; (void)(*ptr_); } while (0);
}
do { void **ptr_ = (void **)&(redir_varname); xfree(*ptr_); *ptr_ =
# 674 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 674 "/home/ubuntu/neovim/src/nvim/eval.c"
; (void)(*ptr_); } while (0);
}
int eval_charconvert(const char *const enc_from, const char *const enc_to,
const char *const fname_from, const char *const fname_to)
{
const sctx_T saved_sctx = current_sctx;
set_vim_var_string(VV_CC_FROM, enc_from, -1);
set_vim_var_string(VV_CC_TO, enc_to, -1);
set_vim_var_string(VV_FNAME_IN, fname_from, -1);
set_vim_var_string(VV_FNAME_OUT, fname_to, -1);
sctx_T *ctx = get_option_sctx(kOptCharconvert);
if (ctx !=
# 687 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 687 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
current_sctx = *ctx;
}
# 691 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 691 "/home/ubuntu/neovim/src/nvim/eval.c"
err =
# 691 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 691 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (eval_to_bool(p_ccv, &err,
# 692 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 692 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 692 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 692 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 692 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 692 "/home/ubuntu/neovim/src/nvim/eval.c"
)) {
err =
# 693 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 693 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
set_vim_var_string(VV_CC_FROM,
# 696 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 696 "/home/ubuntu/neovim/src/nvim/eval.c"
, -1);
set_vim_var_string(VV_CC_TO,
# 697 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 697 "/home/ubuntu/neovim/src/nvim/eval.c"
, -1);
set_vim_var_string(VV_FNAME_IN,
# 698 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 698 "/home/ubuntu/neovim/src/nvim/eval.c"
, -1);
set_vim_var_string(VV_FNAME_OUT,
# 699 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 699 "/home/ubuntu/neovim/src/nvim/eval.c"
, -1);
current_sctx = saved_sctx;
if (err) {
return 0;
}
return 1;
}
void eval_diff(const char *const origfile, const char *const newfile, const char *const outfile)
{
const sctx_T saved_sctx = current_sctx;
set_vim_var_string(VV_FNAME_IN, origfile, -1);
set_vim_var_string(VV_FNAME_NEW, newfile, -1);
set_vim_var_string(VV_FNAME_OUT, outfile, -1);
sctx_T *ctx = get_option_sctx(kOptDiffexpr);
if (ctx !=
# 716 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 716 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
current_sctx = *ctx;
}
typval_T *tv = eval_expr_ext(p_dex,
# 721 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 721 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 721 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 721 "/home/ubuntu/neovim/src/nvim/eval.c"
);
tv_free(tv);
set_vim_var_string(VV_FNAME_IN,
# 724 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 724 "/home/ubuntu/neovim/src/nvim/eval.c"
, -1);
set_vim_var_string(VV_FNAME_NEW,
# 725 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 725 "/home/ubuntu/neovim/src/nvim/eval.c"
, -1);
set_vim_var_string(VV_FNAME_OUT,
# 726 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 726 "/home/ubuntu/neovim/src/nvim/eval.c"
, -1);
current_sctx = saved_sctx;
}
void eval_patch(const char *const origfile, const char *const difffile, const char *const outfile)
{
const sctx_T saved_sctx = current_sctx;
set_vim_var_string(VV_FNAME_IN, origfile, -1);
set_vim_var_string(VV_FNAME_DIFF, difffile, -1);
set_vim_var_string(VV_FNAME_OUT, outfile, -1);
sctx_T *ctx = get_option_sctx(kOptPatchexpr);
if (ctx !=
# 738 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 738 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
current_sctx = *ctx;
}
typval_T *tv = eval_expr_ext(p_pex,
# 743 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 743 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 743 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 743 "/home/ubuntu/neovim/src/nvim/eval.c"
);
tv_free(tv);
set_vim_var_string(VV_FNAME_IN,
# 746 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 746 "/home/ubuntu/neovim/src/nvim/eval.c"
, -1);
set_vim_var_string(VV_FNAME_DIFF,
# 747 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 747 "/home/ubuntu/neovim/src/nvim/eval.c"
, -1);
set_vim_var_string(VV_FNAME_OUT,
# 748 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 748 "/home/ubuntu/neovim/src/nvim/eval.c"
, -1);
current_sctx = saved_sctx;
}
void fill_evalarg_from_eap(evalarg_T *evalarg, exarg_T *eap,
# 752 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 752 "/home/ubuntu/neovim/src/nvim/eval.c"
skip)
{
*evalarg = (evalarg_T){ .eval_flags = skip ? 0 : EVAL_EVALUATE };
if (eap ==
# 756 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 756 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return;
}
if (getline_equal(eap->ea_getline, eap->cookie, getsourceline)) {
evalarg->eval_getline = eap->ea_getline;
evalarg->eval_cookie = eap->cookie;
}
}
# 772 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 772 "/home/ubuntu/neovim/src/nvim/eval.c"
eval_to_bool(char *arg,
# 772 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 772 "/home/ubuntu/neovim/src/nvim/eval.c"
*error, exarg_T *eap, const
# 772 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 772 "/home/ubuntu/neovim/src/nvim/eval.c"
skip,
const
# 773 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 773 "/home/ubuntu/neovim/src/nvim/eval.c"
use_simple_function)
{
typval_T tv;
# 776 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 776 "/home/ubuntu/neovim/src/nvim/eval.c"
retval =
# 776 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 776 "/home/ubuntu/neovim/src/nvim/eval.c"
;
evalarg_T evalarg;
fill_evalarg_from_eap(&evalarg, eap, skip);
if (skip) {
emsg_skip++;
}
int r = use_simple_function ? eval0_simple_funccal(arg, &tv, eap, &evalarg)
: eval0(arg, &tv, eap, &evalarg);
if (r == 0) {
*error =
# 787 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 787 "/home/ubuntu/neovim/src/nvim/eval.c"
;
} else {
*error =
# 789 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 789 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (!skip) {
retval = (tv_get_number_chk(&tv, error) != 0);
tv_clear(&tv);
}
}
if (skip) {
emsg_skip--;
}
clear_evalarg(&evalarg, eap);
return retval;
}
static int eval1_emsg(char **arg, typval_T *rettv, exarg_T *eap)
FUNC_ATTR_NONNULL_ARG(1, 2)
{
const char *const start = *arg;
const int did_emsg_before = did_emsg;
const int called_emsg_before = called_emsg;
evalarg_T evalarg;
fill_evalarg_from_eap(&evalarg, eap, eap !=
# 812 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 812 "/home/ubuntu/neovim/src/nvim/eval.c"
&& eap->skip);
const int ret = eval1(arg, rettv, &evalarg);
if (ret == 0) {
if (!aborting()
&& did_emsg == did_emsg_before
&& called_emsg == called_emsg_before) {
semsg(gettext(e_invexpr2), start);
}
}
clear_evalarg(&evalarg, eap);
return ret;
}
# 832 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 832 "/home/ubuntu/neovim/src/nvim/eval.c"
eval_expr_valid_arg(const typval_T *const tv)
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_CONST
{
return tv->v_type != VAR_UNKNOWN
&& (tv->v_type != VAR_STRING || (tv->vval.v_string !=
# 836 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 836 "/home/ubuntu/neovim/src/nvim/eval.c"
&& *tv->vval.v_string != '\000'));
}
static int eval_expr_partial(const typval_T *expr, typval_T *argv, int argc, typval_T *rettv)
FUNC_ATTR_NONNULL_ALL
{
partial_T *const partial = expr->vval.v_partial;
if (partial ==
# 846 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 846 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return 0;
}
const char *const s = partial_name(partial);
if (s ==
# 851 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 851 "/home/ubuntu/neovim/src/nvim/eval.c"
|| *s == '\000') {
return 0;
}
funcexe_T funcexe = (funcexe_T) { .fe_argv_func =
# 855 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 855 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_firstline = 0, .fe_lastline = 0, .fe_doesrange =
# 855 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 855 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_evaluate =
# 855 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 855 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_partial =
# 855 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 855 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_selfdict =
# 855 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 855 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_basetv =
# 855 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 855 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_found_var =
# 855 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 855 "/home/ubuntu/neovim/src/nvim/eval.c"
, };
funcexe.fe_evaluate =
# 856 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 856 "/home/ubuntu/neovim/src/nvim/eval.c"
;
funcexe.fe_partial = partial;
if (call_func(s, -1, rettv, argc, argv, &funcexe) == 0) {
return 0;
}
return 1;
}
static int eval_expr_func(const typval_T *expr, typval_T *argv, int argc, typval_T *rettv)
FUNC_ATTR_NONNULL_ALL
{
char buf[NUMBUFLEN];
const char *const s = (expr->v_type == VAR_FUNC
? expr->vval.v_string
: tv_get_string_buf_chk(expr, buf));
if (s ==
# 875 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 875 "/home/ubuntu/neovim/src/nvim/eval.c"
|| *s == '\000') {
return 0;
}
funcexe_T funcexe = (funcexe_T) { .fe_argv_func =
# 879 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 879 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_firstline = 0, .fe_lastline = 0, .fe_doesrange =
# 879 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 879 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_evaluate =
# 879 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 879 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_partial =
# 879 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 879 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_selfdict =
# 879 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 879 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_basetv =
# 879 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 879 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_found_var =
# 879 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 879 "/home/ubuntu/neovim/src/nvim/eval.c"
, };
funcexe.fe_evaluate =
# 880 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 880 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (call_func(s, -1, rettv, argc, argv, &funcexe) == 0) {
return 0;
}
return 1;
}
static int eval_expr_string(const typval_T *expr, typval_T *rettv)
FUNC_ATTR_NONNULL_ALL
{
char buf[NUMBUFLEN];
char *s = (char *)tv_get_string_buf_chk(expr, buf);
if (s ==
# 895 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 895 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return 0;
}
s = skipwhite(s);
if (eval1_emsg(&s, rettv,
# 900 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 900 "/home/ubuntu/neovim/src/nvim/eval.c"
) == 0) {
return 0;
}
if (*skipwhite(s) != '\000') {
tv_clear(rettv);
semsg(gettext(e_invexpr2), s);
return 0;
}
return 1;
}
int eval_expr_typval(const typval_T *expr,
# 918 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 918 "/home/ubuntu/neovim/src/nvim/eval.c"
want_func, typval_T *argv, int argc,
typval_T *rettv)
FUNC_ATTR_NONNULL_ALL
{
if (expr->v_type == VAR_PARTIAL) {
return eval_expr_partial(expr, argv, argc, rettv);
} else if (expr->v_type == VAR_FUNC || want_func) {
return eval_expr_func(expr, argv, argc, rettv);
} else {
return eval_expr_string(expr, rettv);
}
return 1;
}
# 935 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 935 "/home/ubuntu/neovim/src/nvim/eval.c"
eval_expr_to_bool(const typval_T *expr,
# 935 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 935 "/home/ubuntu/neovim/src/nvim/eval.c"
*error)
FUNC_ATTR_NONNULL_ARG(1, 2)
{
typval_T argv, rettv;
if (eval_expr_typval(expr,
# 940 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 940 "/home/ubuntu/neovim/src/nvim/eval.c"
, &argv, 0, &rettv) == 0) {
*error =
# 941 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 941 "/home/ubuntu/neovim/src/nvim/eval.c"
;
return
# 942 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 942 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
const
# 944 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 944 "/home/ubuntu/neovim/src/nvim/eval.c"
res = (tv_get_number_chk(&rettv, error) != 0);
tv_clear(&rettv);
return res;
}
# 957 "/home/ubuntu/neovim/src/nvim/eval.c"
char *eval_to_string_skip(char *arg, exarg_T *eap, const
# 957 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 957 "/home/ubuntu/neovim/src/nvim/eval.c"
skip)
FUNC_ATTR_MALLOC FUNC_ATTR_NONNULL_ARG(1) FUNC_ATTR_WARN_UNUSED_RESULT
{
typval_T tv;
char *retval;
evalarg_T evalarg;
fill_evalarg_from_eap(&evalarg, eap, skip);
if (skip) {
emsg_skip++;
}
if (eval0(arg, &tv, eap, &evalarg) == 0 || skip) {
retval =
# 969 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 969 "/home/ubuntu/neovim/src/nvim/eval.c"
;
} else {
retval = xstrdup(tv_get_string(&tv));
tv_clear(&tv);
}
if (skip) {
emsg_skip--;
}
clear_evalarg(&evalarg, eap);
return retval;
}
int skip_expr(char **pp, evalarg_T *const evalarg)
{
const int save_flags = evalarg ==
# 987 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 987 "/home/ubuntu/neovim/src/nvim/eval.c"
? 0 : evalarg->eval_flags;
if (evalarg !=
# 990 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 990 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
evalarg->eval_flags &= ~EVAL_EVALUATE;
}
*pp = skipwhite(*pp);
typval_T rettv;
int res = eval1(pp, &rettv,
# 996 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 996 "/home/ubuntu/neovim/src/nvim/eval.c"
);
if (evalarg !=
# 998 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 998 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
evalarg->eval_flags = save_flags;
}
return res;
}
static char *typval2string(typval_T *tv,
# 1010 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1010 "/home/ubuntu/neovim/src/nvim/eval.c"
join_list)
{
if (join_list && tv->v_type == VAR_LIST) {
garray_T ga;
ga_init(&ga, (int)sizeof(char), 80);
if (tv->vval.v_list !=
# 1015 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1015 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
tv_list_join(&ga, tv->vval.v_list, "\n");
if (tv_list_len(tv->vval.v_list) > 0) {
ga_append(&ga, '\012');
}
}
ga_append(&ga, '\000');
return (char *)ga.ga_data;
} else if (tv->v_type == VAR_LIST || tv->v_type == VAR_DICT) {
return encode_tv2string(tv,
# 1024 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1024 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
return xstrdup(tv_get_string(tv));
}
char *eval_to_string_eap(char *arg, const
# 1034 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1034 "/home/ubuntu/neovim/src/nvim/eval.c"
join_list, exarg_T *eap,
const
# 1035 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1035 "/home/ubuntu/neovim/src/nvim/eval.c"
use_simple_function)
{
typval_T tv;
char *retval;
evalarg_T evalarg;
fill_evalarg_from_eap(&evalarg, eap, eap !=
# 1041 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1041 "/home/ubuntu/neovim/src/nvim/eval.c"
&& eap->skip);
int r = use_simple_function ? eval0_simple_funccal(arg, &tv,
# 1042 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1042 "/home/ubuntu/neovim/src/nvim/eval.c"
, &evalarg)
: eval0(arg, &tv,
# 1043 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1043 "/home/ubuntu/neovim/src/nvim/eval.c"
, &evalarg);
if (r == 0) {
retval =
# 1045 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1045 "/home/ubuntu/neovim/src/nvim/eval.c"
;
} else {
retval = typval2string(&tv, join_list);
tv_clear(&tv);
}
clear_evalarg(&EVALARG_EVALUATE,
# 1050 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1050 "/home/ubuntu/neovim/src/nvim/eval.c"
);
return retval;
}
char *eval_to_string(char *arg, const
# 1055 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1055 "/home/ubuntu/neovim/src/nvim/eval.c"
join_list, const
# 1055 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1055 "/home/ubuntu/neovim/src/nvim/eval.c"
use_simple_function)
{
return eval_to_string_eap(arg, join_list,
# 1057 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1057 "/home/ubuntu/neovim/src/nvim/eval.c"
, use_simple_function);
}
char *eval_to_string_safe(char *arg, const
# 1064 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1064 "/home/ubuntu/neovim/src/nvim/eval.c"
use_sandbox, const
# 1064 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1064 "/home/ubuntu/neovim/src/nvim/eval.c"
use_simple_function)
{
char *retval;
funccal_entry_T funccal_entry;
save_funccal(&funccal_entry);
if (use_sandbox) {
sandbox++;
}
textlock++;
retval = eval_to_string(arg,
# 1074 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 1074 "/home/ubuntu/neovim/src/nvim/eval.c"
, use_simple_function);
if (use_sandbox) {
sandbox--;
}
textlock--;
restore_funccal();
return retval;
}
varnumber_T eval_to_number(char *expr, const
# 1087 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1087 "/home/ubuntu/neovim/src/nvim/eval.c"
use_simple_function)
{
typval_T rettv;
varnumber_T retval;
char *p = skipwhite(expr);
int r = 2;
emsg_off++;
if (use_simple_function) {
r = may_call_simple_func(expr, &rettv);
}
if (r == 2) {
r = eval1(&p, &rettv, &EVALARG_EVALUATE);
}
if (r == 0) {
retval = -1;
} else {
retval = tv_get_number_chk(&rettv,
# 1105 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1105 "/home/ubuntu/neovim/src/nvim/eval.c"
);
tv_clear(&rettv);
}
emsg_off--;
return retval;
}
typval_T *eval_expr(char *arg, exarg_T *eap)
{
return eval_expr_ext(arg, eap,
# 1119 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 1119 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
static typval_T *eval_expr_ext(char *arg, exarg_T *eap, const
# 1122 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1122 "/home/ubuntu/neovim/src/nvim/eval.c"
use_simple_function)
{
typval_T *tv = xmalloc(sizeof(*tv));
evalarg_T evalarg;
fill_evalarg_from_eap(&evalarg, eap, eap !=
# 1127 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1127 "/home/ubuntu/neovim/src/nvim/eval.c"
&& eap->skip);
int r = 2;
if (use_simple_function) {
r = eval0_simple_funccal(arg, tv, eap, &evalarg);
}
if (r == 2) {
r = eval0(arg, tv, eap, &evalarg);
}
if (r == 0) {
do { void **ptr_ = (void **)&(tv); xfree(*ptr_); *ptr_ =
# 1139 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1139 "/home/ubuntu/neovim/src/nvim/eval.c"
; (void)(*ptr_); } while (0);
}
clear_evalarg(&evalarg, eap);
return tv;
}
void list_vim_vars(int *first)
{
list_hashtable_vars(&vimvardict.dv_hashtab, "v:",
# 1149 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 1149 "/home/ubuntu/neovim/src/nvim/eval.c"
, first);
}
void list_script_vars(int *first)
{
if (current_sctx.sc_sid > 0 && current_sctx.sc_sid <= script_items.ga_len) {
list_hashtable_vars(&(((((scriptitem_T **)script_items.ga_data)[(current_sctx.sc_sid) - 1])->sn_vars)->sv_dict.dv_hashtab), "s:",
# 1156 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 1156 "/home/ubuntu/neovim/src/nvim/eval.c"
, first);
}
}
# 1160 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1160 "/home/ubuntu/neovim/src/nvim/eval.c"
is_vimvarht(const hashtab_T *ht)
{
return ht == &vimvardict.dv_hashtab;
}
# 1165 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1165 "/home/ubuntu/neovim/src/nvim/eval.c"
is_compatht(const hashtab_T *ht)
{
return ht == &compat_hashtab;
}
void prepare_vimvar(int idx, typval_T *save_tv)
{
*save_tv = vimvars[idx].vv_di.di_tv;
vimvars[idx].vv_di.di_tv.vval.v_string =
# 1176 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1176 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (vimvars[idx].vv_di.di_tv.v_type == VAR_UNKNOWN) {
hash_add(&vimvardict.dv_hashtab, vimvars[idx].vv_di.di_key);
}
}
void restore_vimvar(int idx, typval_T *save_tv)
{
vimvars[idx].vv_di.di_tv = *save_tv;
if (vimvars[idx].vv_di.di_tv.v_type != VAR_UNKNOWN) {
return;
}
hashitem_T *hi = hash_find(&vimvardict.dv_hashtab, vimvars[idx].vv_di.di_key);
if (((hi)->hi_key ==
# 1193 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1193 "/home/ubuntu/neovim/src/nvim/eval.c"
|| (hi)->hi_key == &hash_removed)) {
internal_error("restore_vimvar()");
} else {
hash_remove(&vimvardict.dv_hashtab, hi);
}
}
list_T *eval_spell_expr(char *badword, char *expr)
{
typval_T save_val;
typval_T rettv;
list_T *list =
# 1208 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1208 "/home/ubuntu/neovim/src/nvim/eval.c"
;
char *p = skipwhite(expr);
const sctx_T saved_sctx = current_sctx;
prepare_vimvar(VV_VAL, &save_val);
vimvars[VV_VAL].vv_di.di_tv.v_type = VAR_STRING;
vimvars[VV_VAL].vv_di.di_tv.vval.v_string = badword;
if (p_verbose == 0) {
emsg_off++;
}
sctx_T *ctx = get_option_sctx(kOptSpellsuggest);
if (ctx !=
# 1220 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1220 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
current_sctx = *ctx;
}
int r = may_call_simple_func(p, &rettv);
if (r == 2) {
r = eval1(&p, &rettv, &EVALARG_EVALUATE);
}
if (r == 1) {
if (rettv.v_type != VAR_LIST) {
tv_clear(&rettv);
} else {
list = rettv.vval.v_list;
}
}
if (p_verbose == 0) {
emsg_off--;
}
restore_vimvar(VV_VAL, &save_val);
current_sctx = saved_sctx;
return list;
}
# 1258 "/home/ubuntu/neovim/src/nvim/eval.c"
int get_spellword(list_T *const list, const char **ret_word)
{
if (tv_list_len(list) != 2) {
emsg(gettext("E5700: Expression from 'spellsuggest' must yield lists with " "exactly two values")
);
return -1;
}
*ret_word = tv_list_find_str(list, 0);
if (*ret_word ==
# 1266 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1266 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return -1;
}
return (int)tv_list_find_nr(list, -1,
# 1269 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1269 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
int call_vim_function(const char *func, int argc, typval_T *argv, typval_T *rettv)
FUNC_ATTR_NONNULL_ALL
{
int ret;
int len = (int)strlen(func);
partial_T *pt =
# 1282 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1282 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (len >= 6 && !memcmp(func, "v:lua.", 6)) {
func += 6;
len = check_luafunc_name(func,
# 1286 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 1286 "/home/ubuntu/neovim/src/nvim/eval.c"
);
if (len == 0) {
ret = 0;
goto fail;
}
pt = vvlua_partial;
}
rettv->v_type = VAR_UNKNOWN;
funcexe_T funcexe = (funcexe_T) { .fe_argv_func =
# 1295 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1295 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_firstline = 0, .fe_lastline = 0, .fe_doesrange =
# 1295 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1295 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_evaluate =
# 1295 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 1295 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_partial =
# 1295 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1295 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_selfdict =
# 1295 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1295 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_basetv =
# 1295 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1295 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_found_var =
# 1295 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 1295 "/home/ubuntu/neovim/src/nvim/eval.c"
, };
funcexe.fe_firstline = curwin->w_cursor.lnum;
funcexe.fe_lastline = curwin->w_cursor.lnum;
funcexe.fe_evaluate =
# 1298 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 1298 "/home/ubuntu/neovim/src/nvim/eval.c"
;
funcexe.fe_partial = pt;
ret = call_func(func, len, rettv, argc, argv, &funcexe);
fail:
if (ret == 0) {
tv_clear(rettv);
}
return ret;
}
# 1320 "/home/ubuntu/neovim/src/nvim/eval.c"
void *call_func_retstr(const char *const func, int argc, typval_T *argv)
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_MALLOC
{
typval_T rettv;
if (call_vim_function(func, argc, argv, &rettv)
== 0) {
return
# 1327 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1327 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
char *const retval = xstrdup(tv_get_string(&rettv));
tv_clear(&rettv);
return retval;
}
# 1344 "/home/ubuntu/neovim/src/nvim/eval.c"
void *call_func_retlist(const char *func, int argc, typval_T *argv)
FUNC_ATTR_NONNULL_ALL
{
typval_T rettv;
if (call_vim_function(func, argc, argv, &rettv) == 0) {
return
# 1351 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1351 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
if (rettv.v_type != VAR_LIST) {
tv_clear(&rettv);
return
# 1356 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1356 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
return rettv.vval.v_list;
}
int eval_foldexpr(win_T *wp, int *cp)
{
const sctx_T saved_sctx = current_sctx;
const
# 1367 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1367 "/home/ubuntu/neovim/src/nvim/eval.c"
use_sandbox = was_set_insecurely(wp, kOptFoldexpr, OPT_LOCAL);
char *arg = skipwhite(wp->w_onebuf_opt.wo_fde);
current_sctx = wp->w_onebuf_opt.wo_script_ctx[WV_FDE].script_ctx;
emsg_off++;
if (use_sandbox) {
sandbox++;
}
textlock++;
*cp = '\000';
typval_T tv;
varnumber_T retval;
if (eval0_simple_funccal(arg, &tv,
# 1383 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1383 "/home/ubuntu/neovim/src/nvim/eval.c"
, &EVALARG_EVALUATE) == 0) {
retval = 0;
} else {
if (tv.v_type == VAR_NUMBER) {
retval = tv.vval.v_number;
} else if (tv.v_type != VAR_STRING || tv.vval.v_string ==
# 1389 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1389 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
retval = 0;
} else {
char *s = tv.vval.v_string;
if (*s != '\000' && !ascii_isdigit(*s) && *s != '-') {
*cp = (uint8_t)(*s++);
}
retval = atol(s);
}
tv_clear(&tv);
}
emsg_off--;
if (use_sandbox) {
sandbox--;
}
textlock--;
clear_evalarg(&EVALARG_EVALUATE,
# 1408 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1408 "/home/ubuntu/neovim/src/nvim/eval.c"
);
current_sctx = saved_sctx;
return (int)retval;
}
Object eval_foldtext(win_T *wp)
{
const
# 1417 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1417 "/home/ubuntu/neovim/src/nvim/eval.c"
use_sandbox = was_set_insecurely(wp, kOptFoldtext, OPT_LOCAL);
char *arg = wp->w_onebuf_opt.wo_fdt;
funccal_entry_T funccal_entry;
save_funccal(&funccal_entry);
if (use_sandbox) {
sandbox++;
}
textlock++;
typval_T tv;
Object retval;
if (eval0_simple_funccal(arg, &tv,
# 1429 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1429 "/home/ubuntu/neovim/src/nvim/eval.c"
, &EVALARG_EVALUATE) == 0) {
retval = ((Object) { .type = kObjectTypeString, .data.string = ((String){ .data =
# 1430 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1430 "/home/ubuntu/neovim/src/nvim/eval.c"
, .size = 0 }) });
} else {
if (tv.v_type == VAR_LIST) {
retval = vim_to_object(&tv,
# 1433 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1433 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 1433 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 1433 "/home/ubuntu/neovim/src/nvim/eval.c"
);
} else {
retval = ((Object) { .type = kObjectTypeString, .data.string = cstr_to_string(tv_get_string(&tv)) });
}
tv_clear(&tv);
}
clear_evalarg(&EVALARG_EVALUATE,
# 1439 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1439 "/home/ubuntu/neovim/src/nvim/eval.c"
);
if (use_sandbox) {
sandbox--;
}
textlock--;
restore_funccal();
return retval;
}
static const char *to_name_end(const char *arg,
# 1455 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1455 "/home/ubuntu/neovim/src/nvim/eval.c"
use_namespace)
{
if (!eval_isnamec1(*arg)) {
return arg;
}
const char *p;
for (p = arg + 1; *p != '\000' && eval_isnamec(*p); (p += utfc_ptr2len((char *)p))) {
if (*p == ':' && (p != arg + 1
|| !use_namespace
|| vim_strchr("bgstvw", *arg) ==
# 1468 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1468 "/home/ubuntu/neovim/src/nvim/eval.c"
)) {
break;
}
}
return p;
}
# 1490 "/home/ubuntu/neovim/src/nvim/eval.c"
static glv_status_T get_lval_dict_item(lval_T *lp, char *name, char *key, int len, char **key_end,
typval_T *var1, int flags,
# 1491 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1491 "/home/ubuntu/neovim/src/nvim/eval.c"
unlet, typval_T *rettv)
{
# 1493 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1493 "/home/ubuntu/neovim/src/nvim/eval.c"
quiet = flags & GLV_QUIET;
char *p = *key_end;
if (len == -1) {
key = (char *)tv_get_string(var1);
}
lp->ll_list =
# 1500 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1500 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (lp->ll_tv->vval.v_dict ==
# 1503 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1503 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
lp->ll_tv->vval.v_dict = tv_dict_alloc();
lp->ll_tv->vval.v_dict->dv_refcount++;
}
lp->ll_dict = lp->ll_tv->vval.v_dict;
lp->ll_di = tv_dict_find(lp->ll_dict, key, len);
if (rettv !=
# 1514 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1514 "/home/ubuntu/neovim/src/nvim/eval.c"
&& lp->ll_dict->dv_scope != 0) {
char prevval;
if (len != -1) {
prevval = key[len];
key[len] = '\000';
} else {
prevval = 0;
}
# 1522 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1522 "/home/ubuntu/neovim/src/nvim/eval.c"
wrong = ((lp->ll_dict->dv_scope == VAR_DEF_SCOPE
&& tv_is_func(*rettv)
&& var_wrong_func_name(key, lp->ll_di ==
# 1524 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1524 "/home/ubuntu/neovim/src/nvim/eval.c"
))
|| !valid_varname(key));
if (len != -1) {
key[len] = prevval;
}
if (wrong) {
return GLV_FAIL;
}
}
if (lp->ll_di !=
# 1534 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1534 "/home/ubuntu/neovim/src/nvim/eval.c"
&& tv_is_luafunc(&lp->ll_di->di_tv)
&& len == -1 && rettv ==
# 1535 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1535 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
semsg(e_illvar, "v:['lua']");
return GLV_FAIL;
}
if (lp->ll_di ==
# 1540 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1540 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
if (lp->ll_dict == &vimvardict
|| &lp->ll_dict->dv_hashtab == get_funccal_args_ht()) {
semsg(gettext(e_illvar), name);
return GLV_FAIL;
}
if (*p == '[' || *p == '.' || unlet) {
if (!quiet) {
semsg(gettext(e_dictkey), key);
}
return GLV_FAIL;
}
if (len == -1) {
lp->ll_newkey = xstrdup(key);
} else {
lp->ll_newkey = xmemdupz(key, (size_t)len);
}
*key_end = p;
return GLV_STOP;
} else if (!(flags & GLV_READ_ONLY)
&& (var_check_ro(lp->ll_di->di_flags, name, (size_t)(p - name))
|| var_check_lock(lp->ll_di->di_flags, name, (size_t)(p - name)))) {
return GLV_FAIL;
}
lp->ll_tv = &lp->ll_di->di_tv;
return GLV_OK;
}
# 1583 "/home/ubuntu/neovim/src/nvim/eval.c"
static int get_lval_blob(lval_T *lp, typval_T *var1, typval_T *var2,
# 1583 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1583 "/home/ubuntu/neovim/src/nvim/eval.c"
empty1,
# 1583 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1583 "/home/ubuntu/neovim/src/nvim/eval.c"
quiet)
{
const int bloblen = tv_blob_len(lp->ll_tv->vval.v_blob);
if (empty1) {
lp->ll_n1 = 0;
} else {
lp->ll_n1 = (int)tv_get_number(var1);
}
if (tv_blob_check_index(bloblen, lp->ll_n1, quiet) == 0) {
return 0;
}
if (lp->ll_range && !lp->ll_empty2) {
lp->ll_n2 = (int)tv_get_number(var2);
if (tv_blob_check_range(bloblen, lp->ll_n1, lp->ll_n2, quiet) == 0) {
return 0;
}
}
lp->ll_blob = lp->ll_tv->vval.v_blob;
lp->ll_tv =
# 1606 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1606 "/home/ubuntu/neovim/src/nvim/eval.c"
;
return 1;
}
# 1620 "/home/ubuntu/neovim/src/nvim/eval.c"
static int get_lval_list(lval_T *lp, typval_T *var1, typval_T *var2,
# 1620 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1620 "/home/ubuntu/neovim/src/nvim/eval.c"
empty1, int flags,
# 1621 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1621 "/home/ubuntu/neovim/src/nvim/eval.c"
quiet)
{
if (empty1) {
lp->ll_n1 = 0;
} else {
lp->ll_n1 = (int)tv_get_number(var1);
}
lp->ll_dict =
# 1631 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1631 "/home/ubuntu/neovim/src/nvim/eval.c"
;
lp->ll_list = lp->ll_tv->vval.v_list;
lp->ll_li = tv_list_check_range_index_one(lp->ll_list, &lp->ll_n1, quiet);
if (lp->ll_li ==
# 1634 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1634 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return 0;
}
if (lp->ll_range && !lp->ll_empty2) {
lp->ll_n2 = (int)tv_get_number(var2);
if (tv_list_check_range_index_two(lp->ll_list,
&lp->ll_n1, lp->ll_li,
&lp->ll_n2, quiet) == 0) {
return 0;
}
}
lp->ll_tv = (&(lp->ll_li)->li_tv);
return 1;
}
# 1666 "/home/ubuntu/neovim/src/nvim/eval.c"
static char *get_lval_subscript(lval_T *lp, char *p, char *name, typval_T *rettv, hashtab_T *ht,
dictitem_T *v,
# 1667 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1667 "/home/ubuntu/neovim/src/nvim/eval.c"
unlet, int flags)
{
# 1669 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1669 "/home/ubuntu/neovim/src/nvim/eval.c"
quiet = flags & GLV_QUIET;
typval_T var1;
var1.v_type = VAR_UNKNOWN;
typval_T var2;
var2.v_type = VAR_UNKNOWN;
# 1674 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1674 "/home/ubuntu/neovim/src/nvim/eval.c"
empty1 =
# 1674 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 1674 "/home/ubuntu/neovim/src/nvim/eval.c"
;
int rc = 0;
while (*p == '[' || (*p == '.' && p[1] != '=' && p[1] != '.')) {
if (*p == '.' && lp->ll_tv->v_type != VAR_DICT) {
if (!quiet) {
semsg(gettext(e_dot_can_only_be_used_on_dictionary_str), name);
}
return
# 1683 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1683 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
if (lp->ll_tv->v_type != VAR_LIST
&& lp->ll_tv->v_type != VAR_DICT
&& lp->ll_tv->v_type != VAR_BLOB) {
if (!quiet) {
emsg(gettext("E689: Can only index a List, Dictionary or Blob"));
}
return
# 1691 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1691 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
if (lp->ll_tv->v_type == VAR_LIST && lp->ll_tv->vval.v_list ==
# 1695 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1695 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
tv_list_alloc_ret(lp->ll_tv, kListLenUnknown);
} else if (lp->ll_tv->v_type == VAR_BLOB && lp->ll_tv->vval.v_blob ==
# 1697 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1697 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
tv_blob_alloc_ret(lp->ll_tv);
}
if (lp->ll_range) {
if (!quiet) {
emsg(gettext("E708: [:] must come last"));
}
goto done;
}
int len = -1;
char *key =
# 1709 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1709 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (*p == '.') {
key = p + 1;
for (len = 0; ((((unsigned)(key[len]) >= 'A' && (unsigned)(key[len]) <= 'Z') || ((unsigned)(key[len]) >= 'a' && (unsigned)(key[len]) <= 'z')) || ascii_isdigit(key[len])) || key[len] == '_'; len++) {}
if (len == 0) {
if (!quiet) {
emsg(gettext("E713: Cannot use empty key after ."));
}
return
# 1718 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1718 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
p = key + len;
} else {
p = skipwhite(p + 1);
if (*p == ':') {
empty1 =
# 1725 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 1725 "/home/ubuntu/neovim/src/nvim/eval.c"
;
} else {
empty1 =
# 1727 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 1727 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (eval1(&p, &var1, &EVALARG_EVALUATE) == 0) {
goto done;
}
if (!tv_check_str(&var1)) {
goto done;
}
p = skipwhite(p);
}
if (*p == ':') {
if (lp->ll_tv->v_type == VAR_DICT) {
if (!quiet) {
emsg(gettext(e_cannot_slice_dictionary));
}
goto done;
}
if (rettv !=
# 1746 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1747 "/home/ubuntu/neovim/src/nvim/eval.c"
&& !(rettv->v_type == VAR_LIST && rettv->vval.v_list !=
# 1747 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1747 "/home/ubuntu/neovim/src/nvim/eval.c"
)
&& !(rettv->v_type == VAR_BLOB && rettv->vval.v_blob !=
# 1748 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1748 "/home/ubuntu/neovim/src/nvim/eval.c"
)) {
if (!quiet) {
emsg(gettext("E709: [:] requires a List or Blob value"));
}
goto done;
}
p = skipwhite(p + 1);
if (*p == ']') {
lp->ll_empty2 =
# 1756 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 1756 "/home/ubuntu/neovim/src/nvim/eval.c"
;
} else {
lp->ll_empty2 =
# 1758 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 1758 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (eval1(&p, &var2, &EVALARG_EVALUATE) == 0) {
goto done;
}
if (!tv_check_str(&var2)) {
goto done;
}
}
lp->ll_range =
# 1768 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 1768 "/home/ubuntu/neovim/src/nvim/eval.c"
;
} else {
lp->ll_range =
# 1770 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 1770 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
if (*p != ']') {
if (!quiet) {
emsg(gettext(e_missbrac));
}
goto done;
}
p++;
}
if (lp->ll_tv->v_type == VAR_DICT) {
glv_status_T glv_status = get_lval_dict_item(lp, name, key, len, &p, &var1,
flags, unlet, rettv);
if (glv_status == GLV_FAIL) {
goto done;
}
if (glv_status == GLV_STOP) {
break;
}
} else if (lp->ll_tv->v_type == VAR_BLOB) {
if (get_lval_blob(lp, &var1, &var2, empty1, quiet) == 0) {
goto done;
}
break;
} else {
if (get_lval_list(lp, &var1, &var2, empty1, flags, quiet) == 0) {
goto done;
}
}
tv_clear(&var1);
tv_clear(&var2);
var1.v_type = VAR_UNKNOWN;
var2.v_type = VAR_UNKNOWN;
}
rc = 1;
done:
tv_clear(&var1);
tv_clear(&var2);
return rc == 1 ? p :
# 1815 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1815 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
# 1841 "/home/ubuntu/neovim/src/nvim/eval.c"
char *get_lval(char *const name, typval_T *const rettv, lval_T *const lp, const
# 1841 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1841 "/home/ubuntu/neovim/src/nvim/eval.c"
unlet,
const
# 1842 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1842 "/home/ubuntu/neovim/src/nvim/eval.c"
skip, const int flags, const int fne_flags)
FUNC_ATTR_NONNULL_ARG(1, 3)
{
int quiet = flags & GLV_QUIET;
memset((lp), 0, sizeof(*(lp)));
if (skip) {
lp->ll_name = name;
return (char *)find_name_end(name,
# 1853 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1853 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 1853 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1853 "/home/ubuntu/neovim/src/nvim/eval.c"
, 1 | fne_flags);
}
char *expr_start;
char *expr_end;
char *p = (char *)find_name_end(name, (const char **)&expr_start,
(const char **)&expr_end,
fne_flags);
if (expr_start !=
# 1862 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1862 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
if (unlet && !ascii_iswhite(*p) && !ends_excmd(*p)
&& *p != '[' && *p != '.') {
semsg(gettext(e_trailing_arg), p);
return
# 1867 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1867 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
lp->ll_exp_name = make_expanded_name(name, expr_start, expr_end, p);
lp->ll_name = lp->ll_exp_name;
if (lp->ll_exp_name ==
# 1872 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1872 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
if (!aborting() && !quiet) {
emsg_severe =
# 1877 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 1877 "/home/ubuntu/neovim/src/nvim/eval.c"
;
semsg(gettext(e_invarg2), name);
return
# 1879 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1879 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
lp->ll_name_len = 0;
} else {
lp->ll_name_len = strlen(lp->ll_name);
}
} else {
lp->ll_name = name;
lp->ll_name_len = (size_t)(p - lp->ll_name);
}
if ((*p != '[' && *p != '.') || lp->ll_name ==
# 1891 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1891 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return p;
}
hashtab_T *ht =
# 1895 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1895 "/home/ubuntu/neovim/src/nvim/eval.c"
;
dictitem_T *v = find_var(lp->ll_name, lp->ll_name_len,
(flags & GLV_READ_ONLY) ?
# 1900 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1900 "/home/ubuntu/neovim/src/nvim/eval.c"
: &ht,
flags & GLV_NO_AUTOLOAD);
if (v ==
# 1902 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1902 "/home/ubuntu/neovim/src/nvim/eval.c"
&& !quiet) {
semsg(gettext("E121: Undefined variable: %.*s"),
(int)lp->ll_name_len, lp->ll_name);
}
if (v ==
# 1906 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1906 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return
# 1907 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1907 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
lp->ll_tv = &v->di_tv;
if (tv_is_luafunc(lp->ll_tv)) {
return p;
}
p = get_lval_subscript(lp, p, name, rettv, ht, v, unlet, flags);
if (p ==
# 1920 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1920 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return
# 1921 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1921 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
lp->ll_name_len = (size_t)(p - lp->ll_name);
return p;
}
void clear_lval(lval_T *lp)
{
xfree(lp->ll_exp_name);
xfree(lp->ll_newkey);
}
void set_var_lval(lval_T *lp, char *endp, typval_T *rettv,
# 1940 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1940 "/home/ubuntu/neovim/src/nvim/eval.c"
copy, const
# 1940 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1940 "/home/ubuntu/neovim/src/nvim/eval.c"
is_const,
const char *op)
{
int cc;
dictitem_T *di;
if (lp->ll_tv ==
# 1946 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1946 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
cc = (uint8_t)(*endp);
*endp = '\000';
if (lp->ll_blob !=
# 1949 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1949 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
if (op !=
# 1950 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1950 "/home/ubuntu/neovim/src/nvim/eval.c"
&& *op != '=') {
semsg(gettext(e_letwrong), op);
return;
}
if (value_check_lock(lp->ll_blob->bv_lock, lp->ll_name, (
# 1954 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(18446744073709551615UL)
# 1954 "/home/ubuntu/neovim/src/nvim/eval.c"
- 1))) {
return;
}
if (lp->ll_range && rettv->v_type == VAR_BLOB) {
if (lp->ll_empty2) {
lp->ll_n2 = tv_blob_len(lp->ll_blob) - 1;
}
if (tv_blob_set_range(lp->ll_blob, lp->ll_n1, lp->ll_n2, rettv) == 0) {
return;
}
} else {
# 1967 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 1967 "/home/ubuntu/neovim/src/nvim/eval.c"
error =
# 1967 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 1967 "/home/ubuntu/neovim/src/nvim/eval.c"
;
const char val = (char)tv_get_number_chk(rettv, &error);
if (!error) {
tv_blob_set_append(lp->ll_blob, lp->ll_n1, (uint8_t)val);
}
}
} else if (op !=
# 1973 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1973 "/home/ubuntu/neovim/src/nvim/eval.c"
&& *op != '=') {
typval_T tv;
if (is_const) {
emsg(gettext(e_cannot_mod));
*endp = (char)cc;
return;
}
di =
# 1983 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1983 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (eval_variable(lp->ll_name, (int)strlen(lp->ll_name),
&tv, &di,
# 1985 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 1985 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 1985 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 1985 "/home/ubuntu/neovim/src/nvim/eval.c"
) == 1) {
if ((di ==
# 1986 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1987 "/home/ubuntu/neovim/src/nvim/eval.c"
|| (!var_check_ro(di->di_flags, lp->ll_name, (
# 1987 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(18446744073709551615UL)
# 1987 "/home/ubuntu/neovim/src/nvim/eval.c"
- 1))
&& !tv_check_lock(&di->di_tv, lp->ll_name, (
# 1988 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(18446744073709551615UL)
# 1988 "/home/ubuntu/neovim/src/nvim/eval.c"
- 1))))
&& eexe_mod_op(&tv, rettv, op) == 1) {
set_var(lp->ll_name, lp->ll_name_len, &tv,
# 1990 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 1990 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
tv_clear(&tv);
}
} else {
set_var_const(lp->ll_name, lp->ll_name_len, rettv, copy, is_const);
}
*endp = (char)cc;
} else if (value_check_lock(lp->ll_newkey ==
# 1998 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 1999 "/home/ubuntu/neovim/src/nvim/eval.c"
? lp->ll_tv->v_lock
: lp->ll_tv->vval.v_dict->dv_lock,
lp->ll_name, (
# 2001 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(18446744073709551615UL)
# 2001 "/home/ubuntu/neovim/src/nvim/eval.c"
- 1))) {
} else if (lp->ll_range) {
if (is_const) {
emsg(gettext("E996: Cannot lock a range"));
return;
}
tv_list_assign_range(lp->ll_list, rettv->vval.v_list,
lp->ll_n1, lp->ll_n2, lp->ll_empty2, op, lp->ll_name);
} else {
typval_T oldtv = ((typval_T) { .v_type = VAR_UNKNOWN, .v_lock = VAR_UNLOCKED, });
dict_T *dict = lp->ll_dict;
# 2014 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2014 "/home/ubuntu/neovim/src/nvim/eval.c"
watched = tv_dict_is_watched(dict);
if (is_const) {
emsg(gettext("E996: Cannot lock a list or dict"));
return;
}
if (lp->ll_newkey !=
# 2022 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2022 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
if (op !=
# 2023 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2023 "/home/ubuntu/neovim/src/nvim/eval.c"
&& *op != '=') {
semsg(gettext(e_dictkey), lp->ll_newkey);
return;
}
if (tv_dict_wrong_func_name(lp->ll_tv->vval.v_dict, rettv, lp->ll_newkey)) {
return;
}
di = tv_dict_item_alloc(lp->ll_newkey);
if (tv_dict_add(lp->ll_tv->vval.v_dict, di) == 0) {
xfree(di);
return;
}
lp->ll_tv = &di->di_tv;
} else {
if (watched) {
tv_copy(lp->ll_tv, &oldtv);
}
if (op !=
# 2043 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2043 "/home/ubuntu/neovim/src/nvim/eval.c"
&& *op != '=') {
eexe_mod_op(lp->ll_tv, rettv, op);
goto notify;
} else {
tv_clear(lp->ll_tv);
}
}
if (copy) {
tv_copy(rettv, lp->ll_tv);
} else {
*lp->ll_tv = *rettv;
lp->ll_tv->v_lock = VAR_UNLOCKED;
tv_init(rettv);
}
notify:
if (watched) {
if (oldtv.v_type == VAR_UNKNOWN) {
# 2063 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void) sizeof ((
# 2063 "/home/ubuntu/neovim/src/nvim/eval.c"
lp->ll_newkey !=
# 2063 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2063 "/home/ubuntu/neovim/src/nvim/eval.c"
lp->ll_newkey !=
# 2063 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)) ; else __assert_fail (
# 2063 "/home/ubuntu/neovim/src/nvim/eval.c"
"lp->ll_newkey != NULL"
# 2063 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
, "/home/ubuntu/neovim/src/nvim/eval.c", 2063, __extension__ __PRETTY_FUNCTION__); }))
# 2063 "/home/ubuntu/neovim/src/nvim/eval.c"
;
tv_dict_watcher_notify(dict, lp->ll_newkey, lp->ll_tv,
# 2064 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2064 "/home/ubuntu/neovim/src/nvim/eval.c"
);
} else {
dictitem_T *di_ = lp->ll_di;
# 2067 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void) sizeof ((
# 2067 "/home/ubuntu/neovim/src/nvim/eval.c"
di_->di_key !=
# 2067 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)) ? 1 : 0), __extension__ ({ if (
# 2067 "/home/ubuntu/neovim/src/nvim/eval.c"
di_->di_key !=
# 2067 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)) ; else __assert_fail (
# 2067 "/home/ubuntu/neovim/src/nvim/eval.c"
"di_->di_key != NULL"
# 2067 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
, "/home/ubuntu/neovim/src/nvim/eval.c", 2067, __extension__ __PRETTY_FUNCTION__); }))
# 2067 "/home/ubuntu/neovim/src/nvim/eval.c"
;
tv_dict_watcher_notify(dict, di_->di_key, lp->ll_tv, &oldtv);
tv_clear(&oldtv);
}
}
}
}
void *eval_for_line(const char *arg,
# 2081 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2081 "/home/ubuntu/neovim/src/nvim/eval.c"
*errp, exarg_T *eap, evalarg_T *const evalarg)
{
forinfo_T *fi = xcalloc(1, sizeof(forinfo_T));
typval_T tv;
list_T *l;
const
# 2086 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2086 "/home/ubuntu/neovim/src/nvim/eval.c"
skip = !(evalarg->eval_flags & EVAL_EVALUATE);
*errp =
# 2088 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 2088 "/home/ubuntu/neovim/src/nvim/eval.c"
;
const char *expr = skip_var_list(arg, &fi->fi_varcount, &fi->fi_semicolon,
# 2090 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2090 "/home/ubuntu/neovim/src/nvim/eval.c"
);
if (expr ==
# 2091 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2091 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return fi;
}
expr = skipwhite(expr);
if (expr[0] != 'i' || expr[1] != 'n'
|| !(expr[2] == '\000' || ascii_iswhite(expr[2]))) {
emsg(gettext("E690: Missing \"in\" after :for"));
return fi;
}
if (skip) {
emsg_skip++;
}
expr = skipwhite(expr + 2);
if (eval0((char *)expr, &tv, eap, evalarg) == 1) {
*errp =
# 2107 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2107 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (!skip) {
if (tv.v_type == VAR_LIST) {
l = tv.vval.v_list;
if (l ==
# 2111 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2111 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
tv_clear(&tv);
} else {
fi->fi_list = l;
tv_list_watch_add(l, &fi->fi_lw);
fi->fi_lw.lw_item = tv_list_first(l);
}
} else if (tv.v_type == VAR_BLOB) {
fi->fi_bi = 0;
if (tv.vval.v_blob !=
# 2123 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2123 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
typval_T btv;
tv_blob_copy(tv.vval.v_blob, &btv);
fi->fi_blob = btv.vval.v_blob;
}
tv_clear(&tv);
} else if (tv.v_type == VAR_STRING) {
fi->fi_byte_idx = 0;
fi->fi_string = tv.vval.v_string;
tv.vval.v_string =
# 2135 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2135 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (fi->fi_string ==
# 2136 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2136 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
fi->fi_string = xstrdup("");
}
} else {
emsg(gettext(e_string_list_or_blob_required));
tv_clear(&tv);
}
}
}
if (skip) {
emsg_skip--;
}
return fi;
}
# 2157 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2157 "/home/ubuntu/neovim/src/nvim/eval.c"
next_for_item(void *fi_void, char *arg)
{
forinfo_T *fi = (forinfo_T *)fi_void;
if (fi->fi_blob !=
# 2161 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2161 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
if (fi->fi_bi >= tv_blob_len(fi->fi_blob)) {
return
# 2163 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2163 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
typval_T tv;
tv.v_type = VAR_NUMBER;
tv.v_lock = VAR_FIXED;
tv.vval.v_number = tv_blob_get(fi->fi_blob, fi->fi_bi);
fi->fi_bi++;
return ex_let_vars(arg, &tv,
# 2170 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 2170 "/home/ubuntu/neovim/src/nvim/eval.c"
, fi->fi_semicolon, fi->fi_varcount,
# 2170 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2170 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 2170 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2170 "/home/ubuntu/neovim/src/nvim/eval.c"
) == 1;
}
if (fi->fi_string !=
# 2173 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2173 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
const int len = utfc_ptr2len(fi->fi_string + fi->fi_byte_idx);
if (len == 0) {
return
# 2176 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2176 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
typval_T tv;
tv.v_type = VAR_STRING;
tv.v_lock = VAR_FIXED;
tv.vval.v_string = xmemdupz(fi->fi_string + fi->fi_byte_idx, (size_t)len);
fi->fi_byte_idx += len;
const int result
= ex_let_vars(arg, &tv,
# 2184 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 2184 "/home/ubuntu/neovim/src/nvim/eval.c"
, fi->fi_semicolon, fi->fi_varcount,
# 2184 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2184 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 2184 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2184 "/home/ubuntu/neovim/src/nvim/eval.c"
) == 1;
xfree(tv.vval.v_string);
return result;
}
listitem_T *item = fi->fi_lw.lw_item;
if (item ==
# 2190 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2190 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return
# 2191 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2191 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
fi->fi_lw.lw_item = ((item)->li_next);
return (ex_let_vars(arg, (&(item)->li_tv),
# 2194 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 2194 "/home/ubuntu/neovim/src/nvim/eval.c"
,
fi->fi_semicolon, fi->fi_varcount,
# 2195 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2195 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 2195 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2195 "/home/ubuntu/neovim/src/nvim/eval.c"
) == 1);
}
void free_for_info(void *fi_void)
{
forinfo_T *fi = (forinfo_T *)fi_void;
if (fi ==
# 2203 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2203 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return;
}
if (fi->fi_list !=
# 2206 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2206 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
tv_list_watch_remove(fi->fi_list, &fi->fi_lw);
tv_list_unref(fi->fi_list);
} else if (fi->fi_blob !=
# 2209 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2209 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
tv_blob_unref(fi->fi_blob);
} else {
xfree(fi->fi_string);
}
xfree(fi);
}
void set_context_for_expression(expand_T *xp, char *arg, cmdidx_T cmdidx)
FUNC_ATTR_NONNULL_ALL
{
# 2220 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2220 "/home/ubuntu/neovim/src/nvim/eval.c"
got_eq =
# 2220 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2220 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (cmdidx == CMD_let || cmdidx == CMD_const) {
xp->xp_context = EXPAND_USER_VARS;
if (strpbrk(arg, "\"'+-*/%.=!?~|&$([<>,#") ==
# 2224 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2224 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
for (char *p = arg + strlen(arg); p >= arg;) {
xp->xp_pattern = p;
(p -= utf_head_off((char *)(arg), (char *)(p) - 1) + 1);
if (ascii_iswhite(*p)) {
break;
}
}
return;
}
} else {
xp->xp_context = cmdidx == CMD_call ? EXPAND_FUNCTIONS
: EXPAND_EXPRESSION;
}
while ((xp->xp_pattern = strpbrk(arg, "\"'+-*/%.=!?~|&$([<>,#")) !=
# 2239 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2239 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
int c = (uint8_t)(*xp->xp_pattern);
if (c == '&') {
c = (uint8_t)xp->xp_pattern[1];
if (c == '&') {
xp->xp_pattern++;
xp->xp_context = cmdidx != CMD_let || got_eq
? EXPAND_EXPRESSION : EXPAND_NOTHING;
} else if (c != ' ') {
xp->xp_context = EXPAND_SETTINGS;
if ((c == 'l' || c == 'g') && xp->xp_pattern[2] == ':') {
xp->xp_pattern += 2;
}
}
} else if (c == '$') {
xp->xp_context = EXPAND_ENV_VARS;
} else if (c == '=') {
got_eq =
# 2257 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 2257 "/home/ubuntu/neovim/src/nvim/eval.c"
;
xp->xp_context = EXPAND_EXPRESSION;
} else if (c == '#'
&& xp->xp_context == EXPAND_EXPRESSION) {
break;
} else if ((c == '<' || c == '#')
&& xp->xp_context == EXPAND_FUNCTIONS
&& vim_strchr(xp->xp_pattern, '(') ==
# 2265 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2265 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
break;
} else if (cmdidx != CMD_let || got_eq) {
if (c == '"') {
while ((c = (uint8_t)(*++xp->xp_pattern)) != '\000' && c != '"') {
if (c == '\\' && xp->xp_pattern[1] != '\000') {
xp->xp_pattern++;
}
}
xp->xp_context = EXPAND_NOTHING;
} else if (c == '\'') {
while ((c = (uint8_t)(*++xp->xp_pattern)) != '\000' && c != '\'') {}
xp->xp_context = EXPAND_NOTHING;
} else if (c == '|') {
if (xp->xp_pattern[1] == '|') {
xp->xp_pattern++;
xp->xp_context = EXPAND_EXPRESSION;
} else {
xp->xp_context = EXPAND_COMMANDS;
}
} else {
xp->xp_context = EXPAND_EXPRESSION;
}
} else {
xp->xp_context = EXPAND_EXPRESSION;
}
arg = xp->xp_pattern;
if (*arg != '\000') {
while ((c = (uint8_t)(*++arg)) != '\000' && (c == ' ' || c == '\t')) {}
}
}
if ((cmdidx == CMD_execute
|| cmdidx == CMD_echo
|| cmdidx == CMD_echon
|| cmdidx == CMD_echomsg)
&& xp->xp_context == EXPAND_EXPRESSION) {
while (
# 2307 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 2307 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
char *const n = skiptowhite(arg);
if (n == arg || ascii_iswhite_or_nul(*skipwhite(n))) {
break;
}
arg = skipwhite(n);
}
}
xp->xp_pattern = arg;
}
void del_menutrans_vars(void)
{
hash_lock(&globvardict.dv_hashtab);
do { hashtab_T *const hiht_ = (&globvardict.dv_hashtab); size_t hitodo_ = hiht_->ht_used; for (hashitem_T *hi = hiht_->ht_array; hitodo_; hi++) { if (!((hi)->hi_key ==
# 2324 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2324 "/home/ubuntu/neovim/src/nvim/eval.c"
|| (hi)->hi_key == &hash_removed)) { hitodo_--; { { if (strncmp(hi->hi_key, "menutrans_", 10) == 0) { delete_var(&globvardict.dv_hashtab, hi); } } } } } } while (0)
;
hash_unlock(&globvardict.dv_hashtab);
}
static char *varnamebuf =
# 2336 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2336 "/home/ubuntu/neovim/src/nvim/eval.c"
;
static size_t varnamebuflen = 0;
char *cat_prefix_varname(int prefix, const char *name)
FUNC_ATTR_NONNULL_ALL
{
size_t len = strlen(name) + 3;
if (len > varnamebuflen) {
xfree(varnamebuf);
len += 10;
varnamebuf = xmalloc(len);
varnamebuflen = len;
}
*varnamebuf = (char)prefix;
varnamebuf[1] = ':';
strcpy((char *)(varnamebuf + 2), (char *)(name));
return varnamebuf;
}
char *get_user_var_name(expand_T *xp, int idx)
{
static size_t gdone;
static size_t bdone;
static size_t wdone;
static size_t tdone;
static size_t vidx;
static hashitem_T *hi;
if (idx == 0) {
gdone = bdone = wdone = vidx = 0;
tdone = 0;
}
if (gdone < globvardict.dv_hashtab.ht_used) {
if (gdone++ == 0) {
hi = globvardict.dv_hashtab.ht_array;
} else {
hi++;
}
while (((hi)->hi_key ==
# 2380 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2380 "/home/ubuntu/neovim/src/nvim/eval.c"
|| (hi)->hi_key == &hash_removed)) {
hi++;
}
if (strncmp("g:", xp->xp_pattern, 2) == 0) {
return cat_prefix_varname('g', hi->hi_key);
}
return hi->hi_key;
}
const hashtab_T *ht = &prevwin_curwin()->w_buffer->b_vars->dv_hashtab;
if (bdone < ht->ht_used) {
if (bdone++ == 0) {
hi = ht->ht_array;
} else {
hi++;
}
while (((hi)->hi_key ==
# 2397 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2397 "/home/ubuntu/neovim/src/nvim/eval.c"
|| (hi)->hi_key == &hash_removed)) {
hi++;
}
return cat_prefix_varname('b', hi->hi_key);
}
ht = &prevwin_curwin()->w_vars->dv_hashtab;
if (wdone < ht->ht_used) {
if (wdone++ == 0) {
hi = ht->ht_array;
} else {
hi++;
}
while (((hi)->hi_key ==
# 2411 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2411 "/home/ubuntu/neovim/src/nvim/eval.c"
|| (hi)->hi_key == &hash_removed)) {
hi++;
}
return cat_prefix_varname('w', hi->hi_key);
}
ht = &curtab->tp_vars->dv_hashtab;
if (tdone < ht->ht_used) {
if (tdone++ == 0) {
hi = ht->ht_array;
} else {
hi++;
}
while (((hi)->hi_key ==
# 2425 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2425 "/home/ubuntu/neovim/src/nvim/eval.c"
|| (hi)->hi_key == &hash_removed)) {
hi++;
}
return cat_prefix_varname('t', hi->hi_key);
}
if (vidx < ((sizeof(vimvars)/sizeof((vimvars)[0])) / ((size_t)(!(sizeof(vimvars) % sizeof((vimvars)[0])))))) {
return cat_prefix_varname('v', vimvars[vidx++].vv_name);
}
do { void **ptr_ = (void **)&(varnamebuf); xfree(*ptr_); *ptr_ =
# 2436 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2436 "/home/ubuntu/neovim/src/nvim/eval.c"
; (void)(*ptr_); } while (0);
varnamebuflen = 0;
return
# 2438 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2438 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
int pattern_match(const char *pat, const char *text,
# 2444 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2444 "/home/ubuntu/neovim/src/nvim/eval.c"
ic)
{
int matches = 0;
regmatch_T regmatch;
char *save_cpo = p_cpo;
p_cpo = empty_string_option;
regmatch.regprog = vim_regcomp(pat, 1 + 2);
if (regmatch.regprog !=
# 2453 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2453 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
regmatch.rm_ic = ic;
matches = vim_regexec_nl(®match, text, 0);
vim_regfree(regmatch.regprog);
}
p_cpo = save_cpo;
return matches;
}
# 2469 "/home/ubuntu/neovim/src/nvim/eval.c"
static int eval_func(char **const arg, evalarg_T *const evalarg, char *const name,
const int name_len, typval_T *const rettv, const int flags,
typval_T *const basetv)
FUNC_ATTR_NONNULL_ARG(1, 3, 5)
{
const
# 2474 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2474 "/home/ubuntu/neovim/src/nvim/eval.c"
evaluate = flags & EVAL_EVALUATE;
char *s = name;
int len = name_len;
# 2477 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2477 "/home/ubuntu/neovim/src/nvim/eval.c"
found_var =
# 2477 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2477 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (!evaluate) {
check_vars(s, (size_t)len);
}
partial_T *partial;
s = deref_func_name(s, &len, &partial, !evaluate, &found_var);
s = xmemdupz(s, (size_t)len);
funcexe_T funcexe = (funcexe_T) { .fe_argv_func =
# 2493 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2493 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_firstline = 0, .fe_lastline = 0, .fe_doesrange =
# 2493 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2493 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_evaluate =
# 2493 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2493 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_partial =
# 2493 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2493 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_selfdict =
# 2493 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2493 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_basetv =
# 2493 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2493 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_found_var =
# 2493 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2493 "/home/ubuntu/neovim/src/nvim/eval.c"
, };
funcexe.fe_firstline = curwin->w_cursor.lnum;
funcexe.fe_lastline = curwin->w_cursor.lnum;
funcexe.fe_evaluate = evaluate;
funcexe.fe_partial = partial;
funcexe.fe_basetv = basetv;
funcexe.fe_found_var = found_var;
int ret = get_func_tv(s, len, rettv, arg, evalarg, &funcexe);
xfree(s);
if (rettv->v_type == VAR_UNKNOWN && !evaluate && **arg == '(') {
rettv->vval.v_string = (char *)tv_empty_string;
rettv->v_type = VAR_FUNC;
}
if (evaluate && aborting()) {
if (ret == 1) {
tv_clear(rettv);
}
ret = 0;
}
return ret;
}
void clear_evalarg(evalarg_T *evalarg, exarg_T *eap)
{
if (evalarg ==
# 2527 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2527 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return;
}
if (evalarg->eval_tofree !=
# 2531 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2531 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
if (eap !=
# 2532 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2532 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
xfree(eap->cmdline_tofree);
eap->cmdline_tofree = *eap->cmdlinep;
*eap->cmdlinep = evalarg->eval_tofree;
} else {
xfree(evalarg->eval_tofree);
}
evalarg->eval_tofree =
# 2542 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2542 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
}
# 2559 "/home/ubuntu/neovim/src/nvim/eval.c"
int eval0(char *arg, typval_T *rettv, exarg_T *eap, evalarg_T *const evalarg)
{
const int did_emsg_before = did_emsg;
const int called_emsg_before = called_emsg;
# 2563 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2563 "/home/ubuntu/neovim/src/nvim/eval.c"
end_error =
# 2563 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2563 "/home/ubuntu/neovim/src/nvim/eval.c"
;
char *p = skipwhite(arg);
int ret = eval1(&p, rettv, evalarg);
if (ret != 0) {
end_error = !ends_excmd(*p);
}
if (ret == 0 || end_error) {
if (ret != 0) {
tv_clear(rettv);
}
if (!aborting()
&& did_emsg == did_emsg_before
&& called_emsg == called_emsg_before) {
if (end_error) {
semsg(gettext(e_trailing_arg), p);
} else {
semsg(gettext(e_invexpr2), arg);
}
}
if (eap !=
# 2589 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2589 "/home/ubuntu/neovim/src/nvim/eval.c"
&& p !=
# 2589 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2589 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
char *nextcmd = check_nextcmd(p);
if (nextcmd !=
# 2594 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2594 "/home/ubuntu/neovim/src/nvim/eval.c"
&& *nextcmd != '|') {
eap->nextcmd = nextcmd;
}
}
return 0;
}
if (eap !=
# 2601 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2601 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
eap->nextcmd = check_nextcmd(p);
}
return ret;
}
static int may_call_simple_func(const char *arg, typval_T *rettv)
{
const char *parens = strstr(arg, "()");
int r = 2;
if (parens !=
# 2616 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2616 "/home/ubuntu/neovim/src/nvim/eval.c"
&& *skipwhite(parens + 2) == '\000') {
if (strnequal(arg, "v:lua.", 6)) {
const char *p = arg + 6;
if (p != parens && skip_luafunc_name(p) == parens) {
r = call_simple_luafunc(p, (size_t)(parens - p), rettv);
}
} else {
const char *p = strncmp(arg, "<SNR>", 5) == 0 ? skipdigits(arg + 5) : arg;
if (to_name_end(p,
# 2624 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 2624 "/home/ubuntu/neovim/src/nvim/eval.c"
) == parens) {
r = call_simple_func(arg, (size_t)(parens - arg), rettv);
}
}
}
return r;
}
static int eval0_simple_funccal(char *arg, typval_T *rettv, exarg_T *eap, evalarg_T *const evalarg)
{
int r = may_call_simple_func(arg, rettv);
if (r == 2) {
r = eval0(arg, rettv, eap, evalarg);
}
return r;
}
# 2654 "/home/ubuntu/neovim/src/nvim/eval.c"
int eval1(char **arg, typval_T *rettv, evalarg_T *const evalarg)
{
if (eval2(arg, rettv, evalarg) == 0) {
return 0;
}
char *p = *arg;
if (*p == '?') {
const
# 2663 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2663 "/home/ubuntu/neovim/src/nvim/eval.c"
op_falsy = p[1] == '?';
evalarg_T *evalarg_used = evalarg;
evalarg_T local_evalarg;
if (evalarg ==
# 2666 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2666 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
local_evalarg = (evalarg_T){ .eval_flags = 0 };
evalarg_used = &local_evalarg;
}
const int orig_flags = evalarg_used->eval_flags;
const
# 2671 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2671 "/home/ubuntu/neovim/src/nvim/eval.c"
evaluate = evalarg_used->eval_flags & EVAL_EVALUATE;
# 2673 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2673 "/home/ubuntu/neovim/src/nvim/eval.c"
result =
# 2673 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2673 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (evaluate) {
# 2675 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2675 "/home/ubuntu/neovim/src/nvim/eval.c"
error =
# 2675 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2675 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (op_falsy) {
result = tv2bool(rettv);
} else if (tv_get_number_chk(rettv, &error) != 0) {
result =
# 2680 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 2680 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
if (error || !op_falsy || !result) {
tv_clear(rettv);
}
if (error) {
return 0;
}
}
if (op_falsy) {
(*arg)++;
}
*arg = skipwhite(*arg + 1);
evalarg_used->eval_flags = (op_falsy ? !result : result)
? orig_flags : (orig_flags & ~EVAL_EVALUATE);
typval_T var2;
if (eval1(arg, &var2, evalarg_used) == 0) {
evalarg_used->eval_flags = orig_flags;
return 0;
}
if (!op_falsy || !result) {
*rettv = var2;
}
if (!op_falsy) {
p = *arg;
if (*p != ':') {
emsg(gettext("E109: Missing ':' after '?'"));
if (evaluate && result) {
tv_clear(rettv);
}
evalarg_used->eval_flags = orig_flags;
return 0;
}
*arg = skipwhite(*arg + 1);
evalarg_used->eval_flags = !result ? orig_flags : (orig_flags & ~EVAL_EVALUATE);
if (eval1(arg, &var2, evalarg_used) == 0) {
if (evaluate && result) {
tv_clear(rettv);
}
evalarg_used->eval_flags = orig_flags;
return 0;
}
if (evaluate && !result) {
*rettv = var2;
}
}
if (evalarg ==
# 2733 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2733 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
clear_evalarg(&local_evalarg,
# 2734 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2734 "/home/ubuntu/neovim/src/nvim/eval.c"
);
} else {
evalarg->eval_flags = orig_flags;
}
}
return 1;
}
# 2750 "/home/ubuntu/neovim/src/nvim/eval.c"
static int eval2(char **arg, typval_T *rettv, evalarg_T *const evalarg)
{
if (eval3(arg, rettv, evalarg) == 0) {
return 0;
}
char *p = *arg;
if (p[0] == '|' && p[1] == '|') {
evalarg_T *evalarg_used = evalarg;
evalarg_T local_evalarg;
if (evalarg ==
# 2762 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2762 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
local_evalarg = (evalarg_T){ .eval_flags = 0 };
evalarg_used = &local_evalarg;
}
const int orig_flags = evalarg_used->eval_flags;
const
# 2767 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2767 "/home/ubuntu/neovim/src/nvim/eval.c"
evaluate = evalarg_used->eval_flags & EVAL_EVALUATE;
# 2769 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2769 "/home/ubuntu/neovim/src/nvim/eval.c"
result =
# 2769 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2769 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (evaluate) {
# 2772 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2772 "/home/ubuntu/neovim/src/nvim/eval.c"
error =
# 2772 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2772 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (tv_get_number_chk(rettv, &error) != 0) {
result =
# 2774 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 2774 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
tv_clear(rettv);
if (error) {
return 0;
}
}
while (p[0] == '|' && p[1] == '|') {
*arg = skipwhite(*arg + 2);
evalarg_used->eval_flags = !result ? orig_flags : (orig_flags & ~EVAL_EVALUATE);
typval_T var2;
if (eval3(arg, &var2, evalarg_used) == 0) {
return 0;
}
if (evaluate && !result) {
# 2794 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2794 "/home/ubuntu/neovim/src/nvim/eval.c"
error =
# 2794 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2794 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (tv_get_number_chk(&var2, &error) != 0) {
result =
# 2796 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 2796 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
tv_clear(&var2);
if (error) {
return 0;
}
}
if (evaluate) {
rettv->v_type = VAR_NUMBER;
rettv->vval.v_number = result;
}
p = *arg;
}
if (evalarg ==
# 2811 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2811 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
clear_evalarg(&local_evalarg,
# 2812 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2812 "/home/ubuntu/neovim/src/nvim/eval.c"
);
} else {
evalarg->eval_flags = orig_flags;
}
}
return 1;
}
# 2828 "/home/ubuntu/neovim/src/nvim/eval.c"
static int eval3(char **arg, typval_T *rettv, evalarg_T *const evalarg)
{
if (eval4(arg, rettv, evalarg) == 0) {
return 0;
}
char *p = *arg;
if (p[0] == '&' && p[1] == '&') {
evalarg_T *evalarg_used = evalarg;
evalarg_T local_evalarg;
if (evalarg ==
# 2840 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2840 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
local_evalarg = (evalarg_T){ .eval_flags = 0 };
evalarg_used = &local_evalarg;
}
const int orig_flags = evalarg_used->eval_flags;
const
# 2845 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2845 "/home/ubuntu/neovim/src/nvim/eval.c"
evaluate = evalarg_used->eval_flags & EVAL_EVALUATE;
# 2847 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2847 "/home/ubuntu/neovim/src/nvim/eval.c"
result =
# 2847 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 2847 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (evaluate) {
# 2850 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2850 "/home/ubuntu/neovim/src/nvim/eval.c"
error =
# 2850 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2850 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (tv_get_number_chk(rettv, &error) == 0) {
result =
# 2852 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2852 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
tv_clear(rettv);
if (error) {
return 0;
}
}
while (p[0] == '&' && p[1] == '&') {
*arg = skipwhite(*arg + 2);
evalarg_used->eval_flags = result ? orig_flags : (orig_flags & ~EVAL_EVALUATE);
typval_T var2;
if (eval4(arg, &var2, evalarg_used) == 0) {
return 0;
}
if (evaluate && result) {
# 2872 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2872 "/home/ubuntu/neovim/src/nvim/eval.c"
error =
# 2872 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2872 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (tv_get_number_chk(&var2, &error) == 0) {
result =
# 2874 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2874 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
tv_clear(&var2);
if (error) {
return 0;
}
}
if (evaluate) {
rettv->v_type = VAR_NUMBER;
rettv->vval.v_number = result;
}
p = *arg;
}
if (evalarg ==
# 2889 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2889 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
clear_evalarg(&local_evalarg,
# 2890 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2890 "/home/ubuntu/neovim/src/nvim/eval.c"
);
} else {
evalarg->eval_flags = orig_flags;
}
}
return 1;
}
# 2915 "/home/ubuntu/neovim/src/nvim/eval.c"
static int eval4(char **arg, typval_T *rettv, evalarg_T *const evalarg)
{
typval_T var2;
exprtype_T type = EXPR_UNKNOWN;
int len = 2;
if (eval5(arg, rettv, evalarg) == 0) {
return 0;
}
char *p = *arg;
switch (p[0]) {
case '=':
if (p[1] == '=') {
type = EXPR_EQUAL;
} else if (p[1] == '~') {
type = EXPR_MATCH;
}
break;
case '!':
if (p[1] == '=') {
type = EXPR_NEQUAL;
} else if (p[1] == '~') {
type = EXPR_NOMATCH;
}
break;
case '>':
if (p[1] != '=') {
type = EXPR_GREATER;
len = 1;
} else {
type = EXPR_GEQUAL;
}
break;
case '<':
if (p[1] != '=') {
type = EXPR_SMALLER;
len = 1;
} else {
type = EXPR_SEQUAL;
}
break;
case 'i':
if (p[1] == 's') {
if (p[2] == 'n' && p[3] == 'o' && p[4] == 't') {
len = 5;
}
if (!
# 2963 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((*__ctype_b_loc ())[(int) ((
# 2963 "/home/ubuntu/neovim/src/nvim/eval.c"
(uint8_t)p[len]
# 2963 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
))] & (unsigned short int) _ISalnum)
# 2963 "/home/ubuntu/neovim/src/nvim/eval.c"
&& p[len] != '_') {
type = len == 2 ? EXPR_IS : EXPR_ISNOT;
}
}
break;
}
if (type != EXPR_UNKNOWN) {
# 2972 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 2972 "/home/ubuntu/neovim/src/nvim/eval.c"
ic;
if (p[len] == '?') {
ic =
# 2975 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 2975 "/home/ubuntu/neovim/src/nvim/eval.c"
;
len++;
} else if (p[len] == '#') {
ic =
# 2978 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 2978 "/home/ubuntu/neovim/src/nvim/eval.c"
;
len++;
} else {
ic = p_ic;
}
*arg = skipwhite(p + len);
if (eval5(arg, &var2, evalarg) == 0) {
tv_clear(rettv);
return 0;
}
if (evalarg !=
# 2990 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 2990 "/home/ubuntu/neovim/src/nvim/eval.c"
&& (evalarg->eval_flags & EVAL_EVALUATE)) {
const int ret = typval_compare(rettv, &var2, type, ic);
tv_clear(&var2);
return ret;
}
}
return 1;
}
static void eval_addblob(typval_T *tv1, typval_T *tv2)
{
const blob_T *const b1 = tv1->vval.v_blob;
const blob_T *const b2 = tv2->vval.v_blob;
blob_T *const b = tv_blob_alloc();
for (int i = 0; i < tv_blob_len(b1); i++) {
ga_append(&b->bv_ga, tv_blob_get(b1, i));
}
for (int i = 0; i < tv_blob_len(b2); i++) {
ga_append(&b->bv_ga, tv_blob_get(b2, i));
}
tv_clear(tv1);
tv_blob_set_ret(tv1, b);
}
static int eval_addlist(typval_T *tv1, typval_T *tv2)
{
typval_T var3;
if (tv_list_concat(tv1->vval.v_list, tv2->vval.v_list, &var3) == 0) {
tv_clear(tv1);
tv_clear(tv2);
return 0;
}
tv_clear(tv1);
*tv1 = var3;
return 1;
}
static int eval_concat_str(typval_T *tv1, typval_T *tv2)
{
char buf1[NUMBUFLEN];
char buf2[NUMBUFLEN];
const char *const s1 = tv_get_string_buf(tv1, buf1);
const char *const s2 = tv_get_string_buf_chk(tv2, buf2);
if (s2 ==
# 3042 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3042 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
tv_clear(tv1);
tv_clear(tv2);
return 0;
}
char *p = concat_str(s1, s2);
tv_clear(tv1);
tv1->v_type = VAR_STRING;
tv1->vval.v_string = p;
return 1;
}
static int eval_addsub_number(typval_T *tv1, typval_T *tv2, int op)
{
# 3060 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3060 "/home/ubuntu/neovim/src/nvim/eval.c"
error =
# 3060 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 3060 "/home/ubuntu/neovim/src/nvim/eval.c"
;
varnumber_T n1, n2;
float_T f1 = 0;
float_T f2 = 0;
if (tv1->v_type == VAR_FLOAT) {
f1 = tv1->vval.v_float;
n1 = 0;
} else {
n1 = tv_get_number_chk(tv1, &error);
if (error) {
tv_clear(tv1);
tv_clear(tv2);
return 0;
}
if (tv2->v_type == VAR_FLOAT) {
f1 = (float_T)n1;
}
}
if (tv2->v_type == VAR_FLOAT) {
f2 = tv2->vval.v_float;
n2 = 0;
} else {
n2 = tv_get_number_chk(tv2, &error);
if (error) {
tv_clear(tv1);
tv_clear(tv2);
return 0;
}
if (tv1->v_type == VAR_FLOAT) {
f2 = (float_T)n2;
}
}
tv_clear(tv1);
if (tv1->v_type == VAR_FLOAT || tv2->v_type == VAR_FLOAT) {
if (op == '+') {
f1 = f1 + f2;
} else {
f1 = f1 - f2;
}
tv1->v_type = VAR_FLOAT;
tv1->vval.v_float = f1;
} else {
if (op == '+') {
n1 = n1 + n2;
} else {
n1 = n1 - n2;
}
tv1->v_type = VAR_NUMBER;
tv1->vval.v_number = n1;
}
return 1;
}
# 3131 "/home/ubuntu/neovim/src/nvim/eval.c"
static int eval5(char **arg, typval_T *rettv, evalarg_T *const evalarg)
{
if (eval6(arg, rettv, evalarg,
# 3134 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 3134 "/home/ubuntu/neovim/src/nvim/eval.c"
) == 0) {
return 0;
}
while (
# 3139 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 3139 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
int op = (uint8_t)(**arg);
# 3141 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3141 "/home/ubuntu/neovim/src/nvim/eval.c"
concat = op == '.';
if (op != '+' && op != '-' && !concat) {
break;
}
const
# 3146 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3146 "/home/ubuntu/neovim/src/nvim/eval.c"
evaluate = evalarg ==
# 3146 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3146 "/home/ubuntu/neovim/src/nvim/eval.c"
? 0 : (evalarg->eval_flags & EVAL_EVALUATE);
if ((op != '+' || (rettv->v_type != VAR_LIST && rettv->v_type != VAR_BLOB))
&& (op == '.' || rettv->v_type != VAR_FLOAT) && evaluate) {
if ((op == '.' && !tv_check_str(rettv)) || (op != '.' && !tv_check_num(rettv))) {
tv_clear(rettv);
return 0;
}
}
if (op == '.' && *(*arg + 1) == '.') {
(*arg)++;
}
*arg = skipwhite(*arg + 1);
typval_T var2;
if (eval6(arg, &var2, evalarg, op == '.') == 0) {
tv_clear(rettv);
return 0;
}
if (evaluate) {
if (op == '.') {
if (eval_concat_str(rettv, &var2) == 0) {
return 0;
}
} else if (op == '+' && rettv->v_type == VAR_BLOB && var2.v_type == VAR_BLOB) {
eval_addblob(rettv, &var2);
} else if (op == '+' && rettv->v_type == VAR_LIST && var2.v_type == VAR_LIST) {
if (eval_addlist(rettv, &var2) == 0) {
return 0;
}
} else {
if (eval_addsub_number(rettv, &var2, op) == 0) {
return 0;
}
}
tv_clear(&var2);
}
}
return 1;
}
static int eval_multdiv_number(typval_T *tv1, typval_T *tv2, int op)
FUNC_ATTR_NO_SANITIZE_UNDEFINED
{
varnumber_T n1, n2;
# 3202 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3202 "/home/ubuntu/neovim/src/nvim/eval.c"
use_float =
# 3202 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 3202 "/home/ubuntu/neovim/src/nvim/eval.c"
;
float_T f1 = 0;
float_T f2 = 0;
# 3206 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3206 "/home/ubuntu/neovim/src/nvim/eval.c"
error =
# 3206 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 3206 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (tv1->v_type == VAR_FLOAT) {
f1 = tv1->vval.v_float;
use_float =
# 3209 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 3209 "/home/ubuntu/neovim/src/nvim/eval.c"
;
n1 = 0;
} else {
n1 = tv_get_number_chk(tv1, &error);
}
tv_clear(tv1);
if (error) {
tv_clear(tv2);
return 0;
}
if (tv2->v_type == VAR_FLOAT) {
if (!use_float) {
f1 = (float_T)n1;
use_float =
# 3223 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 3223 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
f2 = tv2->vval.v_float;
n2 = 0;
} else {
n2 = tv_get_number_chk(tv2, &error);
tv_clear(tv2);
if (error) {
return 0;
}
if (use_float) {
f2 = (float_T)n2;
}
}
if (use_float) {
if (op == '*') {
f1 = f1 * f2;
} else if (op == '/') {
f1 = (f2 == 0 ? (
f1 == 0 ? (float_T)
# 3249 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(__builtin_nanf (""))
# 3249 "/home/ubuntu/neovim/src/nvim/eval.c"
:
(f1 > 0 ? (float_T)
# 3251 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(__builtin_inff ())
# 3251 "/home/ubuntu/neovim/src/nvim/eval.c"
: (float_T)-
# 3251 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(__builtin_inff ())
# 3251 "/home/ubuntu/neovim/src/nvim/eval.c"
)) : f1 / f2);
} else {
emsg(gettext("E804: Cannot use '%' with Float"));
return 0;
}
tv1->v_type = VAR_FLOAT;
tv1->vval.v_float = f1;
} else {
if (op == '*') {
n1 = n1 * n2;
} else if (op == '/') {
n1 = num_divide(n1, n2);
} else {
n1 = num_modulus(n1, n2);
}
tv1->v_type = VAR_NUMBER;
tv1->vval.v_number = n1;
}
return 1;
}
# 3287 "/home/ubuntu/neovim/src/nvim/eval.c"
static int eval6(char **arg, typval_T *rettv, evalarg_T *const evalarg,
# 3287 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3287 "/home/ubuntu/neovim/src/nvim/eval.c"
want_string)
{
if (eval7(arg, rettv, evalarg, want_string) == 0) {
return 0;
}
while (
# 3295 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 3295 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
int op = (uint8_t)(**arg);
if (op != '*' && op != '/' && op != '%') {
break;
}
const
# 3301 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3301 "/home/ubuntu/neovim/src/nvim/eval.c"
evaluate = evalarg ==
# 3301 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3301 "/home/ubuntu/neovim/src/nvim/eval.c"
? 0 : (evalarg->eval_flags & EVAL_EVALUATE);
*arg = skipwhite(*arg + 1);
typval_T var2;
if (eval7(arg, &var2, evalarg,
# 3306 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 3306 "/home/ubuntu/neovim/src/nvim/eval.c"
) == 0) {
return 0;
}
if (evaluate) {
if (eval_multdiv_number(rettv, &var2, op) == 0) {
return 0;
}
}
}
return 1;
}
# 3350 "/home/ubuntu/neovim/src/nvim/eval.c"
static int eval7(char **arg, typval_T *rettv, evalarg_T *const evalarg,
# 3350 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3350 "/home/ubuntu/neovim/src/nvim/eval.c"
want_string)
{
const
# 3352 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3352 "/home/ubuntu/neovim/src/nvim/eval.c"
evaluate = evalarg !=
# 3352 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3352 "/home/ubuntu/neovim/src/nvim/eval.c"
&& (evalarg->eval_flags & EVAL_EVALUATE);
int ret = 1;
static int recurse = 0;
rettv->v_type = VAR_UNKNOWN;
const char *start_leader = *arg;
while (**arg == '!' || **arg == '-' || **arg == '+') {
*arg = skipwhite(*arg + 1);
}
const char *end_leader = *arg;
if (recurse ==
1000
) {
semsg(gettext(e_expression_too_recursive_str), *arg);
return 0;
}
recurse++;
switch (**arg) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
ret = eval_number(arg, rettv, evaluate, want_string);
if (ret == 1 && evaluate && end_leader > start_leader) {
ret = eval7_leader(rettv,
# 3398 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 3398 "/home/ubuntu/neovim/src/nvim/eval.c"
, start_leader, &end_leader);
}
break;
case '"':
ret = eval_string(arg, rettv, evaluate,
# 3404 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 3404 "/home/ubuntu/neovim/src/nvim/eval.c"
);
break;
case '\'':
ret = eval_lit_string(arg, rettv, evaluate,
# 3409 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 3409 "/home/ubuntu/neovim/src/nvim/eval.c"
);
break;
case '[':
ret = eval_list(arg, rettv, evalarg);
break;
case '#':
ret = eval_lit_dict(arg, rettv, evalarg);
break;
case '{':
ret = get_lambda_tv(arg, rettv, evalarg);
if (ret == 2) {
ret = eval_dict(arg, rettv, evalarg,
# 3427 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 3427 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
break;
case '&':
ret = eval_option((const char **)arg, rettv, evaluate);
break;
case '$':
if ((*arg)[1] == '"' || (*arg)[1] == '\'') {
ret = eval_interp_string(arg, rettv, evaluate);
} else {
ret = eval_env_var(arg, rettv, evaluate);
}
break;
case '@':
(*arg)++;
if (evaluate) {
rettv->v_type = VAR_STRING;
rettv->vval.v_string = get_reg_contents(**arg, kGRegExprSrc);
}
if (**arg != '\000') {
(*arg)++;
}
break;
case '(':
*arg = skipwhite(*arg + 1);
ret = eval1(arg, rettv, evalarg);
if (**arg == ')') {
(*arg)++;
} else if (ret == 1) {
emsg(gettext("E110: Missing ')'"));
tv_clear(rettv);
ret = 0;
}
break;
default:
ret = 2;
break;
}
if (ret == 2) {
char *s = *arg;
char *alias;
int len = get_name_len((const char **)arg, &alias, evaluate,
# 3481 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 3481 "/home/ubuntu/neovim/src/nvim/eval.c"
);
if (alias !=
# 3482 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3482 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
s = alias;
}
if (len <= 0) {
ret = 0;
} else {
const int flags = evalarg ==
# 3489 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3489 "/home/ubuntu/neovim/src/nvim/eval.c"
? 0 : evalarg->eval_flags;
if (*skipwhite(*arg) == '(') {
*arg = skipwhite(*arg);
ret = eval_func(arg, evalarg, s, len, rettv, flags,
# 3493 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3493 "/home/ubuntu/neovim/src/nvim/eval.c"
);
} else if (evaluate) {
ret = eval_variable(s, len, rettv,
# 3496 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3496 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 3496 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 3496 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 3496 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 3496 "/home/ubuntu/neovim/src/nvim/eval.c"
);
} else {
check_vars(s, (size_t)len);
if (rettv->v_type == VAR_UNKNOWN && !evaluate && strnequal(s, "v:lua.", 6)) {
rettv->v_type = VAR_PARTIAL;
rettv->vval.v_partial = vvlua_partial;
rettv->vval.v_partial->pt_refcount++;
}
ret = 1;
}
}
xfree(alias);
}
*arg = skipwhite(*arg);
if (ret == 1) {
ret = handle_subscript((const char **)arg, rettv, evalarg,
# 3518 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 3518 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
if (ret == 1 && evaluate && end_leader > start_leader) {
ret = eval7_leader(rettv,
# 3523 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 3523 "/home/ubuntu/neovim/src/nvim/eval.c"
, start_leader, &end_leader);
}
recurse--;
return ret;
}
static int eval7_leader(typval_T *const rettv, const
# 3536 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3536 "/home/ubuntu/neovim/src/nvim/eval.c"
numeric_only,
const char *const start_leader, const char **const end_leaderp)
FUNC_ATTR_NONNULL_ALL
{
const char *end_leader = *end_leaderp;
int ret = 1;
# 3542 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3542 "/home/ubuntu/neovim/src/nvim/eval.c"
error =
# 3542 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 3542 "/home/ubuntu/neovim/src/nvim/eval.c"
;
varnumber_T val = 0;
float_T f = 0.0;
if (rettv->v_type == VAR_FLOAT) {
f = rettv->vval.v_float;
} else {
val = tv_get_number_chk(rettv, &error);
}
if (error) {
tv_clear(rettv);
ret = 0;
} else {
while (end_leader > start_leader) {
end_leader--;
if (*end_leader == '!') {
if (numeric_only) {
end_leader++;
break;
}
if (rettv->v_type == VAR_FLOAT) {
f = !(
# 3563 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3563 "/home/ubuntu/neovim/src/nvim/eval.c"
)f;
} else {
val = !val;
}
} else if (*end_leader == '-') {
if (rettv->v_type == VAR_FLOAT) {
f = -f;
} else {
val = -val;
}
}
}
if (rettv->v_type == VAR_FLOAT) {
tv_clear(rettv);
rettv->vval.v_float = f;
} else {
tv_clear(rettv);
rettv->v_type = VAR_NUMBER;
rettv->vval.v_number = val;
}
}
*end_leaderp = end_leader;
return ret;
}
static int call_func_rettv(char **const arg, evalarg_T *const evalarg, typval_T *const rettv,
const
# 3595 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3595 "/home/ubuntu/neovim/src/nvim/eval.c"
evaluate, dict_T *const selfdict, typval_T *const basetv,
const char *const lua_funcname)
FUNC_ATTR_NONNULL_ARG(1, 3)
{
partial_T *pt =
# 3599 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3599 "/home/ubuntu/neovim/src/nvim/eval.c"
;
typval_T functv;
const char *funcname;
# 3602 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3602 "/home/ubuntu/neovim/src/nvim/eval.c"
is_lua =
# 3602 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 3602 "/home/ubuntu/neovim/src/nvim/eval.c"
;
int ret;
if (evaluate) {
functv = *rettv;
rettv->v_type = VAR_UNKNOWN;
if (functv.v_type == VAR_PARTIAL) {
pt = functv.vval.v_partial;
is_lua = is_luafunc(pt);
funcname = is_lua ? lua_funcname : partial_name(pt);
} else {
funcname = functv.vval.v_string;
if (funcname ==
# 3617 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3617 "/home/ubuntu/neovim/src/nvim/eval.c"
|| *funcname == '\000') {
emsg(gettext(e_empty_function_name));
ret = 0;
goto theend;
}
}
} else {
funcname = "";
}
funcexe_T funcexe = (funcexe_T) { .fe_argv_func =
# 3627 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3627 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_firstline = 0, .fe_lastline = 0, .fe_doesrange =
# 3627 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3627 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_evaluate =
# 3627 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 3627 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_partial =
# 3627 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3627 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_selfdict =
# 3627 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3627 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_basetv =
# 3627 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3627 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_found_var =
# 3627 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 3627 "/home/ubuntu/neovim/src/nvim/eval.c"
, };
funcexe.fe_firstline = curwin->w_cursor.lnum;
funcexe.fe_lastline = curwin->w_cursor.lnum;
funcexe.fe_evaluate = evaluate;
funcexe.fe_partial = pt;
funcexe.fe_selfdict = selfdict;
funcexe.fe_basetv = basetv;
ret = get_func_tv(funcname, is_lua ? (int)(*arg - funcname) : -1, rettv,
arg, evalarg, &funcexe);
theend:
if (evaluate) {
tv_clear(&functv);
}
return ret;
}
# 3655 "/home/ubuntu/neovim/src/nvim/eval.c"
static int eval_lambda(char **const arg, typval_T *const rettv, evalarg_T *const evalarg,
const
# 3656 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3656 "/home/ubuntu/neovim/src/nvim/eval.c"
verbose)
FUNC_ATTR_NONNULL_ARG(1, 2)
{
const
# 3659 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3659 "/home/ubuntu/neovim/src/nvim/eval.c"
evaluate = evalarg !=
# 3659 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3659 "/home/ubuntu/neovim/src/nvim/eval.c"
&& (evalarg->eval_flags & EVAL_EVALUATE);
*arg += 2;
typval_T base = *rettv;
rettv->v_type = VAR_UNKNOWN;
int ret = get_lambda_tv(arg, rettv, evalarg);
if (ret != 1) {
return 0;
} else if (**arg != '(') {
if (verbose) {
if (*skipwhite(*arg) == '(') {
emsg(gettext(e_nowhitespace));
} else {
semsg(gettext(e_missingparen), "lambda");
}
}
tv_clear(rettv);
ret = 0;
} else {
ret = call_func_rettv(arg, evalarg, rettv, evaluate,
# 3679 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3679 "/home/ubuntu/neovim/src/nvim/eval.c"
, &base,
# 3679 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3679 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
if (evaluate) {
tv_clear(&base);
}
return ret;
}
static int eval_method(char **const arg, typval_T *const rettv, evalarg_T *const evalarg,
const
# 3697 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3697 "/home/ubuntu/neovim/src/nvim/eval.c"
verbose)
FUNC_ATTR_NONNULL_ARG(1, 2)
{
const
# 3700 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3700 "/home/ubuntu/neovim/src/nvim/eval.c"
evaluate = evalarg !=
# 3700 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3700 "/home/ubuntu/neovim/src/nvim/eval.c"
&& (evalarg->eval_flags & EVAL_EVALUATE);
*arg += 2;
typval_T base = *rettv;
rettv->v_type = VAR_UNKNOWN;
int len;
char *name = *arg;
char *lua_funcname =
# 3710 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3710 "/home/ubuntu/neovim/src/nvim/eval.c"
;
char *alias =
# 3711 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3711 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (strnequal(name, "v:lua.", 6)) {
lua_funcname = name + 6;
*arg = (char *)skip_luafunc_name(lua_funcname);
*arg = skipwhite(*arg);
len = (int)(*arg - lua_funcname);
} else {
len = get_name_len((const char **)arg, &alias, evaluate,
# 3718 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 3718 "/home/ubuntu/neovim/src/nvim/eval.c"
);
if (alias !=
# 3719 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3719 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
name = alias;
}
}
char *tofree =
# 3724 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3724 "/home/ubuntu/neovim/src/nvim/eval.c"
;
int ret = 1;
if (len <= 0) {
if (verbose) {
if (lua_funcname ==
# 3729 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3729 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
emsg(gettext("E260: Missing name after ->"));
} else {
semsg(gettext(e_invexpr2), name);
}
}
ret = 0;
} else {
*arg = skipwhite(*arg);
char *paren;
if (**arg != '(' && lua_funcname ==
# 3743 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3743 "/home/ubuntu/neovim/src/nvim/eval.c"
&& alias ==
# 3743 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3744 "/home/ubuntu/neovim/src/nvim/eval.c"
&& (paren = vim_strchr(*arg, '(')) !=
# 3744 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3744 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
*arg = name;
*paren = '\000';
typval_T ref;
ref.v_type = VAR_UNKNOWN;
if (eval7(arg, &ref, evalarg,
# 3749 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 3749 "/home/ubuntu/neovim/src/nvim/eval.c"
) == 0) {
*arg = name + len;
ret = 0;
} else if (*skipwhite(*arg) != '\000') {
if (verbose) {
semsg(gettext(e_trailing_arg), *arg);
}
ret = 0;
} else if (ref.v_type == VAR_FUNC && ref.vval.v_string !=
# 3757 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3757 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
name = ref.vval.v_string;
ref.vval.v_string =
# 3759 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3759 "/home/ubuntu/neovim/src/nvim/eval.c"
;
tofree = name;
len = (int)strlen(name);
} else if (ref.v_type == VAR_PARTIAL && ref.vval.v_partial !=
# 3762 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3762 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
if (ref.vval.v_partial->pt_argc > 0 || ref.vval.v_partial->pt_dict !=
# 3763 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3763 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
if (verbose) {
emsg(gettext(e_cannot_use_partial_here));
}
ret = 0;
} else {
name = xstrdup(partial_name(ref.vval.v_partial));
tofree = name;
if (name ==
# 3771 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3771 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
ret = 0;
name = *arg;
} else {
len = (int)strlen(name);
}
}
} else {
if (verbose) {
semsg(gettext(e_not_callable_type_str), name);
}
ret = 0;
}
tv_clear(&ref);
*paren = '(';
}
if (ret == 1) {
if (**arg != '(') {
if (verbose) {
semsg(gettext(e_missingparen), name);
}
ret = 0;
} else if (ascii_iswhite((*arg)[-1])) {
if (verbose) {
emsg(gettext(e_nowhitespace));
}
ret = 0;
} else if (lua_funcname !=
# 3799 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3799 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
if (evaluate) {
rettv->v_type = VAR_PARTIAL;
rettv->vval.v_partial = vvlua_partial;
rettv->vval.v_partial->pt_refcount++;
}
ret = call_func_rettv(arg, evalarg, rettv, evaluate,
# 3805 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3805 "/home/ubuntu/neovim/src/nvim/eval.c"
, &base, lua_funcname);
} else {
ret = eval_func(arg, evalarg, name, len, rettv,
evaluate ? EVAL_EVALUATE : 0, &base);
}
}
}
if (evaluate) {
tv_clear(&base);
}
xfree(tofree);
if (alias !=
# 3820 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3820 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
xfree(alias);
}
return ret;
}
static int eval_index(char **arg, typval_T *rettv, evalarg_T *const evalarg,
# 3833 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3833 "/home/ubuntu/neovim/src/nvim/eval.c"
verbose)
{
const
# 3835 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3835 "/home/ubuntu/neovim/src/nvim/eval.c"
evaluate = evalarg !=
# 3835 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3835 "/home/ubuntu/neovim/src/nvim/eval.c"
&& (evalarg->eval_flags & EVAL_EVALUATE);
# 3836 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3836 "/home/ubuntu/neovim/src/nvim/eval.c"
empty1 =
# 3836 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 3836 "/home/ubuntu/neovim/src/nvim/eval.c"
;
# 3837 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3837 "/home/ubuntu/neovim/src/nvim/eval.c"
empty2 =
# 3837 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 3837 "/home/ubuntu/neovim/src/nvim/eval.c"
;
# 3838 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3838 "/home/ubuntu/neovim/src/nvim/eval.c"
range =
# 3838 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 3838 "/home/ubuntu/neovim/src/nvim/eval.c"
;
const char *key =
# 3839 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3839 "/home/ubuntu/neovim/src/nvim/eval.c"
;
ptrdiff_t keylen = -1;
if (check_can_index(rettv, evaluate, verbose) == 0) {
return 0;
}
typval_T var1 = ((typval_T) { .v_type = VAR_UNKNOWN, .v_lock = VAR_UNLOCKED, });
typval_T var2 = ((typval_T) { .v_type = VAR_UNKNOWN, .v_lock = VAR_UNLOCKED, });
if (**arg == '.') {
key = *arg + 1;
for (keylen = 0; eval_isdictc(key[keylen]); keylen++) {}
if (keylen == 0) {
return 0;
}
*arg = skipwhite(key + keylen);
} else {
*arg = skipwhite(*arg + 1);
if (**arg == ':') {
empty1 =
# 3862 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 3862 "/home/ubuntu/neovim/src/nvim/eval.c"
;
} else if (eval1(arg, &var1, evalarg) == 0) {
return 0;
} else if (evaluate && !tv_check_str(&var1)) {
tv_clear(&var1);
return 0;
}
if (**arg == ':') {
range =
# 3873 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 3873 "/home/ubuntu/neovim/src/nvim/eval.c"
;
*arg = skipwhite(*arg + 1);
if (**arg == ']') {
empty2 =
# 3876 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 3876 "/home/ubuntu/neovim/src/nvim/eval.c"
;
} else if (eval1(arg, &var2, evalarg) == 0) {
if (!empty1) {
tv_clear(&var1);
}
return 0;
} else if (evaluate && !tv_check_str(&var2)) {
if (!empty1) {
tv_clear(&var1);
}
tv_clear(&var2);
return 0;
}
}
if (**arg != ']') {
if (verbose) {
emsg(gettext(e_missbrac));
}
tv_clear(&var1);
if (range) {
tv_clear(&var2);
}
return 0;
}
*arg = skipwhite(*arg + 1);
}
if (evaluate) {
int res = eval_index_inner(rettv, range,
empty1 ?
# 3908 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3908 "/home/ubuntu/neovim/src/nvim/eval.c"
: &var1, empty2 ?
# 3908 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3908 "/home/ubuntu/neovim/src/nvim/eval.c"
: &var2,
# 3908 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 3908 "/home/ubuntu/neovim/src/nvim/eval.c"
,
key, keylen, verbose);
if (!empty1) {
tv_clear(&var1);
}
if (range) {
tv_clear(&var2);
}
return res;
}
return 1;
}
static int check_can_index(typval_T *rettv,
# 3922 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3922 "/home/ubuntu/neovim/src/nvim/eval.c"
evaluate,
# 3922 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3922 "/home/ubuntu/neovim/src/nvim/eval.c"
verbose)
{
switch (rettv->v_type) {
case VAR_FUNC:
case VAR_PARTIAL:
if (verbose) {
emsg(gettext(e_cannot_index_a_funcref));
}
return 0;
case VAR_FLOAT:
if (verbose) {
emsg(gettext(e_using_float_as_string));
}
return 0;
case VAR_BOOL:
case VAR_SPECIAL:
if (verbose) {
emsg(gettext(e_cannot_index_special_variable));
}
return 0;
case VAR_UNKNOWN:
if (evaluate) {
emsg(gettext(e_cannot_index_special_variable));
return 0;
}
{} __attribute__((fallthrough));
case VAR_STRING:
case VAR_NUMBER:
case VAR_LIST:
case VAR_DICT:
case VAR_BLOB:
break;
}
return 1;
}
void f_slice(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
{
if (check_can_index(&argvars[0],
# 3961 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 3961 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 3961 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 3961 "/home/ubuntu/neovim/src/nvim/eval.c"
) != 1) {
return;
}
tv_copy(argvars, rettv);
eval_index_inner(rettv,
# 3966 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 3966 "/home/ubuntu/neovim/src/nvim/eval.c"
, argvars + 1,
argvars[2].v_type == VAR_UNKNOWN ?
# 3967 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3967 "/home/ubuntu/neovim/src/nvim/eval.c"
: argvars + 2,
# 3968 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 3968 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 3968 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3968 "/home/ubuntu/neovim/src/nvim/eval.c"
, 0,
# 3968 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 3968 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
# 3978 "/home/ubuntu/neovim/src/nvim/eval.c"
static int eval_index_inner(typval_T *rettv,
# 3978 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3978 "/home/ubuntu/neovim/src/nvim/eval.c"
is_range, typval_T *var1, typval_T *var2,
# 3979 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3979 "/home/ubuntu/neovim/src/nvim/eval.c"
exclusive, const char *key, ptrdiff_t keylen,
# 3979 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 3979 "/home/ubuntu/neovim/src/nvim/eval.c"
verbose)
{
varnumber_T n1 = 0;
varnumber_T n2 = 0;
if (var1 !=
# 3983 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3983 "/home/ubuntu/neovim/src/nvim/eval.c"
&& rettv->v_type != VAR_DICT) {
n1 = tv_get_number(var1);
}
if (is_range) {
if (rettv->v_type == VAR_DICT) {
if (verbose) {
emsg(gettext(e_cannot_slice_dictionary));
}
return 0;
}
if (var2 !=
# 3994 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 3994 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
n2 = tv_get_number(var2);
} else {
n2 =
# 3997 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(9223372036854775807L)
# 3997 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
}
switch (rettv->v_type) {
case VAR_BOOL:
case VAR_SPECIAL:
case VAR_FUNC:
case VAR_FLOAT:
case VAR_PARTIAL:
case VAR_UNKNOWN:
break;
case VAR_NUMBER:
case VAR_STRING: {
const char *const s = tv_get_string(rettv);
char *v;
int len = (int)strlen(s);
if (exclusive) {
if (is_range) {
v = string_slice(s, n1, n2, exclusive);
} else {
v = char_from_string(s, n1);
}
} else if (is_range) {
if (n1 < 0) {
n1 = len + n1;
if (n1 < 0) {
n1 = 0;
}
}
if (n2 < 0) {
n2 = len + n2;
} else if (n2 >= len) {
n2 = len;
}
if (n1 >= len || n2 < 0 || n1 > n2) {
v =
# 4036 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4036 "/home/ubuntu/neovim/src/nvim/eval.c"
;
} else {
v = xmemdupz(s + n1, (size_t)n2 - (size_t)n1 + 1);
}
} else {
if (n1 >= len || n1 < 0) {
v =
# 4045 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4045 "/home/ubuntu/neovim/src/nvim/eval.c"
;
} else {
v = xmemdupz(s + n1, 1);
}
}
tv_clear(rettv);
rettv->v_type = VAR_STRING;
rettv->vval.v_string = v;
break;
}
case VAR_BLOB:
tv_blob_slice_or_index(rettv->vval.v_blob, is_range, n1, n2, exclusive, rettv);
break;
case VAR_LIST:
if (var1 ==
# 4061 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4061 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
n1 = 0;
}
if (var2 ==
# 4064 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4064 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
n2 =
# 4065 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(9223372036854775807L)
# 4065 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
if (tv_list_slice_or_index(rettv->vval.v_list,
is_range, n1, n2, exclusive, rettv, verbose) == 0) {
return 0;
}
break;
case VAR_DICT: {
if (key ==
# 4074 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4074 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
key = tv_get_string_chk(var1);
if (key ==
# 4076 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4076 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return 0;
}
}
dictitem_T *const item = tv_dict_find(rettv->vval.v_dict, key, keylen);
if (item ==
# 4083 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4083 "/home/ubuntu/neovim/src/nvim/eval.c"
&& verbose) {
if (keylen > 0) {
semsg(gettext(e_dictkey_len), keylen, key);
} else {
semsg(gettext(e_dictkey), key);
}
}
if (item ==
# 4090 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4090 "/home/ubuntu/neovim/src/nvim/eval.c"
|| tv_is_luafunc(&item->di_tv)) {
return 0;
}
typval_T tmp;
tv_copy(&item->di_tv, &tmp);
tv_clear(rettv);
*rettv = tmp;
break;
}
}
return 1;
}
# 4112 "/home/ubuntu/neovim/src/nvim/eval.c"
int eval_option(const char **const arg, typval_T *const rettv, const
# 4112 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4112 "/home/ubuntu/neovim/src/nvim/eval.c"
evaluate)
FUNC_ATTR_NONNULL_ARG(1)
{
const
# 4115 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4115 "/home/ubuntu/neovim/src/nvim/eval.c"
working = (**arg == '+');
OptIndex opt_idx;
int scope;
char *const option_end = (char *)find_option_var_end(arg, &opt_idx, &scope);
if (option_end ==
# 4122 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4122 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
if (rettv !=
# 4123 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4123 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
semsg(gettext("E112: Option name missing: %s"), *arg);
}
return 0;
}
if (!evaluate) {
*arg = option_end;
return 1;
}
char c = *option_end;
*option_end = '\000';
int ret = 1;
# 4138 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4138 "/home/ubuntu/neovim/src/nvim/eval.c"
is_tty_opt = is_tty_option(*arg);
if (opt_idx == kOptInvalid && !is_tty_opt) {
if (rettv !=
# 4142 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4142 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
semsg(gettext("E113: Unknown option: %s"), *arg);
}
ret = 0;
} else if (rettv !=
# 4147 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4147 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
OptVal value = is_tty_opt ? get_tty_option(*arg) : get_option_value(opt_idx, scope);
# 4149 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void) sizeof ((
# 4149 "/home/ubuntu/neovim/src/nvim/eval.c"
value.type != kOptValTypeNil
# 4149 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
) ? 1 : 0), __extension__ ({ if (
# 4149 "/home/ubuntu/neovim/src/nvim/eval.c"
value.type != kOptValTypeNil
# 4149 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
) ; else __assert_fail (
# 4149 "/home/ubuntu/neovim/src/nvim/eval.c"
"value.type != kOptValTypeNil"
# 4149 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
, "/home/ubuntu/neovim/src/nvim/eval.c", 4149, __extension__ __PRETTY_FUNCTION__); }))
# 4149 "/home/ubuntu/neovim/src/nvim/eval.c"
;
*rettv = optval_as_tv(value,
# 4151 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 4151 "/home/ubuntu/neovim/src/nvim/eval.c"
);
} else if (working && !is_tty_opt && is_option_hidden(opt_idx)) {
ret = 0;
}
*option_end = c;
*arg = option_end;
return ret;
}
static int eval_number(char **arg, typval_T *rettv,
# 4165 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4165 "/home/ubuntu/neovim/src/nvim/eval.c"
evaluate,
# 4165 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4165 "/home/ubuntu/neovim/src/nvim/eval.c"
want_string)
{
char *p = skipdigits(*arg + 1);
# 4168 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4168 "/home/ubuntu/neovim/src/nvim/eval.c"
get_float =
# 4168 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 4168 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (!want_string && p[0] == '.' && ascii_isdigit(p[1])) {
get_float =
# 4176 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 4176 "/home/ubuntu/neovim/src/nvim/eval.c"
;
p = skipdigits(p + 2);
if (*p == 'e' || *p == 'E') {
p++;
if (*p == '-' || *p == '+') {
p++;
}
if (!ascii_isdigit(*p)) {
get_float =
# 4184 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 4184 "/home/ubuntu/neovim/src/nvim/eval.c"
;
} else {
p = skipdigits(p + 1);
}
}
if ((((unsigned)(*p) >= 'A' && (unsigned)(*p) <= 'Z') || ((unsigned)(*p) >= 'a' && (unsigned)(*p) <= 'z')) || *p == '.') {
get_float =
# 4190 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 4190 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
}
if (get_float) {
float_T f;
*arg += string2float(*arg, &f);
if (evaluate) {
rettv->v_type = VAR_FLOAT;
rettv->vval.v_float = f;
}
} else if (**arg == '0' && ((*arg)[1] == 'z' || (*arg)[1] == 'Z')) {
blob_T *blob =
# 4202 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4202 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (evaluate) {
blob = tv_blob_alloc();
}
char *bp;
for (bp = *arg + 2; ascii_isxdigit(bp[0]); bp += 2) {
if (!ascii_isxdigit(bp[1])) {
if (blob !=
# 4209 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4209 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
emsg(gettext("E973: Blob literal should have an even number of hex characters"));
ga_clear(&blob->bv_ga);
do { void **ptr_ = (void **)&(blob); xfree(*ptr_); *ptr_ =
# 4212 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4212 "/home/ubuntu/neovim/src/nvim/eval.c"
; (void)(*ptr_); } while (0);
}
return 0;
}
if (blob !=
# 4216 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4216 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
ga_append(&blob->bv_ga, (uint8_t)((hex2nr(*bp) << 4) + hex2nr(*(bp + 1))));
}
if (bp[2] == '.' && ascii_isxdigit(bp[3])) {
bp++;
}
}
if (blob !=
# 4223 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4223 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
tv_blob_set_ret(rettv, blob);
}
*arg = bp;
} else {
int len;
varnumber_T n;
vim_str2nr(*arg,
# 4231 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4231 "/home/ubuntu/neovim/src/nvim/eval.c"
, &len, STR2NR_ALL, &n,
# 4231 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4231 "/home/ubuntu/neovim/src/nvim/eval.c"
, 0,
# 4231 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 4231 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 4231 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4231 "/home/ubuntu/neovim/src/nvim/eval.c"
);
if (len == 0) {
if (evaluate) {
semsg(gettext(e_invexpr2), *arg);
}
return 0;
}
*arg += len;
if (evaluate) {
rettv->v_type = VAR_NUMBER;
rettv->vval.v_number = n;
}
}
return 1;
}
static int eval_string(char **arg, typval_T *rettv,
# 4253 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4253 "/home/ubuntu/neovim/src/nvim/eval.c"
evaluate,
# 4253 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4253 "/home/ubuntu/neovim/src/nvim/eval.c"
interpolate)
{
char *p;
const char *const arg_end = *arg + strlen(*arg);
unsigned extra = interpolate ? 1 : 0;
const int off = interpolate ? 0 : 1;
for (p = *arg + off; *p != '\000' && *p != '"'; (p += utfc_ptr2len((char *)p))) {
if (*p == '\\' && p[1] != '\000') {
p++;
if (*p == '<') {
int modifiers = 0;
int flags = FSK_KEYCODE | FSK_IN_STRING;
extra += 5;
if (p[1] != '*') {
flags |= FSK_SIMPLIFY;
}
if (find_special_key((const char **)&p, (size_t)(arg_end - p),
&modifiers, flags,
# 4279 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4279 "/home/ubuntu/neovim/src/nvim/eval.c"
) != 0) {
p--;
}
}
} else if (interpolate && (*p == '{' || *p == '}')) {
if (*p == '{' && p[1] != '{') {
break;
}
p++;
if (p[-1] == '}' && *p != '}') {
semsg(gettext(e_stray_closing_curly_str), *arg);
return 0;
}
extra--;
}
}
if (*p != '"' && !(interpolate && *p == '{')) {
semsg(gettext("E114: Missing quote: %s"), *arg);
return 0;
}
if (!evaluate) {
*arg = p + off;
return 1;
}
rettv->v_type = VAR_STRING;
const int len = (int)(p - *arg + extra);
rettv->vval.v_string = xmalloc((size_t)len);
char *end = rettv->vval.v_string;
for (p = *arg + off; *p != '\000' && *p != '"';) {
if (*p == '\\') {
switch (*++p) {
case 'b':
*end++ = '\010'; ++p; break;
case 'e':
*end++ = '\033'; ++p; break;
case 'f':
*end++ = '\014'; ++p; break;
case 'n':
*end++ = '\012'; ++p; break;
case 'r':
*end++ = '\015'; ++p; break;
case 't':
*end++ = '\011'; ++p; break;
case 'X':
case 'x':
case 'u':
case 'U':
if (ascii_isxdigit(p[1])) {
int n, nr;
int c = toupper((uint8_t)(*p));
if (c == 'X') {
n = 2;
} else if (*p == 'u') {
n = 4;
} else {
n = 8;
}
nr = 0;
while (--n >= 0 && ascii_isxdigit(p[1])) {
p++;
nr = (nr << 4) + hex2nr(*p);
}
p++;
if (c != 'X') {
end += utf_char2bytes(nr, end);
} else {
*end++ = (char)nr;
}
}
break;
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
*end = (char)(*p++ - '0');
if (*p >= '0' && *p <= '7') {
*end = (char)((*end << 3) + *p++ - '0');
if (*p >= '0' && *p <= '7') {
*end = (char)((*end << 3) + *p++ - '0');
}
}
end++;
break;
case '<': {
int flags = FSK_KEYCODE | FSK_IN_STRING;
if (p[1] != '*') {
flags |= FSK_SIMPLIFY;
}
extra = trans_special((const char **)&p, (size_t)(arg_end - p),
end, flags,
# 4388 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 4388 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 4388 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4388 "/home/ubuntu/neovim/src/nvim/eval.c"
);
if (extra != 0) {
end += extra;
if (end >= rettv->vval.v_string + len) {
iemsg("eval_string() used more space than allocated");
}
break;
}
}
{} __attribute__((fallthrough));
default:
mb_copy_char((const char **)&p, &end);
break;
}
} else {
if (interpolate && (*p == '{' || *p == '}')) {
if (*p == '{' && p[1] != '{') {
break;
}
p++;
}
mb_copy_char((const char **)&p, &end);
}
}
*end = '\000';
if (*p == '"' && !interpolate) {
p++;
}
*arg = p;
return 1;
}
static int eval_lit_string(char **arg, typval_T *rettv,
# 4427 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4427 "/home/ubuntu/neovim/src/nvim/eval.c"
evaluate,
# 4427 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4427 "/home/ubuntu/neovim/src/nvim/eval.c"
interpolate)
{
char *p;
int reduce = interpolate ? -1 : 0;
const int off = interpolate ? 0 : 1;
for (p = *arg + off; *p != '\000'; (p += utfc_ptr2len((char *)p))) {
if (*p == '\'') {
if (p[1] != '\'') {
break;
}
reduce++;
p++;
} else if (interpolate) {
if (*p == '{') {
if (p[1] != '{') {
break;
}
p++;
reduce++;
} else if (*p == '}') {
p++;
if (*p != '}') {
semsg(gettext(e_stray_closing_curly_str), *arg);
return 0;
}
reduce++;
}
}
}
if (*p != '\'' && !(interpolate && *p == '{')) {
semsg(gettext("E115: Missing quote: %s"), *arg);
return 0;
}
if (!evaluate) {
*arg = p + off;
return 1;
}
char *str = xmalloc((size_t)((p - *arg) - reduce));
rettv->v_type = VAR_STRING;
rettv->vval.v_string = str;
for (p = *arg + off; *p != '\000';) {
if (*p == '\'') {
if (p[1] != '\'') {
break;
}
p++;
} else if (interpolate && (*p == '{' || *p == '}')) {
if (*p == '{' && p[1] != '{') {
break;
}
p++;
}
mb_copy_char((const char **)&p, &str);
}
*str = '\000';
*arg = p + off;
return 1;
}
int eval_interp_string(char **arg, typval_T *rettv,
# 4500 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4500 "/home/ubuntu/neovim/src/nvim/eval.c"
evaluate)
{
int ret = 1;
garray_T ga;
ga_init(&ga, 1, 80);
(*arg)++;
const int quote = (uint8_t)(**arg);
(*arg)++;
while (
# 4512 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 4512 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
typval_T tv;
if (quote == '"') {
ret = eval_string(arg, &tv, evaluate,
# 4517 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 4517 "/home/ubuntu/neovim/src/nvim/eval.c"
);
} else {
ret = eval_lit_string(arg, &tv, evaluate,
# 4519 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 4519 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
if (ret == 0) {
break;
}
if (evaluate) {
ga_concat(&ga, tv.vval.v_string);
tv_clear(&tv);
}
if (**arg != '{') {
(*arg)++;
break;
}
char *p = eval_one_expr_in_str(*arg, &ga, evaluate);
if (p ==
# 4535 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4535 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
ret = 0;
break;
}
*arg = p;
}
rettv->v_type = VAR_STRING;
if (ret != 0 && evaluate) {
ga_append(&ga, '\000');
}
rettv->vval.v_string = ga.ga_data;
return 1;
}
char *partial_name(partial_T *pt)
FUNC_ATTR_PURE
{
if (pt !=
# 4554 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4554 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
if (pt->pt_name !=
# 4555 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4555 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return pt->pt_name;
}
if (pt->pt_func !=
# 4558 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4558 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return pt->pt_func->uf_name;
}
}
return "";
}
static void partial_free(partial_T *pt)
{
for (int i = 0; i < pt->pt_argc; i++) {
tv_clear(&pt->pt_argv[i]);
}
xfree(pt->pt_argv);
tv_dict_unref(pt->pt_dict);
if (pt->pt_name !=
# 4572 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4572 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
func_unref(pt->pt_name);
xfree(pt->pt_name);
} else {
func_ptr_unref(pt->pt_func);
}
xfree(pt);
}
void partial_unref(partial_T *pt)
{
if (pt ==
# 4585 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4585 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return;
}
if (--pt->pt_refcount <= 0) {
partial_free(pt);
}
}
static int eval_list(char **arg, typval_T *rettv, evalarg_T *const evalarg)
{
const
# 4600 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4600 "/home/ubuntu/neovim/src/nvim/eval.c"
evaluate = evalarg ==
# 4600 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4600 "/home/ubuntu/neovim/src/nvim/eval.c"
?
# 4600 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 4600 "/home/ubuntu/neovim/src/nvim/eval.c"
: evalarg->eval_flags & EVAL_EVALUATE;
list_T *l =
# 4601 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4601 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (evaluate) {
l = tv_list_alloc(kListLenShouldKnow);
}
*arg = skipwhite(*arg + 1);
while (**arg != ']' && **arg != '\000') {
typval_T tv;
if (eval1(arg, &tv, evalarg) == 0) {
goto failret;
}
if (evaluate) {
tv.v_lock = VAR_UNLOCKED;
tv_list_append_owned_tv(l, tv);
}
# 4619 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4619 "/home/ubuntu/neovim/src/nvim/eval.c"
had_comma = **arg == ',';
if (had_comma) {
*arg = skipwhite(*arg + 1);
}
if (**arg == ']') {
break;
}
if (!had_comma) {
semsg(gettext("E696: Missing comma in List: %s"), *arg);
goto failret;
}
}
if (**arg != ']') {
semsg(gettext(e_list_end), *arg);
failret:
if (evaluate) {
tv_list_free(l);
}
return 0;
}
*arg = skipwhite(*arg + 1);
if (evaluate) {
tv_list_set_ret(rettv, l);
}
return 1;
}
# 4652 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4652 "/home/ubuntu/neovim/src/nvim/eval.c"
func_equal(typval_T *tv1, typval_T *tv2,
# 4652 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4652 "/home/ubuntu/neovim/src/nvim/eval.c"
ic)
{
char *s1 = tv1->v_type == VAR_FUNC ? tv1->vval.v_string : partial_name(tv1->vval.v_partial);
if (s1 !=
# 4656 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4656 "/home/ubuntu/neovim/src/nvim/eval.c"
&& *s1 == '\000') {
s1 =
# 4657 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4657 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
char *s2 = tv2->v_type == VAR_FUNC ? tv2->vval.v_string : partial_name(tv2->vval.v_partial);
if (s2 !=
# 4660 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4660 "/home/ubuntu/neovim/src/nvim/eval.c"
&& *s2 == '\000') {
s2 =
# 4661 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4661 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
if (s1 ==
# 4663 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4663 "/home/ubuntu/neovim/src/nvim/eval.c"
|| s2 ==
# 4663 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4663 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
if (s1 != s2) {
return
# 4665 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 4665 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
} else if (strcmp(s1, s2) != 0) {
return
# 4668 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 4668 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
dict_T *d1 = tv1->v_type == VAR_FUNC ?
# 4672 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4672 "/home/ubuntu/neovim/src/nvim/eval.c"
: tv1->vval.v_partial->pt_dict;
dict_T *d2 = tv2->v_type == VAR_FUNC ?
# 4673 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4673 "/home/ubuntu/neovim/src/nvim/eval.c"
: tv2->vval.v_partial->pt_dict;
if (d1 ==
# 4674 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4674 "/home/ubuntu/neovim/src/nvim/eval.c"
|| d2 ==
# 4674 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4674 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
if (d1 != d2) {
return
# 4676 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 4676 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
} else if (!tv_dict_equal(d1, d2, ic)) {
return
# 4679 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 4679 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
int a1 = tv1->v_type == VAR_FUNC ? 0 : tv1->vval.v_partial->pt_argc;
int a2 = tv2->v_type == VAR_FUNC ? 0 : tv2->vval.v_partial->pt_argc;
if (a1 != a2) {
return
# 4686 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 4686 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
for (int i = 0; i < a1; i++) {
if (!tv_equal(tv1->vval.v_partial->pt_argv + i,
tv2->vval.v_partial->pt_argv + i, ic)) {
return
# 4691 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 4691 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
}
return
# 4694 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 4694 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
int get_copyID(void)
FUNC_ATTR_WARN_UNUSED_RESULT
{
static int current_copyID = 0;
current_copyID += 2;
return current_copyID;
}
# 4736 "/home/ubuntu/neovim/src/nvim/eval.c"
# 4736 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4736 "/home/ubuntu/neovim/src/nvim/eval.c"
garbage_collect(
# 4736 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4736 "/home/ubuntu/neovim/src/nvim/eval.c"
testing)
{
# 4738 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4738 "/home/ubuntu/neovim/src/nvim/eval.c"
abort =
# 4738 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 4738 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (!testing) {
want_garbage_collect =
# 4743 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 4743 "/home/ubuntu/neovim/src/nvim/eval.c"
;
may_garbage_collect =
# 4744 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 4744 "/home/ubuntu/neovim/src/nvim/eval.c"
;
garbage_collect_at_exit =
# 4745 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 4745 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
if (exestack.ga_maxlen - exestack.ga_len > 500) {
int n = exestack.ga_len / 2;
if (n < exestack.ga_growsize) {
n = exestack.ga_growsize;
}
if (exestack.ga_len + n < exestack.ga_maxlen) {
size_t new_len = (size_t)exestack.ga_itemsize * (size_t)(exestack.ga_len + n);
char *pp = xrealloc(exestack.ga_data, new_len);
exestack.ga_maxlen = exestack.ga_len + n;
exestack.ga_data = pp;
}
}
const int copyID = get_copyID();
abort = abort || set_ref_in_previous_funccal(copyID);
for (int i = 1; i <= script_items.ga_len; i++) {
abort = abort || set_ref_in_ht(&(((((scriptitem_T **)script_items.ga_data)[(i) - 1])->sn_vars)->sv_dict.dv_hashtab), copyID,
# 4779 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4779 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
for (buf_T *buf = firstbuf; buf !=
# 4782 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4782 "/home/ubuntu/neovim/src/nvim/eval.c"
; buf = buf->b_next) {
abort = abort || set_ref_in_item(&buf->b_bufvar.di_tv, copyID,
# 4784 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4784 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 4784 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4784 "/home/ubuntu/neovim/src/nvim/eval.c"
);
abort = abort || set_ref_in_callback(&buf->b_prompt_callback, copyID,
# 4787 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4787 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 4787 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4787 "/home/ubuntu/neovim/src/nvim/eval.c"
);
abort = abort || set_ref_in_callback(&buf->b_prompt_interrupt, copyID,
# 4788 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4788 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 4788 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4788 "/home/ubuntu/neovim/src/nvim/eval.c"
);
abort = abort || set_ref_in_callback(&buf->b_cfu_cb, copyID,
# 4789 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4789 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 4789 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4789 "/home/ubuntu/neovim/src/nvim/eval.c"
);
abort = abort || set_ref_in_callback(&buf->b_ofu_cb, copyID,
# 4790 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4790 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 4790 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4790 "/home/ubuntu/neovim/src/nvim/eval.c"
);
abort = abort || set_ref_in_callback(&buf->b_tsrfu_cb, copyID,
# 4791 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4791 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 4791 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4791 "/home/ubuntu/neovim/src/nvim/eval.c"
);
abort = abort || set_ref_in_callback(&buf->b_tfu_cb, copyID,
# 4792 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4792 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 4792 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4792 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
abort = abort || set_ref_in_insexpand_funcs(copyID);
abort = abort || set_ref_in_opfunc(copyID);
abort = abort || set_ref_in_tagfunc(copyID);
for (tabpage_T *(tp) = first_tabpage; (tp) !=
# 4804 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4804 "/home/ubuntu/neovim/src/nvim/eval.c"
; (tp) = (tp)->tp_next) for (win_T *wp = ((tp) == curtab) ? firstwin : (tp)->tp_firstwin; wp !=
# 4804 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4804 "/home/ubuntu/neovim/src/nvim/eval.c"
; wp = wp->w_next) {
abort = abort || set_ref_in_item(&wp->w_winvar.di_tv, copyID,
# 4806 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4806 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 4806 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4806 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
for (int i = 0; i < ((int)aucmd_win_vec.size); i++) {
if ((aucmd_win_vec.items)[i].auc_win !=
# 4810 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4810 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
abort = abort || set_ref_in_item(&(aucmd_win_vec.items)[i].auc_win->w_winvar.di_tv, copyID,
# 4811 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4811 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 4811 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4811 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
}
{
const void *reg_iter =
# 4817 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4817 "/home/ubuntu/neovim/src/nvim/eval.c"
;
do {
yankreg_T reg;
char name = '\000';
# 4821 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4821 "/home/ubuntu/neovim/src/nvim/eval.c"
is_unnamed =
# 4821 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 4821 "/home/ubuntu/neovim/src/nvim/eval.c"
;
reg_iter = op_global_reg_iter(reg_iter, &name, ®, &is_unnamed);
} while (reg_iter !=
# 4823 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4823 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
{
const void *mark_iter =
# 4828 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4828 "/home/ubuntu/neovim/src/nvim/eval.c"
;
do {
xfmark_T fm;
char name = '\000';
mark_iter = mark_global_iter(mark_iter, &name, &fm);
} while (mark_iter !=
# 4833 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4833 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
for (tabpage_T *(tp) = first_tabpage; (tp) !=
# 4837 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4837 "/home/ubuntu/neovim/src/nvim/eval.c"
; (tp) = (tp)->tp_next) {
abort = abort || set_ref_in_item(&tp->tp_winvar.di_tv, copyID,
# 4838 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4838 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 4838 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4838 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
abort = abort || set_ref_in_ht(&globvardict.dv_hashtab, copyID,
# 4842 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4842 "/home/ubuntu/neovim/src/nvim/eval.c"
);
abort = abort || set_ref_in_call_stack(copyID);
abort = abort || set_ref_in_functions(copyID);
{
Channel *data;
{ uint32_t __i; for (__i = 0; __i < (&channels)->set.h.n_keys; __i++) { (data) = (&channels)->values[__i]; { set_ref_in_callback_reader(&data->on_data, copyID,
# 4853 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4853 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 4853 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4853 "/home/ubuntu/neovim/src/nvim/eval.c"
); set_ref_in_callback_reader(&data->on_stderr, copyID,
# 4853 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4853 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 4853 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4853 "/home/ubuntu/neovim/src/nvim/eval.c"
); set_ref_in_callback(&data->on_exit, copyID,
# 4853 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4853 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 4853 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4853 "/home/ubuntu/neovim/src/nvim/eval.c"
); }; } }
}
{
timer_T *timer;
{ uint32_t __i; for (__i = 0; __i < (&timers)->set.h.n_keys; __i++) { (timer) = (&timers)->values[__i]; { set_ref_in_callback(&timer->callback, copyID,
# 4863 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4863 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 4863 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4863 "/home/ubuntu/neovim/src/nvim/eval.c"
); }; } }
}
abort = abort || set_ref_in_func_args(copyID);
abort = abort || set_ref_in_ht(&vimvardict.dv_hashtab, copyID,
# 4872 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4872 "/home/ubuntu/neovim/src/nvim/eval.c"
);
abort = abort || set_ref_in_quickfix(copyID);
# 4876 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4876 "/home/ubuntu/neovim/src/nvim/eval.c"
did_free =
# 4876 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 4876 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (!abort) {
did_free = free_unref_items(copyID);
did_free = free_unref_funccal(copyID, testing) || did_free;
} else if (p_verbose > 0) {
verb_msg(gettext("Not enough memory to set references, garbage collection aborted!"));
}
return did_free;
}
# 4898 "/home/ubuntu/neovim/src/nvim/eval.c"
static int free_unref_items(int copyID)
{
# 4900 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4900 "/home/ubuntu/neovim/src/nvim/eval.c"
did_free =
# 4900 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 4900 "/home/ubuntu/neovim/src/nvim/eval.c"
;
tv_in_free_unref_items =
# 4905 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 4905 "/home/ubuntu/neovim/src/nvim/eval.c"
;
for (dict_T *dd = gc_first_dict; dd !=
# 4912 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4912 "/home/ubuntu/neovim/src/nvim/eval.c"
; dd = dd->dv_used_next) {
if ((dd->dv_copyID & (~0x1)) != (copyID & (~0x1))) {
tv_dict_free_contents(dd);
did_free =
# 4918 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 4918 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
}
for (list_T *ll = gc_first_list; ll !=
# 4925 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4925 "/home/ubuntu/neovim/src/nvim/eval.c"
; ll = ll->lv_used_next) {
if ((tv_list_copyid(ll) & (~0x1)) != (copyID & (~0x1))
&& !tv_list_has_watchers(ll)) {
tv_list_free_contents(ll);
did_free =
# 4932 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 4932 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
}
dict_T *dd_next;
for (dict_T *dd = gc_first_dict; dd !=
# 4938 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4938 "/home/ubuntu/neovim/src/nvim/eval.c"
; dd = dd_next) {
dd_next = dd->dv_used_next;
if ((dd->dv_copyID & (~0x1)) != (copyID & (~0x1))) {
tv_dict_free_dict(dd);
}
}
list_T *ll_next;
for (list_T *ll = gc_first_list; ll !=
# 4946 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4946 "/home/ubuntu/neovim/src/nvim/eval.c"
; ll = ll_next) {
ll_next = ll->lv_used_next;
if ((ll->lv_copyID & (~0x1)) != (copyID & (~0x1))
&& !tv_list_has_watchers(ll)) {
tv_list_free_list(ll);
}
}
tv_in_free_unref_items =
# 4956 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 4956 "/home/ubuntu/neovim/src/nvim/eval.c"
;
return did_free;
}
# 4967 "/home/ubuntu/neovim/src/nvim/eval.c"
# 4967 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4967 "/home/ubuntu/neovim/src/nvim/eval.c"
set_ref_in_ht(hashtab_T *ht, int copyID, list_stack_T **list_stack)
FUNC_ATTR_WARN_UNUSED_RESULT
{
# 4970 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 4970 "/home/ubuntu/neovim/src/nvim/eval.c"
abort =
# 4970 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 4970 "/home/ubuntu/neovim/src/nvim/eval.c"
;
ht_stack_T *ht_stack =
# 4971 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4971 "/home/ubuntu/neovim/src/nvim/eval.c"
;
hashtab_T *cur_ht = ht;
while (
# 4974 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 4974 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
if (!abort) {
do { hashtab_T *const hiht_ = (cur_ht); size_t hitodo_ = hiht_->ht_used; for (hashitem_T *hi = hiht_->ht_array; hitodo_; hi++) { if (!((hi)->hi_key ==
# 4979 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4979 "/home/ubuntu/neovim/src/nvim/eval.c"
|| (hi)->hi_key == &hash_removed)) { hitodo_--; { { abort = abort || set_ref_in_item(&((dictitem_T *)((hi)->hi_key -
# 4979 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
__builtin_offsetof (
# 4979 "/home/ubuntu/neovim/src/nvim/eval.c"
dictitem_T
# 4979 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
,
# 4979 "/home/ubuntu/neovim/src/nvim/eval.c"
di_key
# 4979 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
)
# 4979 "/home/ubuntu/neovim/src/nvim/eval.c"
))->di_tv, copyID, &ht_stack, list_stack); } } } } } while (0)
;
}
if (ht_stack ==
# 4984 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 4984 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
break;
}
cur_ht = ht_stack->ht;
ht_stack_T *tempitem = ht_stack;
ht_stack = ht_stack->prev;
xfree(tempitem);
}
return abort;
}
# 5005 "/home/ubuntu/neovim/src/nvim/eval.c"
# 5005 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5005 "/home/ubuntu/neovim/src/nvim/eval.c"
set_ref_in_list_items(list_T *l, int copyID, ht_stack_T **ht_stack)
FUNC_ATTR_WARN_UNUSED_RESULT
{
# 5008 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5008 "/home/ubuntu/neovim/src/nvim/eval.c"
abort =
# 5008 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 5008 "/home/ubuntu/neovim/src/nvim/eval.c"
;
list_stack_T *list_stack =
# 5009 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5009 "/home/ubuntu/neovim/src/nvim/eval.c"
;
list_T *cur_l = l;
while (
# 5012 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 5012 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
do { list_T *const l_ = (cur_l); if (l_ !=
# 5016 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5016 "/home/ubuntu/neovim/src/nvim/eval.c"
) { for ( listitem_T *li = l_->lv_first; li !=
# 5016 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5016 "/home/ubuntu/neovim/src/nvim/eval.c"
; li = li->li_next) { { if (abort) { break; } abort = set_ref_in_item((&(li)->li_tv), copyID, ht_stack, &list_stack); } } } } while (0)
;
if (list_stack ==
# 5024 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5024 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
break;
}
cur_l = list_stack->list;
list_stack_T *tempitem = list_stack;
list_stack = list_stack->prev;
xfree(tempitem);
}
return abort;
}
static
# 5040 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5040 "/home/ubuntu/neovim/src/nvim/eval.c"
set_ref_in_item_dict(dict_T *dd, int copyID, ht_stack_T **ht_stack,
list_stack_T **list_stack)
{
if (dd ==
# 5043 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5043 "/home/ubuntu/neovim/src/nvim/eval.c"
|| dd->dv_copyID == copyID) {
return
# 5044 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 5044 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
dd->dv_copyID = copyID;
if (ht_stack ==
# 5049 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5049 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return set_ref_in_ht(&dd->dv_hashtab, copyID, list_stack);
}
ht_stack_T *const newitem = xmalloc(sizeof(ht_stack_T));
newitem->ht = &dd->dv_hashtab;
newitem->prev = *ht_stack;
*ht_stack = newitem;
QUEUE *w =
# 5058 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5058 "/home/ubuntu/neovim/src/nvim/eval.c"
;
DictWatcher *watcher =
# 5059 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5059 "/home/ubuntu/neovim/src/nvim/eval.c"
;
(w) = (&dd->watchers)->next; while ((w) != (&dd->watchers)) { QUEUE *next = w->next; { watcher = tv_dict_watcher_node_data(w); set_ref_in_callback(&watcher->callback, copyID, ht_stack, list_stack); } (w) = next; }
return
# 5065 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 5065 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
static
# 5070 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5070 "/home/ubuntu/neovim/src/nvim/eval.c"
set_ref_in_item_list(list_T *ll, int copyID, ht_stack_T **ht_stack,
list_stack_T **list_stack)
{
if (ll ==
# 5073 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5073 "/home/ubuntu/neovim/src/nvim/eval.c"
|| ll->lv_copyID == copyID) {
return
# 5074 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 5074 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
ll->lv_copyID = copyID;
if (list_stack ==
# 5079 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5079 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return set_ref_in_list_items(ll, copyID, ht_stack);
}
list_stack_T *const newitem = xmalloc(sizeof(list_stack_T));
newitem->list = ll;
newitem->prev = *list_stack;
*list_stack = newitem;
return
# 5088 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 5088 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
static
# 5093 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5093 "/home/ubuntu/neovim/src/nvim/eval.c"
set_ref_in_item_partial(partial_T *pt, int copyID, ht_stack_T **ht_stack,
list_stack_T **list_stack)
{
if (pt ==
# 5096 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5096 "/home/ubuntu/neovim/src/nvim/eval.c"
|| pt->pt_copyID == copyID) {
return
# 5097 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 5097 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
pt->pt_copyID = copyID;
# 5103 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5103 "/home/ubuntu/neovim/src/nvim/eval.c"
abort = set_ref_in_func(pt->pt_name, pt->pt_func, copyID);
if (pt->pt_dict !=
# 5105 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5105 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
typval_T dtv;
dtv.v_type = VAR_DICT;
dtv.vval.v_dict = pt->pt_dict;
abort = abort || set_ref_in_item(&dtv, copyID, ht_stack, list_stack);
}
for (int i = 0; i < pt->pt_argc; i++) {
abort = abort || set_ref_in_item(&pt->pt_argv[i], copyID, ht_stack, list_stack);
}
return abort;
}
# 5128 "/home/ubuntu/neovim/src/nvim/eval.c"
# 5128 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5128 "/home/ubuntu/neovim/src/nvim/eval.c"
set_ref_in_item(typval_T *tv, int copyID, ht_stack_T **ht_stack, list_stack_T **list_stack)
FUNC_ATTR_WARN_UNUSED_RESULT
{
# 5131 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5131 "/home/ubuntu/neovim/src/nvim/eval.c"
abort =
# 5131 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 5131 "/home/ubuntu/neovim/src/nvim/eval.c"
;
switch (tv->v_type) {
case VAR_DICT:
return set_ref_in_item_dict(tv->vval.v_dict, copyID, ht_stack, list_stack);
case VAR_LIST:
return set_ref_in_item_list(tv->vval.v_list, copyID, ht_stack, list_stack);
case VAR_FUNC:
abort = set_ref_in_func(tv->vval.v_string,
# 5139 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5139 "/home/ubuntu/neovim/src/nvim/eval.c"
, copyID);
break;
case VAR_PARTIAL:
return set_ref_in_item_partial(tv->vval.v_partial, copyID, ht_stack, list_stack);
case VAR_UNKNOWN:
case VAR_BOOL:
case VAR_SPECIAL:
case VAR_FLOAT:
case VAR_NUMBER:
case VAR_STRING:
case VAR_BLOB:
break;
}
return abort;
}
static int get_literal_key(char **arg, typval_T *tv)
FUNC_ATTR_NONNULL_ALL
{
char *p;
if (!((((unsigned)(**arg) >= 'A' && (unsigned)(**arg) <= 'Z') || ((unsigned)(**arg) >= 'a' && (unsigned)(**arg) <= 'z')) || ascii_isdigit(**arg)) && **arg != '_' && **arg != '-') {
return 0;
}
for (p = *arg; ((((unsigned)(*p) >= 'A' && (unsigned)(*p) <= 'Z') || ((unsigned)(*p) >= 'a' && (unsigned)(*p) <= 'z')) || ascii_isdigit(*p)) || *p == '_' || *p == '-'; p++) {}
tv->v_type = VAR_STRING;
tv->vval.v_string = xmemdupz(*arg, (size_t)(p - *arg));
*arg = skipwhite(p);
return 1;
}
static int eval_dict(char **arg, typval_T *rettv, evalarg_T *const evalarg,
# 5180 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5180 "/home/ubuntu/neovim/src/nvim/eval.c"
literal)
{
const
# 5182 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5182 "/home/ubuntu/neovim/src/nvim/eval.c"
evaluate = evalarg ==
# 5182 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5182 "/home/ubuntu/neovim/src/nvim/eval.c"
?
# 5182 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 5182 "/home/ubuntu/neovim/src/nvim/eval.c"
: evalarg->eval_flags & EVAL_EVALUATE;
typval_T tv;
char *key =
# 5184 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5184 "/home/ubuntu/neovim/src/nvim/eval.c"
;
char *curly_expr = skipwhite(*arg + 1);
char buf[NUMBUFLEN];
if (*curly_expr != '}'
&& !literal
&& eval1(&curly_expr, &tv,
# 5196 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5196 "/home/ubuntu/neovim/src/nvim/eval.c"
) == 1
&& *skipwhite(curly_expr) == '}') {
return 2;
}
dict_T *d =
# 5201 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5201 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (evaluate) {
d = tv_dict_alloc();
}
typval_T tvkey;
tvkey.v_type = VAR_UNKNOWN;
tv.v_type = VAR_UNKNOWN;
*arg = skipwhite(*arg + 1);
while (**arg != '}' && **arg != '\000') {
if ((literal
? get_literal_key(arg, &tvkey)
: eval1(arg, &tvkey, evalarg)) == 0) {
goto failret;
}
if (**arg != ':') {
semsg(gettext("E720: Missing colon in Dictionary: %s"), *arg);
tv_clear(&tvkey);
goto failret;
}
if (evaluate) {
key = (char *)tv_get_string_buf_chk(&tvkey, buf);
if (key ==
# 5223 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5223 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
tv_clear(&tvkey);
goto failret;
}
}
*arg = skipwhite(*arg + 1);
if (eval1(arg, &tv, evalarg) == 0) {
if (evaluate) {
tv_clear(&tvkey);
}
goto failret;
}
if (evaluate) {
dictitem_T *item = tv_dict_find(d, key, -1);
if (item !=
# 5239 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5239 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
semsg(gettext("E721: Duplicate key in Dictionary: \"%s\""), key);
tv_clear(&tvkey);
tv_clear(&tv);
goto failret;
}
item = tv_dict_item_alloc(key);
item->di_tv = tv;
item->di_tv.v_lock = VAR_UNLOCKED;
if (tv_dict_add(d, item) == 0) {
tv_dict_item_free(item);
}
}
tv_clear(&tvkey);
# 5255 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5255 "/home/ubuntu/neovim/src/nvim/eval.c"
had_comma = **arg == ',';
if (had_comma) {
*arg = skipwhite(*arg + 1);
}
if (**arg == '}') {
break;
}
if (!had_comma) {
semsg(gettext("E722: Missing comma in Dictionary: %s"), *arg);
goto failret;
}
}
if (**arg != '}') {
semsg(gettext("E723: Missing end of Dictionary '}': %s"), *arg);
failret:
if (d !=
# 5272 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5272 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
tv_dict_free(d);
}
return 0;
}
*arg = skipwhite(*arg + 1);
if (evaluate) {
tv_dict_set_ret(rettv, d);
}
return 1;
}
static int eval_lit_dict(char **arg, typval_T *rettv, evalarg_T *const evalarg)
{
int ret = 1;
if ((*arg)[1] == '{') {
(*arg)++;
ret = eval_dict(arg, rettv, evalarg,
# 5296 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 5296 "/home/ubuntu/neovim/src/nvim/eval.c"
);
} else {
ret = 2;
}
return ret;
}
# 5313 "/home/ubuntu/neovim/src/nvim/eval.c"
size_t string2float(const char *const text, float_T *const ret_value)
FUNC_ATTR_NONNULL_ALL
{
if (strncasecmp((char *)(text), (char *)("inf"), (size_t)(3)) == 0) {
*ret_value = (float_T)
# 5318 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(__builtin_inff ())
# 5318 "/home/ubuntu/neovim/src/nvim/eval.c"
;
return 3;
}
if (strncasecmp((char *)(text), (char *)("-inf"), (size_t)(3)) == 0) {
*ret_value = (float_T)(-
# 5322 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(__builtin_inff ())
# 5322 "/home/ubuntu/neovim/src/nvim/eval.c"
);
return 4;
}
if (strncasecmp((char *)(text), (char *)("nan"), (size_t)(3)) == 0) {
*ret_value = (float_T)
# 5326 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(__builtin_nanf (""))
# 5326 "/home/ubuntu/neovim/src/nvim/eval.c"
;
return 3;
}
char *s =
# 5329 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5329 "/home/ubuntu/neovim/src/nvim/eval.c"
;
*ret_value = strtod(text, &s);
return (size_t)(s - text);
}
# 5341 "/home/ubuntu/neovim/src/nvim/eval.c"
static int eval_env_var(char **arg, typval_T *rettv, int evaluate)
{
(*arg)++;
char *name = *arg;
int len = get_env_len((const char **)arg);
if (evaluate) {
if (len == 0) {
return 0;
}
int cc = (int)name[len];
name[len] = '\000';
char *string = vim_getenv(name);
if (string ==
# 5355 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5355 "/home/ubuntu/neovim/src/nvim/eval.c"
|| *string == '\000') {
xfree(string);
string = expand_env_save(name - 1);
if (string !=
# 5360 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5360 "/home/ubuntu/neovim/src/nvim/eval.c"
&& *string == '$') {
do { void **ptr_ = (void **)&(string); xfree(*ptr_); *ptr_ =
# 5361 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5361 "/home/ubuntu/neovim/src/nvim/eval.c"
; (void)(*ptr_); } while (0);
}
}
name[len] = (char)cc;
rettv->v_type = VAR_STRING;
rettv->vval.v_string = string;
rettv->v_lock = VAR_UNLOCKED;
}
return 1;
}
void assert_error(garray_T *gap)
{
struct vimvar *vp = &vimvars[VV_ERRORS];
if (vp->vv_di.di_tv.v_type != VAR_LIST || vimvars[VV_ERRORS].vv_di.di_tv.vval.v_list ==
# 5378 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5378 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
set_vim_var_list(VV_ERRORS, tv_list_alloc(1));
}
tv_list_append_string(vimvars[VV_ERRORS].vv_di.di_tv.vval.v_list, gap->ga_data, (ptrdiff_t)gap->ga_len);
}
static void filter_map_dict(dict_T *d, filtermap_T filtermap, const char *func_name,
const char *arg_errmsg, typval_T *expr, typval_T *rettv)
{
if (filtermap == FILTERMAP_MAPNEW) {
rettv->v_type = VAR_DICT;
rettv->vval.v_dict =
# 5392 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5392 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
if (d ==
# 5394 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5395 "/home/ubuntu/neovim/src/nvim/eval.c"
|| (filtermap == FILTERMAP_FILTER
&& value_check_lock(d->dv_lock, arg_errmsg, (
# 5396 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(18446744073709551615UL)
# 5396 "/home/ubuntu/neovim/src/nvim/eval.c"
)))) {
return;
}
dict_T *d_ret =
# 5400 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5400 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (filtermap == FILTERMAP_MAPNEW) {
tv_dict_alloc_ret(rettv);
d_ret = rettv->vval.v_dict;
}
vimvars[VV_KEY].vv_di.di_tv.v_type = VAR_STRING;
const VarLockStatus prev_lock = d->dv_lock;
if (d->dv_lock == VAR_UNLOCKED) {
d->dv_lock = VAR_LOCKED;
}
hash_lock(&d->dv_hashtab);
do { hashtab_T *const dihi_ht_ = (&(d)->dv_hashtab); size_t dihi_todo_ = dihi_ht_->ht_used; for (hashitem_T *dihi_ = dihi_ht_->ht_array; dihi_todo_; dihi_++) { if (!((dihi_)->hi_key ==
# 5414 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5414 "/home/ubuntu/neovim/src/nvim/eval.c"
|| (dihi_)->hi_key == &hash_removed)) { dihi_todo_--; { { { dictitem_T *const di = ((dictitem_T *)((dihi_)->hi_key -
# 5414 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
__builtin_offsetof (
# 5414 "/home/ubuntu/neovim/src/nvim/eval.c"
dictitem_T
# 5414 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
,
# 5414 "/home/ubuntu/neovim/src/nvim/eval.c"
di_key
# 5414 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
)
# 5414 "/home/ubuntu/neovim/src/nvim/eval.c"
)); { { if (filtermap == FILTERMAP_MAP && (value_check_lock(di->di_tv.v_lock, arg_errmsg, (
# 5414 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(18446744073709551615UL)
# 5414 "/home/ubuntu/neovim/src/nvim/eval.c"
)) || var_check_ro(di->di_flags, arg_errmsg, (
# 5414 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(18446744073709551615UL)
# 5414 "/home/ubuntu/neovim/src/nvim/eval.c"
)))) { break; } vimvars[VV_KEY].vv_di.di_tv.vval.v_string = xstrdup(di->di_key); typval_T newtv;
# 5414 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5414 "/home/ubuntu/neovim/src/nvim/eval.c"
rem; int r = filter_map_one(&di->di_tv, expr, filtermap, &newtv, &rem); tv_clear(&vimvars[VV_KEY].vv_di.di_tv); if (r == 0 || did_emsg) { tv_clear(&newtv); break; } if (filtermap == FILTERMAP_MAP) { tv_clear(&di->di_tv); newtv.v_lock = VAR_UNLOCKED; di->di_tv = newtv; } else if (filtermap == FILTERMAP_MAPNEW) { r = tv_dict_add_tv(d_ret, di->di_key, strlen(di->di_key), &newtv); tv_clear(&newtv); if (r == 0) { break; } } else if (filtermap == FILTERMAP_FILTER && rem) { if (var_check_fixed(di->di_flags, arg_errmsg, (
# 5414 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(18446744073709551615UL)
# 5414 "/home/ubuntu/neovim/src/nvim/eval.c"
)) || var_check_ro(di->di_flags, arg_errmsg, (
# 5414 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(18446744073709551615UL)
# 5414 "/home/ubuntu/neovim/src/nvim/eval.c"
))) { break; } tv_dict_item_remove(d, di); } } } } } } } } } while (0)
# 5449 "/home/ubuntu/neovim/src/nvim/eval.c"
;
hash_unlock(&d->dv_hashtab);
d->dv_lock = prev_lock;
}
static void filter_map_blob(blob_T *blob_arg, filtermap_T filtermap, typval_T *expr,
const char *arg_errmsg, typval_T *rettv)
{
if (filtermap == FILTERMAP_MAPNEW) {
rettv->v_type = VAR_BLOB;
rettv->vval.v_blob =
# 5460 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5460 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
blob_T *b = blob_arg;
if (b ==
# 5463 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5464 "/home/ubuntu/neovim/src/nvim/eval.c"
|| (filtermap == FILTERMAP_FILTER
&& value_check_lock(b->bv_lock, arg_errmsg, (
# 5465 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(18446744073709551615UL)
# 5465 "/home/ubuntu/neovim/src/nvim/eval.c"
)))) {
return;
}
blob_T *b_ret = b;
if (filtermap == FILTERMAP_MAPNEW) {
tv_blob_copy(b, rettv);
b_ret = rettv->vval.v_blob;
}
vimvars[VV_KEY].vv_di.di_tv.v_type = VAR_NUMBER;
const VarLockStatus prev_lock = b->bv_lock;
if (b->bv_lock == 0) {
b->bv_lock = VAR_LOCKED;
}
for (int i = 0, idx = 0; i < b->bv_ga.ga_len; i++) {
const varnumber_T val = tv_blob_get(b, i);
typval_T tv = {
.v_type = VAR_NUMBER,
.v_lock = VAR_UNLOCKED,
.vval.v_number = val,
};
vimvars[VV_KEY].vv_di.di_tv.vval.v_number = idx;
typval_T newtv;
# 5492 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5492 "/home/ubuntu/neovim/src/nvim/eval.c"
rem;
if (filter_map_one(&tv, expr, filtermap, &newtv, &rem) == 0
|| did_emsg) {
break;
}
if (filtermap != FILTERMAP_FOREACH) {
if (newtv.v_type != VAR_NUMBER && newtv.v_type != VAR_BOOL) {
tv_clear(&newtv);
emsg(gettext(e_invalblob));
break;
}
if (filtermap != FILTERMAP_FILTER) {
if (newtv.vval.v_number != val) {
tv_blob_set(b_ret, i, (uint8_t)newtv.vval.v_number);
}
} else if (rem) {
char *const p = (char *)blob_arg->bv_ga.ga_data;
memmove(p + i, p + i + 1, (size_t)(b->bv_ga.ga_len - i - 1));
b->bv_ga.ga_len--;
i--;
}
}
idx++;
}
b->bv_lock = prev_lock;
}
static void filter_map_string(const char *str, filtermap_T filtermap, typval_T *expr,
typval_T *rettv)
{
rettv->v_type = VAR_STRING;
rettv->vval.v_string =
# 5525 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5525 "/home/ubuntu/neovim/src/nvim/eval.c"
;
vimvars[VV_KEY].vv_di.di_tv.v_type = VAR_NUMBER;
garray_T ga;
ga_init(&ga, (int)sizeof(char), 80);
int len = 0;
int idx = 0;
for (const char *p = str; *p != '\000'; p += len) {
len = utfc_ptr2len(p);
typval_T tv = {
.v_type = VAR_STRING,
.v_lock = VAR_UNLOCKED,
.vval.v_string = xmemdupz(p, (size_t)len),
};
vimvars[VV_KEY].vv_di.di_tv.vval.v_number = idx;
typval_T newtv;
# 5543 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5543 "/home/ubuntu/neovim/src/nvim/eval.c"
rem;
if (filter_map_one(&tv, expr, filtermap, &newtv, &rem) == 0
|| did_emsg) {
tv_clear(&newtv);
tv_clear(&tv);
break;
}
if (filtermap == FILTERMAP_MAP || filtermap == FILTERMAP_MAPNEW) {
if (newtv.v_type != VAR_STRING) {
tv_clear(&newtv);
tv_clear(&tv);
emsg(gettext(e_stringreq));
break;
} else {
ga_concat(&ga, newtv.vval.v_string);
}
} else if (filtermap == FILTERMAP_FOREACH || !rem) {
ga_concat(&ga, tv.vval.v_string);
}
tv_clear(&newtv);
tv_clear(&tv);
idx++;
}
ga_append(&ga, '\000');
rettv->vval.v_string = ga.ga_data;
}
static void filter_map_list(list_T *l, filtermap_T filtermap, const char *func_name,
const char *arg_errmsg, typval_T *expr, typval_T *rettv)
{
if (filtermap == FILTERMAP_MAPNEW) {
rettv->v_type = VAR_LIST;
rettv->vval.v_list =
# 5579 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5579 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
if (l ==
# 5581 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5582 "/home/ubuntu/neovim/src/nvim/eval.c"
|| (filtermap == FILTERMAP_FILTER
&& value_check_lock(tv_list_locked(l), arg_errmsg, (
# 5583 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(18446744073709551615UL)
# 5583 "/home/ubuntu/neovim/src/nvim/eval.c"
)))) {
return;
}
list_T *l_ret =
# 5587 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5587 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (filtermap == FILTERMAP_MAPNEW) {
tv_list_alloc_ret(rettv, kListLenUnknown);
l_ret = rettv->vval.v_list;
}
vimvars[VV_KEY].vv_di.di_tv.v_type = VAR_NUMBER;
const VarLockStatus prev_lock = tv_list_locked(l);
if (tv_list_locked(l) == VAR_UNLOCKED) {
tv_list_set_lock(l, VAR_LOCKED);
}
int idx = 0;
for (listitem_T *li = tv_list_first(l); li !=
# 5602 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5602 "/home/ubuntu/neovim/src/nvim/eval.c"
;) {
if (filtermap == FILTERMAP_MAP
&& value_check_lock((&(li)->li_tv)->v_lock, arg_errmsg, (
# 5604 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(18446744073709551615UL)
# 5604 "/home/ubuntu/neovim/src/nvim/eval.c"
))) {
break;
}
vimvars[VV_KEY].vv_di.di_tv.vval.v_number = idx;
typval_T newtv;
# 5609 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5609 "/home/ubuntu/neovim/src/nvim/eval.c"
rem;
if (filter_map_one((&(li)->li_tv), expr, filtermap, &newtv, &rem) == 0) {
break;
}
if (did_emsg) {
tv_clear(&newtv);
break;
}
if (filtermap == FILTERMAP_MAP) {
tv_clear((&(li)->li_tv));
newtv.v_lock = VAR_UNLOCKED;
*(&(li)->li_tv) = newtv;
} else if (filtermap == FILTERMAP_MAPNEW) {
tv_list_append_owned_tv(l_ret, newtv);
}
if (filtermap == FILTERMAP_FILTER && rem) {
li = tv_list_item_remove(l, li);
} else {
li = ((li)->li_next);
}
idx++;
}
tv_list_set_lock(l, prev_lock);
}
static void filter_map(typval_T *argvars, typval_T *rettv, filtermap_T filtermap)
{
const char *const func_name = (filtermap == FILTERMAP_MAP
? "map()"
: (filtermap == FILTERMAP_MAPNEW
? "mapnew()"
: (filtermap == FILTERMAP_FILTER
? "filter()"
: "foreach()")));
const char *const arg_errmsg = (filtermap == FILTERMAP_MAP
? "map() argument"
: (filtermap == FILTERMAP_MAPNEW
? "mapnew() argument"
: (filtermap == FILTERMAP_FILTER
? "filter() argument"
: "foreach() argument")));
if (filtermap != FILTERMAP_MAPNEW && argvars[0].v_type != VAR_STRING) {
tv_copy(&argvars[0], rettv);
}
if (argvars[0].v_type != VAR_BLOB
&& argvars[0].v_type != VAR_LIST
&& argvars[0].v_type != VAR_DICT
&& argvars[0].v_type != VAR_STRING) {
semsg(gettext(e_argument_of_str_must_be_list_string_dictionary_or_blob), func_name);
return;
}
typval_T *expr = &argvars[1];
if (expr->v_type == VAR_UNKNOWN) {
return;
}
typval_T save_val;
prepare_vimvar(VV_VAL, &save_val);
int save_did_emsg = did_emsg;
did_emsg =
# 5682 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 5682 "/home/ubuntu/neovim/src/nvim/eval.c"
;
typval_T save_key;
prepare_vimvar(VV_KEY, &save_key);
if (argvars[0].v_type == VAR_DICT) {
filter_map_dict(argvars[0].vval.v_dict, filtermap, func_name,
arg_errmsg, expr, rettv);
} else if (argvars[0].v_type == VAR_BLOB) {
filter_map_blob(argvars[0].vval.v_blob, filtermap, expr, arg_errmsg, rettv);
} else if (argvars[0].v_type == VAR_STRING) {
filter_map_string(tv_get_string(&argvars[0]), filtermap, expr, rettv);
} else {
# 5694 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void) sizeof ((
# 5694 "/home/ubuntu/neovim/src/nvim/eval.c"
argvars[0].v_type == VAR_LIST
# 5694 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
) ? 1 : 0), __extension__ ({ if (
# 5694 "/home/ubuntu/neovim/src/nvim/eval.c"
argvars[0].v_type == VAR_LIST
# 5694 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
) ; else __assert_fail (
# 5694 "/home/ubuntu/neovim/src/nvim/eval.c"
"argvars[0].v_type == VAR_LIST"
# 5694 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
, "/home/ubuntu/neovim/src/nvim/eval.c", 5694, __extension__ __PRETTY_FUNCTION__); }))
# 5694 "/home/ubuntu/neovim/src/nvim/eval.c"
;
filter_map_list(argvars[0].vval.v_list, filtermap, func_name,
arg_errmsg, expr, rettv);
}
restore_vimvar(VV_KEY, &save_key);
restore_vimvar(VV_VAL, &save_val);
did_emsg |= save_did_emsg;
}
# 5712 "/home/ubuntu/neovim/src/nvim/eval.c"
static int filter_map_one(typval_T *tv, typval_T *expr, const filtermap_T filtermap,
typval_T *newtv,
# 5713 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5713 "/home/ubuntu/neovim/src/nvim/eval.c"
*remp)
FUNC_ATTR_NONNULL_ALL
{
typval_T argv[3];
int retval = 0;
tv_copy(tv, &vimvars[VV_VAL].vv_di.di_tv);
newtv->v_type = VAR_UNKNOWN;
if (filtermap == FILTERMAP_FOREACH && expr->v_type == VAR_STRING) {
do_cmdline_cmd(expr->vval.v_string);
if (!did_emsg) {
retval = 1;
}
goto theend;
}
argv[0] = vimvars[VV_KEY].vv_di.di_tv;
argv[1] = vimvars[VV_VAL].vv_di.di_tv;
if (eval_expr_typval(expr,
# 5733 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 5733 "/home/ubuntu/neovim/src/nvim/eval.c"
, argv, 2, newtv) == 0) {
goto theend;
}
if (filtermap == FILTERMAP_FILTER) {
# 5737 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5737 "/home/ubuntu/neovim/src/nvim/eval.c"
error =
# 5737 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 5737 "/home/ubuntu/neovim/src/nvim/eval.c"
;
*remp = (tv_get_number_chk(newtv, &error) == 0);
tv_clear(newtv);
if (error) {
goto theend;
}
} else if (filtermap == FILTERMAP_FOREACH) {
tv_clear(newtv);
}
retval = 1;
theend:
tv_clear(&vimvars[VV_VAL].vv_di.di_tv);
return retval;
}
void f_filter(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
{
filter_map(argvars, rettv, FILTERMAP_FILTER);
}
void f_map(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
{
filter_map(argvars, rettv, FILTERMAP_MAP);
}
void f_mapnew(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
{
filter_map(argvars, rettv, FILTERMAP_MAPNEW);
}
void f_foreach(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
{
filter_map(argvars, rettv, FILTERMAP_FOREACH);
}
# 5789 "/home/ubuntu/neovim/src/nvim/eval.c"
char **tv_to_argv(typval_T *cmd_tv, const char **cmd,
# 5789 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5789 "/home/ubuntu/neovim/src/nvim/eval.c"
*executable)
{
if (cmd_tv->v_type == VAR_STRING) {
const char *cmd_str = tv_get_string(cmd_tv);
if (cmd) {
*cmd = cmd_str;
}
return shell_build_argv(cmd_str,
# 5796 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5796 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
if (cmd_tv->v_type != VAR_LIST) {
semsg(gettext(e_invarg2), "expected String or List");
return
# 5801 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5801 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
list_T *argl = cmd_tv->vval.v_list;
int argc = tv_list_len(argl);
if (!argc) {
emsg(gettext(e_invarg));
return
# 5808 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5808 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
const char *arg0 = tv_get_string_chk((&(tv_list_first(argl))->li_tv));
char *exe_resolved =
# 5812 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5812 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (!arg0 || !os_can_exe(arg0, &exe_resolved,
# 5813 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 5813 "/home/ubuntu/neovim/src/nvim/eval.c"
)) {
if (arg0 && executable) {
char buf[(1024 + 1)];
snprintf(buf, sizeof(buf), "'%s' is not executable", arg0);
semsg(gettext(e_invargNval), "cmd", buf);
*executable =
# 5818 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 5818 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
return
# 5820 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5820 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
if (cmd) {
*cmd = exe_resolved;
}
int i = 0;
char **argv = xcalloc((size_t)argc + 1, sizeof(char *));
do { const list_T *const l_ = (argl); if (l_ !=
# 5830 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5830 "/home/ubuntu/neovim/src/nvim/eval.c"
) { for (const listitem_T *arg = l_->lv_first; arg !=
# 5830 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5830 "/home/ubuntu/neovim/src/nvim/eval.c"
; arg = arg->li_next) { { const char *a = tv_get_string_chk((&(arg)->li_tv)); if (!a) { shell_free_argv(argv); xfree(exe_resolved); return
# 5830 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5830 "/home/ubuntu/neovim/src/nvim/eval.c"
; } argv[i++] = xstrdup(a); } } } } while (0)
# 5839 "/home/ubuntu/neovim/src/nvim/eval.c"
;
xfree(argv[0]);
argv[0] = exe_resolved;
return argv;
}
static list_T *string_to_list(const char *str, size_t len, const
# 5848 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5848 "/home/ubuntu/neovim/src/nvim/eval.c"
keepempty)
{
if (!keepempty && str[len - 1] == '\012') {
len--;
}
list_T *const list = tv_list_alloc(kListLenMayKnow);
encode_list_write(list, str, len);
return list;
}
void get_system_output_as_rettv(typval_T *argvars, typval_T *rettv,
# 5859 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5859 "/home/ubuntu/neovim/src/nvim/eval.c"
retlist)
{
proftime_T wait_time;
# 5862 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5862 "/home/ubuntu/neovim/src/nvim/eval.c"
profiling = do_profiling == 1;
rettv->v_type = VAR_STRING;
rettv->vval.v_string =
# 5865 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5865 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (check_secure()) {
return;
}
ptrdiff_t input_len;
char *input = save_tv_as_string(&argvars[1], &input_len,
# 5873 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 5873 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 5873 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 5873 "/home/ubuntu/neovim/src/nvim/eval.c"
);
if (input_len < 0) {
# 5875 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void) sizeof ((
# 5875 "/home/ubuntu/neovim/src/nvim/eval.c"
input ==
# 5875 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)) ? 1 : 0), __extension__ ({ if (
# 5875 "/home/ubuntu/neovim/src/nvim/eval.c"
input ==
# 5875 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)) ; else __assert_fail (
# 5875 "/home/ubuntu/neovim/src/nvim/eval.c"
"input == NULL"
# 5875 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
, "/home/ubuntu/neovim/src/nvim/eval.c", 5875, __extension__ __PRETTY_FUNCTION__); }))
# 5875 "/home/ubuntu/neovim/src/nvim/eval.c"
;
return;
}
# 5880 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5880 "/home/ubuntu/neovim/src/nvim/eval.c"
executable =
# 5880 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 5880 "/home/ubuntu/neovim/src/nvim/eval.c"
;
char **argv = tv_to_argv(&argvars[0],
# 5881 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5881 "/home/ubuntu/neovim/src/nvim/eval.c"
, &executable);
if (!argv) {
if (!executable) {
set_vim_var_nr(VV_SHELL_ERROR, -1);
}
xfree(input);
return;
}
if (p_verbose > 3) {
char *cmdstr = shell_argv_to_str(argv);
verbose_enter_scroll();
smsg(0, gettext("Executing command: \"%s\""), cmdstr);
msg_puts("\n\n");
verbose_leave_scroll();
xfree(cmdstr);
}
if (profiling) {
prof_child_enter(&wait_time);
}
size_t nread = 0;
char *res =
# 5905 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5905 "/home/ubuntu/neovim/src/nvim/eval.c"
;
int status = os_system(argv, input, (size_t)input_len, &res, &nread);
if (profiling) {
prof_child_exit(&wait_time);
}
xfree(input);
set_vim_var_nr(VV_SHELL_ERROR, status);
if (res ==
# 5916 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5916 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
if (retlist) {
tv_list_alloc_ret(rettv, 0);
} else {
rettv->vval.v_string = xstrdup("");
}
return;
}
if (retlist) {
int keepempty = 0;
if (argvars[1].v_type != VAR_UNKNOWN && argvars[2].v_type != VAR_UNKNOWN) {
keepempty = (int)tv_get_number(&argvars[2]);
}
rettv->vval.v_list = string_to_list(res, nread, (
# 5931 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5931 "/home/ubuntu/neovim/src/nvim/eval.c"
)keepempty);
tv_list_ref(rettv->vval.v_list);
rettv->v_type = VAR_LIST;
xfree(res);
} else {
memchrsub(res, '\000', 1, nread);
# 5953 "/home/ubuntu/neovim/src/nvim/eval.c"
rettv->vval.v_string = res;
}
}
# 5958 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 5958 "/home/ubuntu/neovim/src/nvim/eval.c"
callback_from_typval(Callback *const callback, const typval_T *const arg)
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_WARN_UNUSED_RESULT
{
int r = 1;
if (arg->v_type == VAR_PARTIAL && arg->vval.v_partial !=
# 5963 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5963 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
callback->data.partial = arg->vval.v_partial;
callback->data.partial->pt_refcount++;
callback->type = kCallbackPartial;
} else if (arg->v_type == VAR_STRING
&& arg->vval.v_string !=
# 5968 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5969 "/home/ubuntu/neovim/src/nvim/eval.c"
&& ascii_isdigit(*arg->vval.v_string)) {
r = 0;
} else if (arg->v_type == VAR_FUNC || arg->v_type == VAR_STRING) {
char *name = arg->vval.v_string;
if (name ==
# 5973 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5973 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
r = 0;
} else if (*name == '\000') {
callback->type = kCallbackNone;
callback->data.funcref =
# 5977 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5977 "/home/ubuntu/neovim/src/nvim/eval.c"
;
} else {
callback->data.funcref =
# 5979 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5979 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (arg->v_type == VAR_STRING) {
callback->data.funcref = get_scriptlocal_funcname(name);
}
if (callback->data.funcref ==
# 5983 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5983 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
callback->data.funcref = xstrdup(name);
}
func_ref(callback->data.funcref);
callback->type = kCallbackFuncref;
}
} else if (nlua_is_table_from_lua(arg)) {
char *name = nlua_register_table_as_callable(arg);
if (name !=
# 5993 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 5993 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
callback->data.funcref = xstrdup(name);
callback->type = kCallbackFuncref;
} else {
r = 0;
}
} else if (arg->v_type == VAR_SPECIAL
|| (arg->v_type == VAR_NUMBER && arg->vval.v_number == 0)) {
callback->type = kCallbackNone;
callback->data.funcref =
# 6002 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6002 "/home/ubuntu/neovim/src/nvim/eval.c"
;
} else {
r = 0;
}
if (r == 0) {
emsg(gettext("E921: Invalid callback argument"));
return
# 6009 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 6009 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
return
# 6011 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 6011 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
static int callback_depth = 0;
int get_callback_depth(void)
{
return callback_depth;
}
# 6022 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 6022 "/home/ubuntu/neovim/src/nvim/eval.c"
callback_call(Callback *const callback, const int argcount_in, typval_T *const argvars_in,
typval_T *const rettv)
FUNC_ATTR_NONNULL_ALL
{
if (callback_depth > p_mfd) {
emsg(gettext(e_command_too_recursive));
return
# 6028 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 6028 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
partial_T *partial;
char *name;
Array args = { .size = 0, .capacity = 0, .items =
# 6033 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6033 "/home/ubuntu/neovim/src/nvim/eval.c"
};
Object rv;
switch (callback->type) {
case kCallbackFuncref:
name = callback->data.funcref;
int len = (int)strlen(name);
if (len >= 6 && !memcmp(name, "v:lua.", 6)) {
name += 6;
len = check_luafunc_name(name,
# 6041 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 6041 "/home/ubuntu/neovim/src/nvim/eval.c"
);
if (len == 0) {
return
# 6043 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 6043 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
partial = vvlua_partial;
} else {
partial =
# 6047 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6047 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
break;
case kCallbackPartial:
partial = callback->data.partial;
name = partial_name(partial);
break;
case kCallbackLua:
rv = nlua_call_ref(callback->data.luaref,
# 6057 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6057 "/home/ubuntu/neovim/src/nvim/eval.c"
, args, kRetNilBool,
# 6057 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6057 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 6057 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6057 "/home/ubuntu/neovim/src/nvim/eval.c"
);
return ((rv).type == kObjectTypeBoolean && (rv).data.boolean ==
# 6058 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 6058 "/home/ubuntu/neovim/src/nvim/eval.c"
);
case kCallbackNone:
return
# 6061 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 6061 "/home/ubuntu/neovim/src/nvim/eval.c"
;
break;
}
funcexe_T funcexe = (funcexe_T) { .fe_argv_func =
# 6065 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6065 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_firstline = 0, .fe_lastline = 0, .fe_doesrange =
# 6065 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6065 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_evaluate =
# 6065 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 6065 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_partial =
# 6065 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6065 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_selfdict =
# 6065 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6065 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_basetv =
# 6065 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6065 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_found_var =
# 6065 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 6065 "/home/ubuntu/neovim/src/nvim/eval.c"
, };
funcexe.fe_firstline = curwin->w_cursor.lnum;
funcexe.fe_lastline = curwin->w_cursor.lnum;
funcexe.fe_evaluate =
# 6068 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 6068 "/home/ubuntu/neovim/src/nvim/eval.c"
;
funcexe.fe_partial = partial;
callback_depth++;
int ret = call_func(name, -1, rettv, argcount_in, argvars_in, &funcexe);
callback_depth--;
return ret;
}
# 6077 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 6077 "/home/ubuntu/neovim/src/nvim/eval.c"
set_ref_in_callback(Callback *callback, int copyID, ht_stack_T **ht_stack,
list_stack_T **list_stack)
{
typval_T tv;
switch (callback->type) {
case kCallbackFuncref:
case kCallbackNone:
break;
case kCallbackPartial:
tv.v_type = VAR_PARTIAL;
tv.vval.v_partial = callback->data.partial;
return set_ref_in_item(&tv, copyID, ht_stack, list_stack);
break;
case kCallbackLua:
abort();
}
return
# 6095 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 6095 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
static
# 6098 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 6098 "/home/ubuntu/neovim/src/nvim/eval.c"
set_ref_in_callback_reader(CallbackReader *reader, int copyID, ht_stack_T **ht_stack,
list_stack_T **list_stack)
{
if (set_ref_in_callback(&reader->cb, copyID, ht_stack, list_stack)) {
return
# 6102 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 6102 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
if (reader->self) {
typval_T tv;
tv.v_type = VAR_DICT;
tv.vval.v_dict = reader->self;
return set_ref_in_item(&tv, copyID, ht_stack, list_stack);
}
return
# 6111 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 6111 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
timer_T *find_timer_by_nr(varnumber_T xx)
{
return map_get_uint64_tptr_t(&timers, (uint64_t)xx);
}
void add_timer_info(typval_T *rettv, timer_T *timer)
{
list_T *list = rettv->vval.v_list;
dict_T *dict = tv_dict_alloc();
tv_list_append_dict(list, dict);
tv_dict_add_nr(dict, ("id"), (sizeof("id") - 1), timer->timer_id);
tv_dict_add_nr(dict, ("time"), (sizeof("time") - 1), timer->timeout);
tv_dict_add_nr(dict, ("paused"), (sizeof("paused") - 1), timer->paused);
tv_dict_add_nr(dict, ("repeat"), (sizeof("repeat") - 1),
(timer->repeat_count < 0 ? -1 : timer->repeat_count));
dictitem_T *di = tv_dict_item_alloc("callback");
if (tv_dict_add(dict, di) == 0) {
xfree(di);
return;
}
callback_put(&timer->callback, &di->di_tv);
}
void add_timer_info_all(typval_T *rettv)
{
tv_list_alloc_ret(rettv, ((&(&timers)->set)->h.size));
timer_T *timer;
{ uint32_t __i; for (__i = 0; __i < (&timers)->set.h.n_keys; __i++) { (timer) = (&timers)->values[__i]; { if (!timer->stopped || timer->refcount > 1) { add_timer_info(rettv, timer); } }; } }
}
void timer_due_cb(TimeWatcher *tw, void *data)
{
timer_T *timer = (timer_T *)data;
int save_did_emsg = did_emsg;
const int called_emsg_before = called_emsg;
const
# 6158 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 6158 "/home/ubuntu/neovim/src/nvim/eval.c"
save_ex_pressedreturn = get_pressedreturn();
if (timer->stopped || timer->paused) {
return;
}
timer->refcount++;
if (timer->repeat_count >= 0 && --timer->repeat_count == 0) {
timer_stop(timer);
}
typval_T argv[2] = { ((typval_T) { .v_type = VAR_UNKNOWN, .v_lock = VAR_UNLOCKED, }), ((typval_T) { .v_type = VAR_UNKNOWN, .v_lock = VAR_UNLOCKED, }) };
argv[0].v_type = VAR_NUMBER;
argv[0].vval.v_number = timer->timer_id;
typval_T rettv = ((typval_T) { .v_type = VAR_UNKNOWN, .v_lock = VAR_UNLOCKED, });
callback_call(&timer->callback, 1, argv, &rettv);
if (called_emsg > called_emsg_before && did_emsg) {
timer->emsg_count++;
if (did_throw) {
discard_current_exception();
}
}
did_emsg = save_did_emsg;
set_pressedreturn(save_ex_pressedreturn);
if (timer->emsg_count >= 3) {
timer_stop(timer);
}
tv_clear(&rettv);
if (!timer->stopped && timer->timeout == 0) {
time_watcher_start(&timer->tw, timer_due_cb, 0, 0);
}
timer_decref(timer);
}
uint64_t timer_start(const int64_t timeout, const int repeat_count, const Callback *const callback)
{
timer_T *timer = xmalloc(sizeof *timer);
timer->refcount = 1;
timer->stopped =
# 6207 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 6207 "/home/ubuntu/neovim/src/nvim/eval.c"
;
timer->paused =
# 6208 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 6208 "/home/ubuntu/neovim/src/nvim/eval.c"
;
timer->emsg_count = 0;
timer->repeat_count = repeat_count;
timer->timeout = timeout;
timer->timer_id = (int)last_timer_id++;
timer->callback = *callback;
time_watcher_init(&main_loop, &timer->tw, timer);
timer->tw.events = multiqueue_new_child(main_loop.events);
timer->tw.blockable =
# 6218 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 6218 "/home/ubuntu/neovim/src/nvim/eval.c"
;
time_watcher_start(&timer->tw, timer_due_cb, (uint64_t)timeout, (uint64_t)timeout);
map_put_uint64_tptr_t(&timers, (uint64_t)timer->timer_id, timer);
return (uint64_t)timer->timer_id;
}
void timer_stop(timer_T *timer)
{
if (timer->stopped) {
return;
}
timer->stopped =
# 6231 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 6231 "/home/ubuntu/neovim/src/nvim/eval.c"
;
time_watcher_stop(&timer->tw);
time_watcher_close(&timer->tw, timer_close_cb);
}
static void timer_close_cb(TimeWatcher *tw, void *data)
{
timer_T *timer = (timer_T *)data;
multiqueue_free(timer->tw.events);
callback_free(&timer->callback);
map_del_uint64_tptr_t(&timers, (uint64_t)timer->timer_id,
# 6243 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6243 "/home/ubuntu/neovim/src/nvim/eval.c"
);
timer_decref(timer);
}
static void timer_decref(timer_T *timer)
{
if (--timer->refcount == 0) {
xfree(timer);
}
}
void timer_stop_all(void)
{
timer_T *timer;
{ uint32_t __i; for (__i = 0; __i < (&timers)->set.h.n_keys; __i++) { (timer) = (&timers)->values[__i]; { timer_stop(timer); }; } }
}
void timer_teardown(void)
{
timer_stop_all();
}
# 6277 "/home/ubuntu/neovim/src/nvim/eval.c"
char *save_tv_as_string(typval_T *tv, ptrdiff_t *const len,
# 6277 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 6277 "/home/ubuntu/neovim/src/nvim/eval.c"
endnl,
# 6277 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 6277 "/home/ubuntu/neovim/src/nvim/eval.c"
crlf)
FUNC_ATTR_MALLOC FUNC_ATTR_NONNULL_ALL
{
*len = 0;
if (tv->v_type == VAR_UNKNOWN) {
return
# 6282 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6282 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
if (tv->v_type != VAR_LIST && tv->v_type != VAR_NUMBER) {
const char *ret = tv_get_string_chk(tv);
if (ret) {
*len = (ptrdiff_t)strlen(ret);
return xmemdupz(ret, (size_t)(*len));
} else {
*len = -1;
return
# 6294 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6294 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
}
if (tv->v_type == VAR_NUMBER) {
buf_T *buf = buflist_findnr((int)tv->vval.v_number);
if (buf) {
for (linenr_T lnum = 1; lnum <= buf->b_ml.ml_line_count; lnum++) {
for (char *p = ml_get_buf(buf, lnum); *p != '\000'; p++) {
*len += 1;
}
*len += 1;
}
} else {
semsg(gettext(e_nobufnr), tv->vval.v_number);
*len = -1;
return
# 6310 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6310 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
if (*len == 0) {
return
# 6314 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6314 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
char *ret = xmalloc((size_t)(*len) + 1);
char *end = ret;
for (linenr_T lnum = 1; lnum <= buf->b_ml.ml_line_count; lnum++) {
for (char *p = ml_get_buf(buf, lnum); *p != '\000'; p++) {
*end++ = (*p == '\n') ? '\000' : *p;
}
*end++ = '\n';
}
*end = '\000';
*len = end - ret;
return ret;
}
# 6330 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void) sizeof ((
# 6330 "/home/ubuntu/neovim/src/nvim/eval.c"
tv->v_type == VAR_LIST
# 6330 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
) ? 1 : 0), __extension__ ({ if (
# 6330 "/home/ubuntu/neovim/src/nvim/eval.c"
tv->v_type == VAR_LIST
# 6330 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
) ; else __assert_fail (
# 6330 "/home/ubuntu/neovim/src/nvim/eval.c"
"tv->v_type == VAR_LIST"
# 6330 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
, "/home/ubuntu/neovim/src/nvim/eval.c", 6330, __extension__ __PRETTY_FUNCTION__); }))
# 6330 "/home/ubuntu/neovim/src/nvim/eval.c"
;
list_T *list = tv->vval.v_list;
do { const list_T *const l_ = (list); if (l_ !=
# 6333 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6333 "/home/ubuntu/neovim/src/nvim/eval.c"
) { for (const listitem_T *li = l_->lv_first; li !=
# 6333 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6333 "/home/ubuntu/neovim/src/nvim/eval.c"
; li = li->li_next) { { *len += (ptrdiff_t)strlen(tv_get_string((&(li)->li_tv))) + (crlf ? 2 : 1); } } } } while (0)
;
if (*len == 0) {
return
# 6338 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6338 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
char *ret = xmalloc((size_t)(*len) + (endnl ? (crlf ? 2 : 1) : 0));
char *end = ret;
do { const list_T *const l_ = (list); if (l_ !=
# 6343 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6343 "/home/ubuntu/neovim/src/nvim/eval.c"
) { for (const listitem_T *li = l_->lv_first; li !=
# 6343 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6343 "/home/ubuntu/neovim/src/nvim/eval.c"
; li = li->li_next) { { for (const char *s = tv_get_string((&(li)->li_tv)); *s != '\000'; s++) { *end++ = (*s == '\n') ? '\000' : *s; } if (endnl || ((li)->li_next) !=
# 6343 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6343 "/home/ubuntu/neovim/src/nvim/eval.c"
) { if (crlf) { *end++ = '\r'; } *end++ = '\n'; } } } } } while (0)
# 6353 "/home/ubuntu/neovim/src/nvim/eval.c"
;
*end = '\000';
*len = end - ret;
return ret;
}
int buf_byteidx_to_charidx(buf_T *buf, linenr_T lnum, int byteidx)
{
if (buf ==
# 6364 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6364 "/home/ubuntu/neovim/src/nvim/eval.c"
|| buf->b_ml.ml_mfp ==
# 6364 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6364 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return -1;
}
if (lnum > buf->b_ml.ml_line_count) {
lnum = buf->b_ml.ml_line_count;
}
char *str = ml_get_buf(buf, lnum);
if (*str == '\000') {
return 0;
}
char *t = str;
int count;
for (count = 0; *t != '\000' && t <= str + byteidx; count++) {
t += utfc_ptr2len(t);
}
if (*t == '\000' && byteidx != 0 && t == str + byteidx) {
count++;
}
return count - 1;
}
int buf_charidx_to_byteidx(buf_T *buf, linenr_T lnum, int charidx)
{
if (buf ==
# 6402 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6402 "/home/ubuntu/neovim/src/nvim/eval.c"
|| buf->b_ml.ml_mfp ==
# 6402 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6402 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return -1;
}
if (lnum > buf->b_ml.ml_line_count) {
lnum = buf->b_ml.ml_line_count;
}
char *str = ml_get_buf(buf, lnum);
char *t = str;
while (*t != '\000' && --charidx > 0) {
t += utfc_ptr2len(t);
}
return (int)(t - str);
}
# 6432 "/home/ubuntu/neovim/src/nvim/eval.c"
pos_T *var2fpos(const typval_T *const tv, const
# 6432 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 6432 "/home/ubuntu/neovim/src/nvim/eval.c"
dollar_lnum, int *const ret_fnum,
const
# 6433 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 6433 "/home/ubuntu/neovim/src/nvim/eval.c"
charcol)
FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL
{
static pos_T pos;
if (tv->v_type == VAR_LIST) {
# 6440 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 6440 "/home/ubuntu/neovim/src/nvim/eval.c"
error =
# 6440 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 6440 "/home/ubuntu/neovim/src/nvim/eval.c"
;
list_T *l = tv->vval.v_list;
if (l ==
# 6443 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6443 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return
# 6444 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6444 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
pos.lnum = (linenr_T)tv_list_find_nr(l, 0, &error);
if (error || pos.lnum <= 0 || pos.lnum > curbuf->b_ml.ml_line_count) {
return
# 6451 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6451 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
pos.col = (colnr_T)tv_list_find_nr(l, 1, &error);
if (error) {
return
# 6457 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6457 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
int len;
if (charcol) {
len = mb_charlen(ml_get(pos.lnum));
} else {
len = ml_get_len(pos.lnum);
}
listitem_T *li = tv_list_find(l, 1);
if (li !=
# 6468 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6468 "/home/ubuntu/neovim/src/nvim/eval.c"
&& (&(li)->li_tv)->v_type == VAR_STRING
&& (&(li)->li_tv)->vval.v_string !=
# 6469 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6470 "/home/ubuntu/neovim/src/nvim/eval.c"
&& strcmp((&(li)->li_tv)->vval.v_string, "$") == 0) {
pos.col = len + 1;
}
if (pos.col == 0 || (int)pos.col > len + 1) {
return
# 6477 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6477 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
pos.col--;
pos.coladd = (colnr_T)tv_list_find_nr(l, 2, &error);
if (error) {
pos.coladd = 0;
}
return &pos;
}
const char *const name = tv_get_string_chk(tv);
if (name ==
# 6491 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6491 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return
# 6492 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6492 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
pos.lnum = 0;
if (name[0] == '.') {
pos = curwin->w_cursor;
} else if (name[0] == 'v' && name[1] == '\000') {
if (VIsual_active) {
pos = VIsual;
} else {
pos = curwin->w_cursor;
}
} else if (name[0] == '\'') {
int mname = (uint8_t)name[1];
const fmark_T *const fm = mark_get(curbuf, curwin,
# 6509 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6509 "/home/ubuntu/neovim/src/nvim/eval.c"
, kMarkAll, mname);
if (fm ==
# 6510 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6510 "/home/ubuntu/neovim/src/nvim/eval.c"
|| fm->mark.lnum <= 0) {
return
# 6511 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6511 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
pos = fm->mark;
*ret_fnum = ((unsigned)(mname) >= 'A' && (unsigned)(mname) <= 'Z') || ascii_isdigit(mname) ? fm->fnum : *ret_fnum;
}
if (pos.lnum != 0) {
if (charcol) {
pos.col = buf_byteidx_to_charidx(curbuf, pos.lnum, pos.col);
}
return &pos;
}
pos.coladd = 0;
if (name[0] == 'w' && dollar_lnum) {
check_cursor_moved(curwin);
pos.col = 0;
if (name[1] == '0') {
update_topline(curwin);
pos.lnum = curwin->w_topline > 0 ? curwin->w_topline : 1;
return &pos;
} else if (name[1] == '$') {
validate_botline(curwin);
pos.lnum = curwin->w_botline > 0 ? curwin->w_botline - 1 : 0;
return &pos;
}
} else if (name[0] == '$') {
if (dollar_lnum) {
pos.lnum = curbuf->b_ml.ml_line_count;
pos.col = 0;
} else {
pos.lnum = curwin->w_cursor.lnum;
if (charcol) {
pos.col = (colnr_T)mb_charlen(get_cursor_line_ptr());
} else {
pos.col = get_cursor_line_len();
}
}
return &pos;
}
return
# 6558 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6558 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
# 6571 "/home/ubuntu/neovim/src/nvim/eval.c"
int list2fpos(typval_T *arg, pos_T *posp, int *fnump, colnr_T *curswantp,
# 6571 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 6571 "/home/ubuntu/neovim/src/nvim/eval.c"
charcol)
{
list_T *l;
if (arg->v_type != VAR_LIST
|| (l = arg->vval.v_list) ==
# 6578 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6579 "/home/ubuntu/neovim/src/nvim/eval.c"
|| tv_list_len(l) < (fnump ==
# 6579 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6579 "/home/ubuntu/neovim/src/nvim/eval.c"
? 2 : 3)
|| tv_list_len(l) > (fnump ==
# 6580 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6580 "/home/ubuntu/neovim/src/nvim/eval.c"
? 4 : 5)) {
return 0;
}
int i = 0;
int n;
if (fnump !=
# 6586 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6586 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
n = (int)tv_list_find_nr(l, i++,
# 6587 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6587 "/home/ubuntu/neovim/src/nvim/eval.c"
);
if (n < 0) {
return 0;
}
if (n == 0) {
n = curbuf->handle;
}
*fnump = n;
}
n = (int)tv_list_find_nr(l, i++,
# 6597 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6597 "/home/ubuntu/neovim/src/nvim/eval.c"
);
if (n < 0) {
return 0;
}
posp->lnum = n;
n = (int)tv_list_find_nr(l, i++,
# 6603 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6603 "/home/ubuntu/neovim/src/nvim/eval.c"
);
if (n < 0) {
return 0;
}
if (charcol) {
buf_T *buf = buflist_findnr(fnump ==
# 6611 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6611 "/home/ubuntu/neovim/src/nvim/eval.c"
? curbuf->handle : *fnump);
if (buf ==
# 6612 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6612 "/home/ubuntu/neovim/src/nvim/eval.c"
|| buf->b_ml.ml_mfp ==
# 6612 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6612 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return 0;
}
n = buf_charidx_to_byteidx(buf,
posp->lnum == 0 ? curwin->w_cursor.lnum : posp->lnum,
n) + 1;
}
posp->col = n;
n = (int)tv_list_find_nr(l, i,
# 6621 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6621 "/home/ubuntu/neovim/src/nvim/eval.c"
);
if (n < 0) {
posp->coladd = 0;
} else {
posp->coladd = n;
}
if (curswantp !=
# 6628 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6628 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
*curswantp = (colnr_T)tv_list_find_nr(l, i + 1,
# 6629 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6629 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
return 1;
}
int get_env_len(const char **arg)
{
const char *p;
for (p = *arg; vim_isIDc((uint8_t)(*p)); p++) {}
if (p == *arg) {
return 0;
}
int len = (int)(p - *arg);
*arg = p;
return len;
}
int get_id_len(const char **const arg)
{
int len;
const char *p;
for (p = *arg; eval_isnamec(*p); p++) {
if (*p == ':') {
len = (int)(p - *arg);
if (len > 1
|| (len == 1 && vim_strchr(namespace_char, (uint8_t)(**arg)) ==
# 6669 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6669 "/home/ubuntu/neovim/src/nvim/eval.c"
)) {
break;
}
}
}
if (p == *arg) {
return 0;
}
len = (int)(p - *arg);
*arg = skipwhite(p);
return len;
}
# 6693 "/home/ubuntu/neovim/src/nvim/eval.c"
int get_name_len(const char **const arg, char **alias,
# 6693 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 6693 "/home/ubuntu/neovim/src/nvim/eval.c"
evaluate,
# 6693 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 6693 "/home/ubuntu/neovim/src/nvim/eval.c"
verbose)
{
*alias =
# 6695 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6695 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if ((*arg)[0] == (char)(0x80) && (*arg)[1] == (char)253
&& (*arg)[2] == (char)KE_SNR) {
*arg += 3;
return get_id_len(arg) + 3;
}
int len = eval_fname_script(*arg);
if (len > 0) {
*arg += len;
}
char *expr_start;
char *expr_end;
const char *p = find_name_end((*arg), (const char **)&expr_start, (const char **)&expr_end,
len > 0 ? 0 : 2);
if (expr_start !=
# 6714 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6714 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
if (!evaluate) {
len += (int)(p - *arg);
*arg = skipwhite(p);
return len;
}
char *temp_string = make_expanded_name(*arg - len, expr_start, expr_end, (char *)p);
if (temp_string ==
# 6724 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6724 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return -1;
}
*alias = temp_string;
*arg = skipwhite(p);
return (int)strlen(temp_string);
}
len += get_id_len(arg);
if (len == 0 && verbose && **arg != '\000') {
semsg(gettext(e_invexpr2), *arg);
}
return len;
}
# 6751 "/home/ubuntu/neovim/src/nvim/eval.c"
const char *find_name_end(const char *arg, const char **expr_start, const char **expr_end,
int flags)
{
if (expr_start !=
# 6754 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6754 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
*expr_start =
# 6755 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6755 "/home/ubuntu/neovim/src/nvim/eval.c"
;
*expr_end =
# 6756 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6756 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
if ((flags & 2) && !eval_isnamec1(*arg) && *arg != '{') {
return arg;
}
int mb_nest = 0;
int br_nest = 0;
int len;
const char *p;
for (p = arg; *p != '\000'
&& (eval_isnamec(*p)
|| *p == '{'
|| ((flags & 1) && (*p == '['
|| (*p == '.' && eval_isdictc(p[1]))))
|| mb_nest != 0
|| br_nest != 0); (p += utfc_ptr2len((char *)p))) {
if (*p == '\'') {
for (p = p + 1; *p != '\000' && *p != '\''; (p += utfc_ptr2len((char *)p))) {}
if (*p == '\000') {
break;
}
} else if (*p == '"') {
for (p = p + 1; *p != '\000' && *p != '"'; (p += utfc_ptr2len((char *)p))) {
if (*p == '\\' && p[1] != '\000') {
p++;
}
}
if (*p == '\000') {
break;
}
} else if (br_nest == 0 && mb_nest == 0 && *p == ':') {
len = (int)(p - arg);
if ((len > 1 && p[-1] != '}')
|| (len == 1 && vim_strchr(namespace_char, (uint8_t)(*arg)) ==
# 6797 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6797 "/home/ubuntu/neovim/src/nvim/eval.c"
)) {
break;
}
}
if (mb_nest == 0) {
if (*p == '[') {
br_nest++;
} else if (*p == ']') {
br_nest--;
}
}
if (br_nest == 0) {
if (*p == '{') {
mb_nest++;
if (expr_start !=
# 6813 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6813 "/home/ubuntu/neovim/src/nvim/eval.c"
&& *expr_start ==
# 6813 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6813 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
*expr_start = p;
}
} else if (*p == '}') {
mb_nest--;
if (expr_start !=
# 6818 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6818 "/home/ubuntu/neovim/src/nvim/eval.c"
&& mb_nest == 0 && *expr_end ==
# 6818 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6818 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
*expr_end = p;
}
}
}
}
return p;
}
# 6839 "/home/ubuntu/neovim/src/nvim/eval.c"
static char *make_expanded_name(const char *in_start, char *expr_start, char *expr_end,
char *in_end)
{
if (expr_end ==
# 6842 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6842 "/home/ubuntu/neovim/src/nvim/eval.c"
|| in_end ==
# 6842 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6842 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return
# 6843 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6843 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
char *retval =
# 6846 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6846 "/home/ubuntu/neovim/src/nvim/eval.c"
;
*expr_start = '\000';
*expr_end = '\000';
char c1 = *in_end;
*in_end = '\000';
char *temp_result = eval_to_string(expr_start + 1,
# 6853 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 6853 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 6853 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 6853 "/home/ubuntu/neovim/src/nvim/eval.c"
);
if (temp_result !=
# 6854 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6854 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
retval = xmalloc(strlen(temp_result) + (size_t)(expr_start - in_start)
+ (size_t)(in_end - expr_end) + 1);
strcpy((char *)(retval), (char *)(in_start));
strcat(retval, temp_result);
strcat(retval, expr_end + 1);
}
xfree(temp_result);
*in_end = c1;
*expr_start = '{';
*expr_end = '}';
if (retval !=
# 6867 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6867 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
temp_result = (char *)find_name_end(retval,
(const char **)&expr_start,
(const char **)&expr_end, 0);
if (expr_start !=
# 6871 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 6871 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
temp_result = make_expanded_name(retval, expr_start,
expr_end, temp_result);
xfree(retval);
retval = temp_result;
}
}
return retval;
}
# 6885 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 6885 "/home/ubuntu/neovim/src/nvim/eval.c"
eval_isnamec(int c)
{
return ((((unsigned)(c) >= 'A' && (unsigned)(c) <= 'Z') || ((unsigned)(c) >= 'a' && (unsigned)(c) <= 'z')) || ascii_isdigit(c)) || c == '_' || c == ':' || c == '#';
}
# 6892 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 6892 "/home/ubuntu/neovim/src/nvim/eval.c"
eval_isnamec1(int c)
{
return (((unsigned)(c) >= 'A' && (unsigned)(c) <= 'Z') || ((unsigned)(c) >= 'a' && (unsigned)(c) <= 'z')) || c == '_';
}
# 6899 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 6899 "/home/ubuntu/neovim/src/nvim/eval.c"
eval_isdictc(int c)
{
return ((((unsigned)(c) >= 'A' && (unsigned)(c) <= 'Z') || ((unsigned)(c) >= 'a' && (unsigned)(c) <= 'z')) || ascii_isdigit(c)) || c == '_';
}
typval_T *get_vim_var_tv(int idx)
{
return &vimvars[idx].vv_di.di_tv;
}
varnumber_T get_vim_var_nr(int idx) FUNC_ATTR_PURE
{
return vimvars[idx].vv_di.di_tv.vval.v_number;
}
char *get_vim_var_str(int idx)
FUNC_ATTR_PURE FUNC_ATTR_NONNULL_RET
{
return (char *)tv_get_string(&vimvars[idx].vv_di.di_tv);
}
list_T *get_vim_var_list(int idx) FUNC_ATTR_PURE
{
return vimvars[idx].vv_di.di_tv.vval.v_list;
}
dict_T *get_vim_var_dict(int idx) FUNC_ATTR_PURE
{
return vimvars[idx].vv_di.di_tv.vval.v_dict;
}
void set_vim_var_char(int c)
{
char buf[MB_MAXCHAR + 1];
buf[utf_char2bytes(c, buf)] = '\000';
set_vim_var_string(VV_CHAR, buf, -1);
}
void set_vcount(int64_t count, int64_t count1,
# 6951 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 6951 "/home/ubuntu/neovim/src/nvim/eval.c"
set_prevcount)
{
if (set_prevcount) {
vimvars[VV_PREVCOUNT].vv_di.di_tv.vval.v_number = vimvars[VV_COUNT].vv_di.di_tv.vval.v_number;
}
vimvars[VV_COUNT].vv_di.di_tv.vval.v_number = count;
vimvars[VV_COUNT1].vv_di.di_tv.vval.v_number = count1;
}
void set_vim_var_nr(const VimVarIndex idx, const varnumber_T val)
{
tv_clear(&vimvars[idx].vv_di.di_tv);
vimvars[idx].vv_di.di_tv.v_type = VAR_NUMBER;
vimvars[idx].vv_di.di_tv.vval.v_number = val;
}
void set_vim_var_bool(const VimVarIndex idx, const BoolVarValue val)
{
tv_clear(&vimvars[idx].vv_di.di_tv);
vimvars[idx].vv_di.di_tv.v_type = VAR_BOOL;
vimvars[idx].vv_di.di_tv.vval.v_bool = val;
}
void set_vim_var_special(const VimVarIndex idx, const SpecialVarValue val)
{
tv_clear(&vimvars[idx].vv_di.di_tv);
vimvars[idx].vv_di.di_tv.v_type = VAR_SPECIAL;
vimvars[idx].vv_di.di_tv.vval.v_special = val;
}
void set_vim_var_string(const VimVarIndex idx, const char *const val, const ptrdiff_t len)
{
tv_clear(&vimvars[idx].vv_di.di_tv);
vimvars[idx].vv_di.di_tv.v_type = VAR_STRING;
if (val ==
# 7003 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7003 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
vimvars[idx].vv_di.di_tv.vval.v_string =
# 7004 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7004 "/home/ubuntu/neovim/src/nvim/eval.c"
;
} else if (len == -1) {
vimvars[idx].vv_di.di_tv.vval.v_string = xstrdup(val);
} else {
vimvars[idx].vv_di.di_tv.vval.v_string = xstrndup(val, (size_t)len);
}
}
void set_vim_var_list(const VimVarIndex idx, list_T *const val)
{
tv_clear(&vimvars[idx].vv_di.di_tv);
vimvars[idx].vv_di.di_tv.v_type = VAR_LIST;
vimvars[idx].vv_di.di_tv.vval.v_list = val;
if (val !=
# 7021 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7021 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
tv_list_ref(val);
}
}
void set_vim_var_dict(const VimVarIndex idx, dict_T *const val)
{
tv_clear(&vimvars[idx].vv_di.di_tv);
vimvars[idx].vv_di.di_tv.v_type = VAR_DICT;
vimvars[idx].vv_di.di_tv.vval.v_dict = val;
if (val ==
# 7036 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7036 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return;
}
val->dv_refcount++;
tv_dict_set_keys_readonly(val);
}
void set_vim_var_tv(const VimVarIndex idx, typval_T *const tv)
{
tv_clear(&vimvars[idx].vv_di.di_tv);
tv_copy(tv, &vimvars[idx].vv_di.di_tv);
}
void set_argv_var(char **argv, int argc)
{
list_T *l = tv_list_alloc(argc);
tv_list_set_lock(l, VAR_FIXED);
for (int i = 0; i < argc; i++) {
tv_list_append_string(l, (const char *const)argv[i], -1);
(&(tv_list_last(l))->li_tv)->v_lock = VAR_FIXED;
}
set_vim_var_list(VV_ARGV, l);
}
void set_reg_var(int c)
{
char regname;
if (c == 0 || c == ' ') {
regname = '"';
} else {
regname = (char)c;
}
if (vimvars[VV_REG].vv_di.di_tv.vval.v_string ==
# 7079 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7079 "/home/ubuntu/neovim/src/nvim/eval.c"
|| vimvars[VV_REG].vv_di.di_tv.vval.v_string[0] != c) {
set_vim_var_string(VV_REG, ®name, 1);
}
}
char *v_exception(char *oldval)
{
if (oldval ==
# 7090 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7090 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return vimvars[VV_EXCEPTION].vv_di.di_tv.vval.v_string;
}
vimvars[VV_EXCEPTION].vv_di.di_tv.vval.v_string = oldval;
return
# 7095 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7095 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
char *v_throwpoint(char *oldval)
{
if (oldval ==
# 7104 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7104 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return vimvars[VV_THROWPOINT].vv_di.di_tv.vval.v_string;
}
vimvars[VV_THROWPOINT].vv_di.di_tv.vval.v_string = oldval;
return
# 7109 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7109 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
char *set_cmdarg(exarg_T *eap, char *oldarg)
{
char *oldval = vimvars[VV_CMDARG].vv_di.di_tv.vval.v_string;
if (eap ==
# 7119 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7119 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
goto error;
}
size_t len = 0;
if (eap->force_bin == 1) {
len += 6;
} else if (eap->force_bin == 2) {
len += 8;
}
if (eap->read_edit) {
len += 7;
}
if (eap->force_ff != 0) {
len += 10;
}
if (eap->force_enc != 0) {
len += strlen(eap->cmd + eap->force_enc) + 7;
}
if (eap->bad_char != 0) {
len += 7 + 4;
}
if (eap->mkdir_p != 0) {
len += 4;
}
const size_t newval_len = len + 1;
char *newval = xmalloc(newval_len);
size_t xlen = 0;
int rc = 0;
if (eap->force_bin == 1) {
rc = snprintf(newval, newval_len, " ++bin");
} else if (eap->force_bin == 2) {
rc = snprintf(newval, newval_len, " ++nobin");
} else {
*newval = '\000';
}
if (rc < 0) {
goto error;
}
xlen += (size_t)rc;
if (eap->read_edit) {
rc = snprintf(newval + xlen, newval_len - xlen, " ++edit");
if (rc < 0) {
goto error;
}
xlen += (size_t)rc;
}
if (eap->force_ff != 0) {
rc = snprintf(newval + xlen,
newval_len - xlen,
" ++ff=%s",
eap->force_ff == 'u' ? "unix"
: eap->force_ff == 'd' ? "dos" : "mac");
if (rc < 0) {
goto error;
}
xlen += (size_t)rc;
}
if (eap->force_enc != 0) {
rc = snprintf(newval + (xlen), newval_len - xlen, " ++enc=%s", eap->cmd + eap->force_enc);
if (rc < 0) {
goto error;
}
xlen += (size_t)rc;
}
if (eap->bad_char == (-1)) {
rc = snprintf(newval + xlen, newval_len - xlen, " ++bad=keep");
if (rc < 0) {
goto error;
}
xlen += (size_t)rc;
} else if (eap->bad_char == (-2)) {
rc = snprintf(newval + xlen, newval_len - xlen, " ++bad=drop");
if (rc < 0) {
goto error;
}
xlen += (size_t)rc;
} else if (eap->bad_char != 0) {
rc = snprintf(newval + xlen, newval_len - xlen, " ++bad=%c", eap->bad_char);
if (rc < 0) {
goto error;
}
xlen += (size_t)rc;
}
if (eap->mkdir_p != 0) {
rc = snprintf(newval + xlen, newval_len - xlen, " ++p");
if (rc < 0) {
goto error;
}
xlen += (size_t)rc;
}
# 7218 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void) sizeof ((
# 7218 "/home/ubuntu/neovim/src/nvim/eval.c"
xlen <= newval_len
# 7218 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
) ? 1 : 0), __extension__ ({ if (
# 7218 "/home/ubuntu/neovim/src/nvim/eval.c"
xlen <= newval_len
# 7218 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
) ; else __assert_fail (
# 7218 "/home/ubuntu/neovim/src/nvim/eval.c"
"xlen <= newval_len"
# 7218 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
, "/home/ubuntu/neovim/src/nvim/eval.c", 7218, __extension__ __PRETTY_FUNCTION__); }))
# 7218 "/home/ubuntu/neovim/src/nvim/eval.c"
;
vimvars[VV_CMDARG].vv_di.di_tv.vval.v_string = newval;
return oldval;
error:
xfree(oldval);
vimvars[VV_CMDARG].vv_di.di_tv.vval.v_string = oldarg;
return
# 7226 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7226 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
static void check_vars(const char *name, size_t len)
{
if (eval_lavars_used ==
# 7233 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7233 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return;
}
const char *varname;
hashtab_T *ht = find_var_ht(name, len, &varname);
if (ht == get_funccal_local_ht() || ht == get_funccal_args_ht()) {
if (find_var(name, len,
# 7241 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7241 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 7241 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 7241 "/home/ubuntu/neovim/src/nvim/eval.c"
) !=
# 7241 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7241 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
*eval_lavars_used =
# 7242 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 7242 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
}
}
# 7248 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 7248 "/home/ubuntu/neovim/src/nvim/eval.c"
is_luafunc(partial_T *partial)
FUNC_ATTR_PURE
{
return partial == vvlua_partial;
}
static
# 7255 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 7255 "/home/ubuntu/neovim/src/nvim/eval.c"
tv_is_luafunc(typval_T *tv)
{
return tv->v_type == VAR_PARTIAL && is_luafunc(tv->vval.v_partial);
}
const char *skip_luafunc_name(const char *p)
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
{
while (((((unsigned)(*p) >= 'A' && (unsigned)(*p) <= 'Z') || ((unsigned)(*p) >= 'a' && (unsigned)(*p) <= 'z')) || ascii_isdigit(*p)) || *p == '_' || *p == '-' || *p == '.' || *p == '\'') {
p++;
}
return p;
}
int check_luafunc_name(const char *const str, const
# 7273 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 7273 "/home/ubuntu/neovim/src/nvim/eval.c"
paren)
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
{
const char *const p = skip_luafunc_name(str);
if (*p != (paren ? '(' : '\000')) {
return 0;
}
return (int)(p - str);
}
char *char_from_string(const char *str, varnumber_T index)
{
varnumber_T nchar = index;
if (str ==
# 7290 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7290 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return
# 7291 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7291 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
size_t slen = strlen(str);
if (index < 0) {
int clen = 0;
for (size_t nbyte = 0; nbyte < slen; clen++) {
nbyte += (size_t)utfc_ptr2len(str + nbyte);
}
nchar = clen + index;
if (nchar < 0) {
return
# 7305 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7305 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
}
size_t nbyte = 0;
for (; nchar > 0 && nbyte < slen; nchar--) {
nbyte += (size_t)utfc_ptr2len(str + nbyte);
}
if (nbyte >= slen) {
return
# 7314 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7314 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
return xmemdupz(str + nbyte, (size_t)utfc_ptr2len(str + nbyte));
}
static ssize_t char_idx2byte(const char *str, size_t str_len, varnumber_T idx)
{
varnumber_T nchar = idx;
size_t nbyte = 0;
if (nchar >= 0) {
while (nchar > 0 && nbyte < str_len) {
nbyte += (size_t)utfc_ptr2len(str + nbyte);
nchar--;
}
} else {
nbyte = str_len;
while (nchar < 0 && nbyte > 0) {
nbyte--;
nbyte -= (size_t)utf_head_off(str, str + nbyte);
nchar++;
}
if (nchar < 0) {
return -1;
}
}
return (ssize_t)nbyte;
}
char *string_slice(const char *str, varnumber_T first, varnumber_T last,
# 7354 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 7354 "/home/ubuntu/neovim/src/nvim/eval.c"
exclusive)
{
if (str ==
# 7356 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7356 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return
# 7357 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7357 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
size_t slen = strlen(str);
ssize_t start_byte = char_idx2byte(str, slen, first);
if (start_byte < 0) {
start_byte = 0;
}
ssize_t end_byte;
if ((last == -1 && !exclusive) || last ==
# 7365 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(9223372036854775807L)
# 7365 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
end_byte = (ssize_t)slen;
} else {
end_byte = char_idx2byte(str, slen, last);
if (!exclusive && end_byte >= 0 && end_byte < (ssize_t)slen) {
end_byte += utfc_ptr2len(str + end_byte);
}
}
if (start_byte >= (ssize_t)slen || end_byte <= start_byte) {
return
# 7376 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7376 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
return xmemdupz(str + start_byte, (size_t)(end_byte - start_byte));
}
# 7392 "/home/ubuntu/neovim/src/nvim/eval.c"
int handle_subscript(const char **const arg, typval_T *rettv, evalarg_T *const evalarg,
# 7393 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 7393 "/home/ubuntu/neovim/src/nvim/eval.c"
verbose)
{
const
# 7395 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 7395 "/home/ubuntu/neovim/src/nvim/eval.c"
evaluate = evalarg !=
# 7395 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7395 "/home/ubuntu/neovim/src/nvim/eval.c"
&& (evalarg->eval_flags & EVAL_EVALUATE);
int ret = 1;
dict_T *selfdict =
# 7397 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7397 "/home/ubuntu/neovim/src/nvim/eval.c"
;
const char *lua_funcname =
# 7398 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7398 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (tv_is_luafunc(rettv)) {
if (!evaluate) {
tv_clear(rettv);
}
if (**arg != '.') {
tv_clear(rettv);
ret = 0;
} else {
(*arg)++;
lua_funcname = *arg;
const int len = check_luafunc_name(*arg,
# 7412 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 7412 "/home/ubuntu/neovim/src/nvim/eval.c"
);
if (len == 0) {
tv_clear(rettv);
ret = 0;
}
(*arg) += len;
}
}
while (ret == 1
&& (((**arg == '[' || (**arg == '.' && rettv->v_type == VAR_DICT)
|| (**arg == '(' && (!evaluate || tv_is_func(*rettv))))
&& !ascii_iswhite(*(*arg - 1)))
|| (**arg == '-' && (*arg)[1] == '>'))) {
if (**arg == '(') {
ret = call_func_rettv((char **)arg, evalarg, rettv, evaluate, selfdict,
# 7428 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7428 "/home/ubuntu/neovim/src/nvim/eval.c"
, lua_funcname);
if (aborting()) {
if (ret == 1) {
tv_clear(rettv);
}
ret = 0;
}
tv_dict_unref(selfdict);
selfdict =
# 7440 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7440 "/home/ubuntu/neovim/src/nvim/eval.c"
;
} else if (**arg == '-') {
if ((*arg)[2] == '{') {
ret = eval_lambda((char **)arg, rettv, evalarg, verbose);
} else {
ret = eval_method((char **)arg, rettv, evalarg, verbose);
}
} else {
tv_dict_unref(selfdict);
if (rettv->v_type == VAR_DICT) {
selfdict = rettv->vval.v_dict;
if (selfdict !=
# 7453 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7453 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
selfdict->dv_refcount++;
}
} else {
selfdict =
# 7457 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7457 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
if (eval_index((char **)arg, rettv, evalarg, verbose) == 0) {
tv_clear(rettv);
ret = 0;
}
}
}
if (selfdict !=
# 7467 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7467 "/home/ubuntu/neovim/src/nvim/eval.c"
&& tv_is_func(*rettv)) {
set_selfdict(rettv, selfdict);
}
tv_dict_unref(selfdict);
return ret;
}
void set_selfdict(typval_T *const rettv, dict_T *const selfdict)
{
if (rettv->v_type == VAR_PARTIAL && !rettv->vval.v_partial->pt_auto
&& rettv->vval.v_partial->pt_dict !=
# 7480 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7480 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return;
}
make_partial(selfdict, rettv);
}
dictitem_T *find_var(const char *const name, const size_t name_len, hashtab_T **htp,
int no_autoload)
{
const char *varname;
hashtab_T *const ht = find_var_ht(name, name_len, &varname);
if (htp !=
# 7497 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7497 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
*htp = ht;
}
if (ht ==
# 7500 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7500 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return
# 7501 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7501 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
dictitem_T *const ret = find_var_in_ht(ht, *name,
varname,
name_len - (size_t)(varname - name),
no_autoload || htp !=
# 7506 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7506 "/home/ubuntu/neovim/src/nvim/eval.c"
);
if (ret !=
# 7507 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7507 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return ret;
}
return find_var_in_scoped_ht(name, name_len, no_autoload || htp !=
# 7512 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7512 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
# 7527 "/home/ubuntu/neovim/src/nvim/eval.c"
dictitem_T *find_var_in_ht(hashtab_T *const ht, int htname, const char *const varname,
const size_t varname_len, int no_autoload)
FUNC_ATTR_WARN_UNUSED_RESULT FUNC_ATTR_NONNULL_ALL
{
if (varname_len == 0) {
switch (htname) {
case 's':
return (dictitem_T *)&((((scriptitem_T **)script_items.ga_data)[(current_sctx.sc_sid) - 1])->sn_vars)->sv_var;
case 'g':
return (dictitem_T *)&globvars_var;
case 'v':
return (dictitem_T *)&vimvars_var;
case 'b':
return (dictitem_T *)&curbuf->b_bufvar;
case 'w':
return (dictitem_T *)&curwin->w_winvar;
case 't':
return (dictitem_T *)&curtab->tp_winvar;
case 'l':
return get_funccal_local_var();
case 'a':
return get_funccal_args_var();
}
return
# 7551 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7551 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
hashitem_T *hi = hash_find_len(ht, varname, varname_len);
if (((hi)->hi_key ==
# 7555 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7555 "/home/ubuntu/neovim/src/nvim/eval.c"
|| (hi)->hi_key == &hash_removed)) {
if (ht == &globvardict.dv_hashtab && !no_autoload) {
if (!script_autoload(varname, varname_len,
# 7563 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 7563 "/home/ubuntu/neovim/src/nvim/eval.c"
) || aborting()) {
return
# 7564 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7564 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
hi = hash_find_len(ht, varname, varname_len);
}
if (((hi)->hi_key ==
# 7568 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7568 "/home/ubuntu/neovim/src/nvim/eval.c"
|| (hi)->hi_key == &hash_removed)) {
return
# 7569 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7569 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
}
return ((dictitem_T *)((hi)->hi_key -
# 7572 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
__builtin_offsetof (
# 7572 "/home/ubuntu/neovim/src/nvim/eval.c"
dictitem_T
# 7572 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
,
# 7572 "/home/ubuntu/neovim/src/nvim/eval.c"
di_key
# 7572 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
)
# 7572 "/home/ubuntu/neovim/src/nvim/eval.c"
));
}
# 7586 "/home/ubuntu/neovim/src/nvim/eval.c"
hashtab_T *find_var_ht_dict(const char *name, const size_t name_len, const char **varname,
dict_T **d)
{
funccall_T *funccal = get_funccal();
*d =
# 7590 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7590 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (name_len == 0) {
return
# 7593 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7593 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
if (name_len == 1 || name[1] != ':') {
if (name[0] == ':' || name[0] == '#') {
return
# 7599 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7599 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
*varname = name;
hashitem_T *hi = hash_find_len(&compat_hashtab, name, name_len);
if (!((hi)->hi_key ==
# 7605 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7605 "/home/ubuntu/neovim/src/nvim/eval.c"
|| (hi)->hi_key == &hash_removed)) {
return &compat_hashtab;
}
if (funccal ==
# 7609 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7609 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
*d = &globvardict;
} else {
*d = &funccal->fc_l_vars;
}
goto end;
}
*varname = name + 2;
if (*name == 'g') {
*d = &globvardict;
} else if (name_len > 2
&& (memchr(name + 2, ':', name_len - 2) !=
# 7621 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7622 "/home/ubuntu/neovim/src/nvim/eval.c"
|| memchr(name + 2, '#', name_len - 2) !=
# 7622 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7622 "/home/ubuntu/neovim/src/nvim/eval.c"
)) {
return
# 7624 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7624 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
if (*name == 'b') {
*d = curbuf->b_vars;
} else if (*name == 'w') {
*d = curwin->w_vars;
} else if (*name == 't') {
*d = curtab->tp_vars;
} else if (*name == 'v') {
*d = &vimvardict;
} else if (*name == 'a' && funccal !=
# 7635 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7635 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
*d = &funccal->fc_l_avars;
} else if (*name == 'l' && funccal !=
# 7637 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7637 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
*d = &funccal->fc_l_vars;
} else if (*name == 's'
&& (current_sctx.sc_sid > 0 || current_sctx.sc_sid == (-10)
|| current_sctx.sc_sid == (-8))
&& current_sctx.sc_sid <= script_items.ga_len) {
if (current_sctx.sc_sid == (-8)) {
nlua_set_sctx(¤t_sctx);
if (current_sctx.sc_sid != (-8)) {
const LastSet last_set = (LastSet){
.script_ctx = current_sctx,
.channel_id = ((((uint64_t)1) << (sizeof(uint64_t) * 8 - 1)) + 1),
};
# 7657 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 7657 "/home/ubuntu/neovim/src/nvim/eval.c"
should_free;
char *sc_name = get_scriptname(last_set, &should_free);
new_script_item(sc_name, ¤t_sctx.sc_sid);
}
}
if (current_sctx.sc_sid == (-10) || current_sctx.sc_sid == (-8)) {
new_script_item(
# 7666 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7666 "/home/ubuntu/neovim/src/nvim/eval.c"
, ¤t_sctx.sc_sid);
}
*d = &((((scriptitem_T **)script_items.ga_data)[(current_sctx.sc_sid) - 1])->sn_vars)->sv_dict;
}
end:
return *d ? &(*d)->dv_hashtab :
# 7672 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7672 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
# 7683 "/home/ubuntu/neovim/src/nvim/eval.c"
hashtab_T *find_var_ht(const char *name, const size_t name_len, const char **varname)
{
dict_T *d;
return find_var_ht_dict(name, name_len, varname, &d);
}
void new_script_vars(scid_T id)
{
scriptvar_T *sv = xcalloc(1, sizeof(scriptvar_T));
init_var_dict(&sv->sv_dict, &sv->sv_var, VAR_SCOPE);
(((scriptitem_T **)script_items.ga_data)[(id) - 1])->sn_vars = sv;
}
void init_var_dict(dict_T *dict, ScopeDictDictItem *dict_var, ScopeType scope)
{
hash_init(&dict->dv_hashtab);
dict->dv_lock = VAR_UNLOCKED;
dict->dv_scope = scope;
dict->dv_refcount = DO_NOT_FREE_CNT;
dict->dv_copyID = 0;
dict_var->di_tv.vval.v_dict = dict;
dict_var->di_tv.v_type = VAR_DICT;
dict_var->di_tv.v_lock = VAR_FIXED;
dict_var->di_flags = DI_FLAGS_RO | DI_FLAGS_FIX;
dict_var->di_key[0] = '\000';
QUEUE_INIT(&dict->watchers);
}
void unref_var_dict(dict_T *dict)
{
dict->dv_refcount -= DO_NOT_FREE_CNT - 1;
tv_dict_unref(dict);
}
# 7740 "/home/ubuntu/neovim/src/nvim/eval.c"
int var_item_copy(const vimconv_T *const conv, typval_T *const from, typval_T *const to,
const
# 7741 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 7741 "/home/ubuntu/neovim/src/nvim/eval.c"
deep, const int copyID)
FUNC_ATTR_NONNULL_ARG(2, 3)
{
static int recurse = 0;
int ret = 1;
if (recurse >= 100) {
emsg(gettext(e_variable_nested_too_deep_for_making_copy));
return 0;
}
recurse++;
switch (from->v_type) {
case VAR_NUMBER:
case VAR_FLOAT:
case VAR_FUNC:
case VAR_PARTIAL:
case VAR_BOOL:
case VAR_SPECIAL:
tv_copy(from, to);
break;
case VAR_STRING:
if (conv ==
# 7763 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7763 "/home/ubuntu/neovim/src/nvim/eval.c"
|| conv->vc_type == CONV_NONE
|| from->vval.v_string ==
# 7764 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7764 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
tv_copy(from, to);
} else {
to->v_type = VAR_STRING;
to->v_lock = VAR_UNLOCKED;
if ((to->vval.v_string = string_convert((vimconv_T *)conv,
from->vval.v_string,
# 7771 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7771 "/home/ubuntu/neovim/src/nvim/eval.c"
))
==
# 7772 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7772 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
to->vval.v_string = xstrdup(from->vval.v_string);
}
}
break;
case VAR_LIST:
to->v_type = VAR_LIST;
to->v_lock = VAR_UNLOCKED;
if (from->vval.v_list ==
# 7780 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7780 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
to->vval.v_list =
# 7781 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7781 "/home/ubuntu/neovim/src/nvim/eval.c"
;
} else if (copyID != 0 && tv_list_copyid(from->vval.v_list) == copyID) {
to->vval.v_list = tv_list_latest_copy(from->vval.v_list);
tv_list_ref(to->vval.v_list);
} else {
to->vval.v_list = tv_list_copy(conv, from->vval.v_list, deep, copyID);
}
if (to->vval.v_list ==
# 7789 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7789 "/home/ubuntu/neovim/src/nvim/eval.c"
&& from->vval.v_list !=
# 7789 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7789 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
ret = 0;
}
break;
case VAR_BLOB:
tv_blob_copy(from->vval.v_blob, to);
break;
case VAR_DICT:
to->v_type = VAR_DICT;
to->v_lock = VAR_UNLOCKED;
if (from->vval.v_dict ==
# 7799 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7799 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
to->vval.v_dict =
# 7800 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7800 "/home/ubuntu/neovim/src/nvim/eval.c"
;
} else if (copyID != 0 && from->vval.v_dict->dv_copyID == copyID) {
to->vval.v_dict = from->vval.v_dict->dv_copydict;
to->vval.v_dict->dv_refcount++;
} else {
to->vval.v_dict = tv_dict_copy(conv, from->vval.v_dict, deep, copyID);
}
if (to->vval.v_dict ==
# 7808 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7808 "/home/ubuntu/neovim/src/nvim/eval.c"
&& from->vval.v_dict !=
# 7808 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7808 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
ret = 0;
}
break;
case VAR_UNKNOWN:
internal_error("var_item_copy(UNKNOWN)");
ret = 0;
}
recurse--;
return ret;
}
void ex_echo(exarg_T *eap)
{
char *arg = eap->arg;
typval_T rettv;
# 7827 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 7827 "/home/ubuntu/neovim/src/nvim/eval.c"
atstart =
# 7827 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 7827 "/home/ubuntu/neovim/src/nvim/eval.c"
;
# 7828 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 7828 "/home/ubuntu/neovim/src/nvim/eval.c"
need_clear =
# 7828 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 7828 "/home/ubuntu/neovim/src/nvim/eval.c"
;
const int did_emsg_before = did_emsg;
const int called_emsg_before = called_emsg;
evalarg_T evalarg;
fill_evalarg_from_eap(&evalarg, eap, eap->skip);
if (eap->skip) {
emsg_skip++;
}
while (*arg != '\000' && *arg != '|' && *arg != '\n' && !got_int) {
need_clr_eos =
# 7841 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 7841 "/home/ubuntu/neovim/src/nvim/eval.c"
;
{
char *p = arg;
if (eval1(&arg, &rettv, &evalarg) == 0) {
if (!aborting() && did_emsg == did_emsg_before
&& called_emsg == called_emsg_before) {
semsg(gettext(e_invexpr2), p);
}
need_clr_eos =
# 7853 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 7853 "/home/ubuntu/neovim/src/nvim/eval.c"
;
break;
}
need_clr_eos =
# 7856 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 7856 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
if (!eap->skip) {
if (atstart) {
atstart =
# 7861 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 7861 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (eap->cmdidx == CMD_echo) {
if (!msg_didout) {
msg_sb_eol();
}
msg_start();
}
} else if (eap->cmdidx == CMD_echo) {
msg_puts_attr(" ", echo_attr);
}
char *tofree = encode_tv2echo(&rettv,
# 7876 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7876 "/home/ubuntu/neovim/src/nvim/eval.c"
);
if (*tofree != '\000') {
msg_ext_set_kind("echo");
msg_multiline(tofree, echo_attr,
# 7879 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 7879 "/home/ubuntu/neovim/src/nvim/eval.c"
, &need_clear);
}
xfree(tofree);
}
tv_clear(&rettv);
arg = skipwhite(arg);
}
eap->nextcmd = check_nextcmd(arg);
clear_evalarg(&evalarg, eap);
if (eap->skip) {
emsg_skip--;
} else {
if (need_clear) {
msg_clr_eos();
}
if (eap->cmdidx == CMD_echo) {
msg_end();
}
}
}
void ex_echohl(exarg_T *eap)
{
echo_attr = syn_name2attr(eap->arg);
}
int get_echo_attr(void)
{
return echo_attr;
}
void ex_execute(exarg_T *eap)
{
char *arg = eap->arg;
typval_T rettv;
int ret = 1;
garray_T ga;
ga_init(&ga, 1, 80);
if (eap->skip) {
emsg_skip++;
}
while (*arg != '\000' && *arg != '|' && *arg != '\n') {
ret = eval1_emsg(&arg, &rettv, eap);
if (ret == 0) {
break;
}
if (!eap->skip) {
const char *const argstr = eap->cmdidx == CMD_execute
? tv_get_string(&rettv)
: rettv.v_type == VAR_STRING
? encode_tv2echo(&rettv,
# 7941 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7941 "/home/ubuntu/neovim/src/nvim/eval.c"
)
: encode_tv2string(&rettv,
# 7942 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7942 "/home/ubuntu/neovim/src/nvim/eval.c"
);
const size_t len = strlen(argstr);
ga_grow(&ga, (int)len + 2);
if (!((&ga)->ga_len <= 0)) {
((char *)(ga.ga_data))[ga.ga_len++] = ' ';
}
memcpy((char *)(ga.ga_data) + ga.ga_len, argstr, len + 1);
if (eap->cmdidx != CMD_execute) {
xfree((void *)argstr);
}
ga.ga_len += (int)len;
}
tv_clear(&rettv);
arg = skipwhite(arg);
}
if (ret != 0 && ga.ga_data !=
# 7959 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 7959 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
if (eap->cmdidx == CMD_echomsg) {
msg_ext_set_kind("echomsg");
msg(ga.ga_data, echo_attr);
} else if (eap->cmdidx == CMD_echoerr) {
int save_did_emsg = did_emsg;
msg_ext_set_kind("echoerr");
emsg_multiline(ga.ga_data,
# 7967 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 7967 "/home/ubuntu/neovim/src/nvim/eval.c"
);
if (!force_abort) {
did_emsg = save_did_emsg;
}
} else if (eap->cmdidx == CMD_execute) {
do_cmdline(ga.ga_data, eap->ea_getline, eap->cookie, DOCMD_NOWAIT|DOCMD_VERBOSE);
}
}
ga_clear(&ga);
if (eap->skip) {
emsg_skip--;
}
eap->nextcmd = check_nextcmd(arg);
}
# 7992 "/home/ubuntu/neovim/src/nvim/eval.c"
const char *find_option_var_end(const char **const arg, OptIndex *const opt_idxp, int *const scope)
{
const char *p = *arg;
p++;
if (*p == 'g' && p[1] == ':') {
*scope = OPT_GLOBAL;
p += 2;
} else if (*p == 'l' && p[1] == ':') {
*scope = OPT_LOCAL;
p += 2;
} else {
*scope = 0;
}
const char *end = find_option_end(p, opt_idxp);
*arg = end ==
# 8008 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8008 "/home/ubuntu/neovim/src/nvim/eval.c"
? *arg : p;
return end;
}
var_flavour_T var_flavour(char *varname)
FUNC_ATTR_PURE
{
char *p = varname;
if (((unsigned)(*p) >= 'A' && (unsigned)(*p) <= 'Z')) {
while (*(++p)) {
if (((unsigned)(*p) >= 'a' && (unsigned)(*p) <= 'z')) {
return VAR_FLAVOUR_SESSION;
}
}
return VAR_FLAVOUR_SHADA;
}
return VAR_FLAVOUR_DEFAULT;
}
void var_set_global(const char *const name, typval_T vartv)
{
funccal_entry_T funccall_entry;
save_funccal(&funccall_entry);
set_var(name, strlen(name), &vartv,
# 8033 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8033 "/home/ubuntu/neovim/src/nvim/eval.c"
);
restore_funccal();
}
void last_set_msg(sctx_T script_ctx)
{
const LastSet last_set = (LastSet){
.script_ctx = script_ctx,
.channel_id = 0,
};
option_last_set_msg(last_set);
}
void option_last_set_msg(LastSet last_set)
{
if (last_set.script_ctx.sc_sid == 0) {
return;
}
# 8057 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 8057 "/home/ubuntu/neovim/src/nvim/eval.c"
should_free;
char *p = get_scriptname(last_set, &should_free);
verbose_enter();
msg_puts(gettext("\n\tLast set from "));
msg_puts(p);
if (last_set.script_ctx.sc_lnum > 0) {
msg_puts(gettext(line_msg));
msg_outnum(last_set.script_ctx.sc_lnum);
}
if (should_free) {
xfree(p);
}
verbose_leave();
}
void reset_v_option_vars(void)
{
set_vim_var_string(VV_OPTION_NEW,
# 8077 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8077 "/home/ubuntu/neovim/src/nvim/eval.c"
, -1);
set_vim_var_string(VV_OPTION_OLD,
# 8078 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8078 "/home/ubuntu/neovim/src/nvim/eval.c"
, -1);
set_vim_var_string(VV_OPTION_OLDLOCAL,
# 8079 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8079 "/home/ubuntu/neovim/src/nvim/eval.c"
, -1);
set_vim_var_string(VV_OPTION_OLDGLOBAL,
# 8080 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8080 "/home/ubuntu/neovim/src/nvim/eval.c"
, -1);
set_vim_var_string(VV_OPTION_COMMAND,
# 8081 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8081 "/home/ubuntu/neovim/src/nvim/eval.c"
, -1);
set_vim_var_string(VV_OPTION_TYPE,
# 8082 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8082 "/home/ubuntu/neovim/src/nvim/eval.c"
, -1);
}
# 8097 "/home/ubuntu/neovim/src/nvim/eval.c"
int modify_fname(char *src,
# 8097 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 8097 "/home/ubuntu/neovim/src/nvim/eval.c"
tilde_file, size_t *usedlen, char **fnamep, char **bufp,
size_t *fnamelen)
{
int valid = 0;
char *s, *p, *pbuf;
char dirname[4096];
# 8103 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 8103 "/home/ubuntu/neovim/src/nvim/eval.c"
has_fullname =
# 8103 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8103 "/home/ubuntu/neovim/src/nvim/eval.c"
;
# 8104 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 8104 "/home/ubuntu/neovim/src/nvim/eval.c"
has_homerelative =
# 8104 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8104 "/home/ubuntu/neovim/src/nvim/eval.c"
;
repeat:
if (src[*usedlen] == ':' && src[*usedlen + 1] == 'p') {
has_fullname =
# 8109 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 8109 "/home/ubuntu/neovim/src/nvim/eval.c"
;
valid |= VALID_PATH;
*usedlen += 2;
if ((*fnamep)[0] == '~'
&& !(tilde_file && (*fnamep)[1] == '\000')) {
*fnamep = expand_env_save(*fnamep);
xfree(*bufp);
*bufp = *fnamep;
if (*fnamep ==
# 8127 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8127 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return -1;
}
}
for (p = *fnamep; *p != '\000'; (p += utfc_ptr2len((char *)p))) {
if (vim_ispathsep(*p)
&& p[1] == '.'
&& (p[2] == '\000'
|| vim_ispathsep(p[2])
|| (p[2] == '.'
&& (p[3] == '\000' || vim_ispathsep(p[3]))))) {
break;
}
}
if (*p != '\000' || !vim_isAbsName(*fnamep)) {
*fnamep = FullName_save(*fnamep, *p != '\000');
xfree(*bufp);
*bufp = *fnamep;
if (*fnamep ==
# 8149 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8149 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return -1;
}
}
if (os_isdir(*fnamep)) {
*fnamep = xstrnsave(*fnamep, strlen(*fnamep) + 2);
xfree(*bufp);
*bufp = *fnamep;
add_pathsep(*fnamep);
}
}
int c;
while (src[*usedlen] == ':'
&& ((c = (uint8_t)src[*usedlen + 1]) == '.' || c == '~' || c == '8')) {
*usedlen += 2;
if (c == '8') {
continue;
}
pbuf =
# 8175 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8175 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (!has_fullname && !has_homerelative) {
if (**fnamep == '~') {
p = pbuf = expand_env_save(*fnamep);
} else {
p = pbuf = FullName_save(*fnamep,
# 8181 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8181 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
} else {
p = *fnamep;
}
has_fullname =
# 8187 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8187 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (p !=
# 8189 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8189 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
if (c == '.') {
os_dirname(dirname, 4096);
if (has_homerelative) {
s = xstrdup(dirname);
home_replace(
# 8194 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8194 "/home/ubuntu/neovim/src/nvim/eval.c"
, s, dirname, 4096,
# 8194 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 8194 "/home/ubuntu/neovim/src/nvim/eval.c"
);
xfree(s);
}
size_t namelen = strlen(dirname);
if (path_fnamencmp(p, dirname, namelen) == 0) {
p += namelen;
if (vim_ispathsep(*p)) {
while (*p && vim_ispathsep(*p)) {
p++;
}
*fnamep = p;
if (pbuf !=
# 8208 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8208 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
xfree(*bufp);
*bufp = pbuf;
pbuf =
# 8212 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8212 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
}
}
} else {
home_replace(
# 8217 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8217 "/home/ubuntu/neovim/src/nvim/eval.c"
, p, dirname, 4096,
# 8217 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 8217 "/home/ubuntu/neovim/src/nvim/eval.c"
);
if (*dirname == '~') {
s = xstrdup(dirname);
# 8221 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void) sizeof ((
# 8221 "/home/ubuntu/neovim/src/nvim/eval.c"
s !=
# 8221 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)) ? 1 : 0), __extension__ ({ if (
# 8221 "/home/ubuntu/neovim/src/nvim/eval.c"
s !=
# 8221 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)) ; else __assert_fail (
# 8221 "/home/ubuntu/neovim/src/nvim/eval.c"
"s != NULL"
# 8221 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
, "/home/ubuntu/neovim/src/nvim/eval.c", 8221, __extension__ __PRETTY_FUNCTION__); }))
# 8221 "/home/ubuntu/neovim/src/nvim/eval.c"
;
*fnamep = s;
xfree(*bufp);
*bufp = s;
has_homerelative =
# 8225 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 8225 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
}
xfree(pbuf);
}
}
char *tail = path_tail(*fnamep);
*fnamelen = strlen(*fnamep);
while (src[*usedlen] == ':' && src[*usedlen + 1] == 'h') {
valid |= VALID_HEAD;
*usedlen += 2;
s = get_past_head(*fnamep);
while (tail > s && after_pathsep(s, tail)) {
(tail -= utf_head_off((char *)(*fnamep), (char *)(tail) - 1) + 1);
}
*fnamelen = (size_t)(tail - *fnamep);
if (*fnamelen == 0) {
xfree(*bufp);
*bufp = *fnamep = tail = xstrdup(".");
*fnamelen = 1;
} else {
while (tail > s && !after_pathsep(s, tail)) {
(tail -= utf_head_off((char *)(*fnamep), (char *)(tail) - 1) + 1);
}
}
}
if (src[*usedlen] == ':' && src[*usedlen + 1] == '8') {
*usedlen += 2;
}
if (src[*usedlen] == ':' && src[*usedlen + 1] == 't') {
*usedlen += 2;
*fnamelen -= (size_t)(tail - *fnamep);
*fnamep = tail;
}
while (src[*usedlen] == ':'
&& (src[*usedlen + 1] == 'e' || src[*usedlen + 1] == 'r')) {
const
# 8276 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 8276 "/home/ubuntu/neovim/src/nvim/eval.c"
is_second_e = *fnamep > tail;
if (src[*usedlen + 1] == 'e' && is_second_e) {
s = (*fnamep) - 2;
} else {
s = (*fnamep) + *fnamelen - 1;
}
for (; s > tail; s--) {
if (s[0] == '.') {
break;
}
}
if (src[*usedlen + 1] == 'e') {
if (s > tail || (0 && is_second_e && s == tail)) {
char *newstart = s + 1;
size_t distance_stepped_back = (size_t)(*fnamep - newstart);
*fnamelen += distance_stepped_back;
*fnamep = newstart;
} else if (*fnamep <= tail) {
*fnamelen = 0;
}
} else {
# 8314 "/home/ubuntu/neovim/src/nvim/eval.c"
if (s >
# 8314 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
(((
# 8314 "/home/ubuntu/neovim/src/nvim/eval.c"
tail
# 8314 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
)>(
# 8314 "/home/ubuntu/neovim/src/nvim/eval.c"
*fnamep
# 8314 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
))?(
# 8314 "/home/ubuntu/neovim/src/nvim/eval.c"
tail
# 8314 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
):(
# 8314 "/home/ubuntu/neovim/src/nvim/eval.c"
*fnamep
# 8314 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
))
# 8314 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
*fnamelen = (size_t)(s - *fnamep);
}
}
*usedlen += 2;
}
if (src[*usedlen] == ':'
&& (src[*usedlen + 1] == 's'
|| (src[*usedlen + 1] == 'g' && src[*usedlen + 2] == 's'))) {
# 8326 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 8326 "/home/ubuntu/neovim/src/nvim/eval.c"
didit =
# 8326 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8326 "/home/ubuntu/neovim/src/nvim/eval.c"
;
char *flags = "";
s = src + *usedlen + 2;
if (src[*usedlen + 1] == 'g') {
flags = "g";
s++;
}
int sep = (uint8_t)(*s++);
if (sep) {
p = vim_strchr(s, sep);
if (p !=
# 8339 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8339 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
char *const pat = xmemdupz(s, (size_t)(p - s));
s = p + 1;
p = vim_strchr(s, sep);
if (p !=
# 8344 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8344 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
char *const sub = xmemdupz(s, (size_t)(p - s));
char *const str = xmemdupz(*fnamep, *fnamelen);
*usedlen = (size_t)(p + 1 - src);
s = do_string_sub(str, pat, sub,
# 8348 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8348 "/home/ubuntu/neovim/src/nvim/eval.c"
, flags);
*fnamep = s;
*fnamelen = strlen(s);
xfree(*bufp);
*bufp = s;
didit =
# 8353 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 8353 "/home/ubuntu/neovim/src/nvim/eval.c"
;
xfree(sub);
xfree(str);
}
xfree(pat);
}
if (didit) {
goto repeat;
}
}
}
if (src[*usedlen] == ':' && src[*usedlen + 1] == 'S') {
c = (uint8_t)(*fnamep)[*fnamelen];
if (c != '\000') {
(*fnamep)[*fnamelen] = '\000';
}
p = vim_strsave_shellescape(*fnamep,
# 8372 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8372 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 8372 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8372 "/home/ubuntu/neovim/src/nvim/eval.c"
);
if (c != '\000') {
(*fnamep)[*fnamelen] = (char)c;
}
xfree(*bufp);
*bufp = *fnamep = p;
*fnamelen = strlen(p);
*usedlen += 2;
}
return valid;
}
char *do_string_sub(char *str, char *pat, char *sub, typval_T *expr, const char *flags)
{
regmatch_T regmatch;
garray_T ga;
char *zero_width =
# 8394 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8394 "/home/ubuntu/neovim/src/nvim/eval.c"
;
char *save_cpo = p_cpo;
p_cpo = empty_string_option;
ga_init(&ga, 1, 200);
int do_all = (flags[0] == 'g');
regmatch.rm_ic = p_ic;
regmatch.regprog = vim_regcomp(pat, 1 + 2);
if (regmatch.regprog !=
# 8406 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8406 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
int sublen;
char *tail = str;
char *end = str + strlen(str);
while (vim_regexec_nl(®match, str, (colnr_T)(tail - str))) {
if (regmatch.startp[0] == regmatch.endp[0]) {
if (zero_width == regmatch.startp[0]) {
int i = utfc_ptr2len(tail);
memmove((char *)ga.ga_data + ga.ga_len, tail, (size_t)i);
ga.ga_len += i;
tail += i;
continue;
}
zero_width = regmatch.startp[0];
}
sublen = vim_regsub(®match, sub, expr, tail, 0, REGSUB_MAGIC);
if (sublen <= 0) {
ga_clear(&ga);
break;
}
ga_grow(&ga, (int)((end - tail) + sublen -
(regmatch.endp[0] - regmatch.startp[0])));
int i = (int)(regmatch.startp[0] - tail);
memmove((char *)ga.ga_data + ga.ga_len, tail, (size_t)i);
vim_regsub(®match, sub, expr,
(char *)ga.ga_data + ga.ga_len + i, sublen,
REGSUB_COPY | REGSUB_MAGIC);
ga.ga_len += i + sublen - 1;
tail = regmatch.endp[0];
if (*tail == '\000') {
break;
}
if (!do_all) {
break;
}
}
if (ga.ga_data !=
# 8454 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8454 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
strcpy((char *)((char *)ga.ga_data + ga.ga_len), (char *)(tail));
}
vim_regfree(regmatch.regprog);
}
char *ret = xstrdup(ga.ga_data ==
# 8461 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8461 "/home/ubuntu/neovim/src/nvim/eval.c"
? str : ga.ga_data);
ga_clear(&ga);
if (p_cpo == empty_string_option) {
p_cpo = save_cpo;
} else {
if (*p_cpo == '\000') {
set_option_value_give_err(kOptCpoptions, ((OptVal) { .type = kOptValTypeString, .data.string = cstr_as_string(save_cpo) }), 0);
}
free_string_option(save_cpo);
}
return ret;
}
# 8481 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 8481 "/home/ubuntu/neovim/src/nvim/eval.c"
common_job_callbacks(dict_T *vopts, CallbackReader *on_stdout, CallbackReader *on_stderr,
Callback *on_exit)
{
if (tv_dict_get_callback(vopts, ("on_stdout"), (sizeof("on_stdout") - 1), &on_stdout->cb)
&& tv_dict_get_callback(vopts, ("on_stderr"), (sizeof("on_stderr") - 1), &on_stderr->cb)
&& tv_dict_get_callback(vopts, ("on_exit"), (sizeof("on_exit") - 1), on_exit)) {
on_stdout->buffered = tv_dict_get_number(vopts, "stdout_buffered");
on_stderr->buffered = tv_dict_get_number(vopts, "stderr_buffered");
if (on_stdout->buffered && on_stdout->cb.type == kCallbackNone) {
on_stdout->self = vopts;
}
if (on_stderr->buffered && on_stderr->cb.type == kCallbackNone) {
on_stderr->self = vopts;
}
vopts->dv_refcount++;
return
# 8496 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 8496 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
callback_reader_free(on_stdout);
callback_reader_free(on_stderr);
callback_free(on_exit);
return
# 8502 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8502 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
Channel *find_job(uint64_t id,
# 8505 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 8505 "/home/ubuntu/neovim/src/nvim/eval.c"
show_error)
{
Channel *data = find_channel(id);
if (!data || data->streamtype != kChannelStreamProc
|| process_is_stopped(&data->stream.proc)) {
if (show_error) {
if (data && data->streamtype != kChannelStreamProc) {
emsg(gettext(e_invchanjob));
} else {
emsg(gettext(e_invchan));
}
}
return
# 8517 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8517 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
return data;
}
void script_host_eval(char *name, typval_T *argvars, typval_T *rettv)
{
if (check_secure()) {
return;
}
if (argvars[0].v_type != VAR_STRING) {
emsg(gettext(e_invarg));
return;
}
list_T *args = tv_list_alloc(1);
tv_list_append_string(args, argvars[0].vval.v_string, -1);
*rettv = eval_call_provider(name, "eval", args,
# 8535 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8535 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}
typval_T eval_call_provider(char *provider, char *method, list_T *arguments,
# 8540 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 8540 "/home/ubuntu/neovim/src/nvim/eval.c"
discard)
{
if (!eval_has_provider(provider,
# 8542 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8542 "/home/ubuntu/neovim/src/nvim/eval.c"
)) {
semsg("E319: No \"%s\" provider found. Run \":checkhealth provider\"",
provider);
return (typval_T){
.v_type = VAR_NUMBER,
.v_lock = VAR_UNLOCKED,
.vval.v_number = 0
};
}
char func[256];
int name_len = snprintf(func, sizeof(func), "provider#%s#Call", provider);
struct caller_scope saved_provider_caller_scope = provider_caller_scope;
provider_caller_scope = (struct caller_scope) {
.script_ctx = current_sctx,
.es_entry = ((estack_T *)exestack.ga_data)[exestack.ga_len - 1],
.autocmd_fname = autocmd_fname,
.autocmd_match = autocmd_match,
.autocmd_fname_full = autocmd_fname_full,
.autocmd_bufnr = autocmd_bufnr,
.funccalp = (void *)get_current_funccal()
};
funccal_entry_T funccal_entry;
save_funccal(&funccal_entry);
provider_call_nesting++;
typval_T argvars[3] = {
{ .v_type = VAR_STRING, .vval.v_string = method,
.v_lock = VAR_UNLOCKED },
{ .v_type = VAR_LIST, .vval.v_list = arguments, .v_lock = VAR_UNLOCKED },
{ .v_type = VAR_UNKNOWN }
};
typval_T rettv = { .v_type = VAR_UNKNOWN, .v_lock = VAR_UNLOCKED };
tv_list_ref(arguments);
funcexe_T funcexe = (funcexe_T) { .fe_argv_func =
# 8579 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8579 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_firstline = 0, .fe_lastline = 0, .fe_doesrange =
# 8579 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8579 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_evaluate =
# 8579 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8579 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_partial =
# 8579 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8579 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_selfdict =
# 8579 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8579 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_basetv =
# 8579 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8579 "/home/ubuntu/neovim/src/nvim/eval.c"
, .fe_found_var =
# 8579 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8579 "/home/ubuntu/neovim/src/nvim/eval.c"
, };
funcexe.fe_firstline = curwin->w_cursor.lnum;
funcexe.fe_lastline = curwin->w_cursor.lnum;
funcexe.fe_evaluate =
# 8582 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 8582 "/home/ubuntu/neovim/src/nvim/eval.c"
;
call_func(func, name_len, &rettv, 2, argvars, &funcexe);
tv_list_unref(arguments);
restore_funccal();
provider_caller_scope = saved_provider_caller_scope;
provider_call_nesting--;
# 8590 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void) sizeof ((
# 8590 "/home/ubuntu/neovim/src/nvim/eval.c"
provider_call_nesting >= 0
# 8590 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
) ? 1 : 0), __extension__ ({ if (
# 8590 "/home/ubuntu/neovim/src/nvim/eval.c"
provider_call_nesting >= 0
# 8590 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
) ; else __assert_fail (
# 8590 "/home/ubuntu/neovim/src/nvim/eval.c"
"provider_call_nesting >= 0"
# 8590 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
, "/home/ubuntu/neovim/src/nvim/eval.c", 8590, __extension__ __PRETTY_FUNCTION__); }))
# 8590 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (discard) {
tv_clear(&rettv);
}
return rettv;
}
# 8600 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 8600 "/home/ubuntu/neovim/src/nvim/eval.c"
eval_has_provider(const char *feat,
# 8600 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 8600 "/home/ubuntu/neovim/src/nvim/eval.c"
throw_if_fast)
{
if (!strequal(feat, "clipboard")
&& !strequal(feat, "python3")
&& !strequal(feat, "python3_compiled")
&& !strequal(feat, "python3_dynamic")
&& !strequal(feat, "perl")
&& !strequal(feat, "ruby")
&& !strequal(feat, "node")) {
return
# 8610 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8610 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
if (throw_if_fast && !nlua_is_deferred_safe()) {
semsg(e_luv_api_disabled, "Vimscript function");
return
# 8615 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8615 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
char name[32];
snprintf(name, sizeof(name), "%s", feat);
strchrsub(name, '_', '\000');
char buf[256];
typval_T tv;
int len = snprintf(buf, sizeof(buf), "g:loaded_%s_provider", name);
if (eval_variable(buf, len, &tv,
# 8626 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8626 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 8626 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8626 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 8626 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 8626 "/home/ubuntu/neovim/src/nvim/eval.c"
) == 0) {
len = snprintf(buf, sizeof(buf), "provider#%s#bogus", name);
script_autoload(buf, (size_t)len,
# 8629 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8629 "/home/ubuntu/neovim/src/nvim/eval.c"
);
len = snprintf(buf, sizeof(buf), "g:loaded_%s_provider", name);
if (eval_variable(buf, len, &tv,
# 8633 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8633 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 8633 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8633 "/home/ubuntu/neovim/src/nvim/eval.c"
,
# 8633 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
1
# 8633 "/home/ubuntu/neovim/src/nvim/eval.c"
) == 0) {
snprintf(buf, sizeof(buf), "provider#%s#Call", name);
if (!!find_func(buf) && p_lpl) {
semsg("provider: %s: missing required variable g:loaded_%s_provider",
name, name);
}
return
# 8640 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8640 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
}
# 8644 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 8644 "/home/ubuntu/neovim/src/nvim/eval.c"
ok = (tv.v_type == VAR_NUMBER)
? 2 == tv.vval.v_number
:
# 8646 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8646 "/home/ubuntu/neovim/src/nvim/eval.c"
;
if (ok) {
snprintf(buf, sizeof(buf), "provider#%s#Call", name);
if (!find_func(buf)) {
semsg("provider: %s: g:loaded_%s_provider=2 but %s is not defined",
name, name, buf);
ok =
# 8654 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8654 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
}
return ok;
}
void eval_fmt_source_name_line(char *buf, size_t bufsize)
{
if ((((estack_T *)exestack.ga_data)[exestack.ga_len - 1].es_name)) {
snprintf(buf, bufsize, "%s:%"
# 8665 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
"d"
# 8665 "/home/ubuntu/neovim/src/nvim/eval.c"
, (((estack_T *)exestack.ga_data)[exestack.ga_len - 1].es_name), (((estack_T *)exestack.ga_data)[exestack.ga_len - 1].es_lnum));
} else {
snprintf(buf, bufsize, "?");
}
}
void invoke_prompt_callback(void)
{
typval_T rettv;
typval_T argv[2];
linenr_T lnum = curbuf->b_ml.ml_line_count;
ml_append(lnum, "", 0,
# 8679 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8679 "/home/ubuntu/neovim/src/nvim/eval.c"
);
appended_lines_mark(lnum, 1);
curwin->w_cursor.lnum = lnum + 1;
curwin->w_cursor.col = 0;
if (curbuf->b_prompt_callback.type == kCallbackNone) {
return;
}
char *text = ml_get(lnum);
char *prompt = prompt_text();
if (strlen(text) >= strlen(prompt)) {
text += strlen(prompt);
}
argv[0].v_type = VAR_STRING;
argv[0].vval.v_string = xstrdup(text);
argv[1].v_type = VAR_UNKNOWN;
callback_call(&curbuf->b_prompt_callback, 1, argv, &rettv);
tv_clear(&argv[0]);
tv_clear(&rettv);
}
# 8702 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 8702 "/home/ubuntu/neovim/src/nvim/eval.c"
invoke_prompt_interrupt(void)
{
typval_T rettv;
typval_T argv[1];
if (curbuf->b_prompt_interrupt.type == kCallbackNone) {
return
# 8708 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8708 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
argv[0].v_type = VAR_UNKNOWN;
got_int =
# 8712 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8712 "/home/ubuntu/neovim/src/nvim/eval.c"
;
int ret = callback_call(&curbuf->b_prompt_interrupt, 0, argv, &rettv);
tv_clear(&rettv);
return ret != 0;
}
int typval_compare(typval_T *typ1, typval_T *typ2, exprtype_T type,
# 8724 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 8724 "/home/ubuntu/neovim/src/nvim/eval.c"
ic)
FUNC_ATTR_NONNULL_ALL
{
varnumber_T n1, n2;
const
# 8728 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 8728 "/home/ubuntu/neovim/src/nvim/eval.c"
type_is = type == EXPR_IS || type == EXPR_ISNOT;
if (type_is && typ1->v_type != typ2->v_type) {
n1 = type == EXPR_ISNOT;
} else if (typ1->v_type == VAR_BLOB || typ2->v_type == VAR_BLOB) {
if (type_is) {
n1 = typ1->v_type == typ2->v_type
&& typ1->vval.v_blob == typ2->vval.v_blob;
if (type == EXPR_ISNOT) {
n1 = !n1;
}
} else if (typ1->v_type != typ2->v_type
|| (type != EXPR_EQUAL && type != EXPR_NEQUAL)) {
if (typ1->v_type != typ2->v_type) {
emsg(gettext("E977: Can only compare Blob with Blob"));
} else {
emsg(gettext(e_invalblob));
}
tv_clear(typ1);
return 0;
} else {
n1 = tv_blob_equal(typ1->vval.v_blob, typ2->vval.v_blob);
if (type == EXPR_NEQUAL) {
n1 = !n1;
}
}
} else if (typ1->v_type == VAR_LIST || typ2->v_type == VAR_LIST) {
if (type_is) {
n1 = typ1->v_type == typ2->v_type
&& typ1->vval.v_list == typ2->vval.v_list;
if (type == EXPR_ISNOT) {
n1 = !n1;
}
} else if (typ1->v_type != typ2->v_type
|| (type != EXPR_EQUAL && type != EXPR_NEQUAL)) {
if (typ1->v_type != typ2->v_type) {
emsg(gettext("E691: Can only compare List with List"));
} else {
emsg(gettext("E692: Invalid operation for List"));
}
tv_clear(typ1);
return 0;
} else {
n1 = tv_list_equal(typ1->vval.v_list, typ2->vval.v_list, ic);
if (type == EXPR_NEQUAL) {
n1 = !n1;
}
}
} else if (typ1->v_type == VAR_DICT || typ2->v_type == VAR_DICT) {
if (type_is) {
n1 = typ1->v_type == typ2->v_type
&& typ1->vval.v_dict == typ2->vval.v_dict;
if (type == EXPR_ISNOT) {
n1 = !n1;
}
} else if (typ1->v_type != typ2->v_type
|| (type != EXPR_EQUAL && type != EXPR_NEQUAL)) {
if (typ1->v_type != typ2->v_type) {
emsg(gettext("E735: Can only compare Dictionary with Dictionary"));
} else {
emsg(gettext("E736: Invalid operation for Dictionary"));
}
tv_clear(typ1);
return 0;
} else {
n1 = tv_dict_equal(typ1->vval.v_dict, typ2->vval.v_dict, ic);
if (type == EXPR_NEQUAL) {
n1 = !n1;
}
}
} else if (tv_is_func(*typ1) || tv_is_func(*typ2)) {
if (type != EXPR_EQUAL && type != EXPR_NEQUAL
&& type != EXPR_IS && type != EXPR_ISNOT) {
emsg(gettext("E694: Invalid operation for Funcrefs"));
tv_clear(typ1);
return 0;
}
if ((typ1->v_type == VAR_PARTIAL && typ1->vval.v_partial ==
# 8810 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8810 "/home/ubuntu/neovim/src/nvim/eval.c"
)
|| (typ2->v_type == VAR_PARTIAL && typ2->vval.v_partial ==
# 8811 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8811 "/home/ubuntu/neovim/src/nvim/eval.c"
)) {
n1 = (typ1->vval.v_partial == typ2->vval.v_partial);
} else if (type_is) {
if (typ1->v_type == VAR_FUNC && typ2->v_type == VAR_FUNC) {
n1 = tv_equal(typ1, typ2, ic);
} else if (typ1->v_type == VAR_PARTIAL && typ2->v_type == VAR_PARTIAL) {
n1 = typ1->vval.v_partial == typ2->vval.v_partial;
} else {
n1 =
# 8823 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8823 "/home/ubuntu/neovim/src/nvim/eval.c"
;
}
} else {
n1 = tv_equal(typ1, typ2, ic);
}
if (type == EXPR_NEQUAL || type == EXPR_ISNOT) {
n1 = !n1;
}
} else if ((typ1->v_type == VAR_FLOAT || typ2->v_type == VAR_FLOAT)
&& type != EXPR_MATCH && type != EXPR_NOMATCH) {
const float_T f1 = tv_get_float(typ1);
const float_T f2 = tv_get_float(typ2);
n1 =
# 8837 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8837 "/home/ubuntu/neovim/src/nvim/eval.c"
;
switch (type) {
case EXPR_IS:
case EXPR_EQUAL:
n1 = f1 == f2; break;
case EXPR_ISNOT:
case EXPR_NEQUAL:
n1 = f1 != f2; break;
case EXPR_GREATER:
n1 = f1 > f2; break;
case EXPR_GEQUAL:
n1 = f1 >= f2; break;
case EXPR_SMALLER:
n1 = f1 < f2; break;
case EXPR_SEQUAL:
n1 = f1 <= f2; break;
case EXPR_UNKNOWN:
case EXPR_MATCH:
case EXPR_NOMATCH:
break;
}
} else if ((typ1->v_type == VAR_NUMBER || typ2->v_type == VAR_NUMBER)
&& type != EXPR_MATCH && type != EXPR_NOMATCH) {
n1 = tv_get_number(typ1);
n2 = tv_get_number(typ2);
switch (type) {
case EXPR_IS:
case EXPR_EQUAL:
n1 = n1 == n2; break;
case EXPR_ISNOT:
case EXPR_NEQUAL:
n1 = n1 != n2; break;
case EXPR_GREATER:
n1 = n1 > n2; break;
case EXPR_GEQUAL:
n1 = n1 >= n2; break;
case EXPR_SMALLER:
n1 = n1 < n2; break;
case EXPR_SEQUAL:
n1 = n1 <= n2; break;
case EXPR_UNKNOWN:
case EXPR_MATCH:
case EXPR_NOMATCH:
break;
}
} else {
char buf1[NUMBUFLEN];
char buf2[NUMBUFLEN];
const char *const s1 = tv_get_string_buf(typ1, buf1);
const char *const s2 = tv_get_string_buf(typ2, buf2);
int i;
if (type != EXPR_MATCH && type != EXPR_NOMATCH) {
i = mb_strcmp_ic(ic, s1, s2);
} else {
i = 0;
}
n1 =
# 8895 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
0
# 8895 "/home/ubuntu/neovim/src/nvim/eval.c"
;
switch (type) {
case EXPR_IS:
case EXPR_EQUAL:
n1 = i == 0; break;
case EXPR_ISNOT:
case EXPR_NEQUAL:
n1 = i != 0; break;
case EXPR_GREATER:
n1 = i > 0; break;
case EXPR_GEQUAL:
n1 = i >= 0; break;
case EXPR_SMALLER:
n1 = i < 0; break;
case EXPR_SEQUAL:
n1 = i <= 0; break;
case EXPR_MATCH:
case EXPR_NOMATCH:
n1 = pattern_match(s2, s1, ic);
if (type == EXPR_NOMATCH) {
n1 = !n1;
}
break;
case EXPR_UNKNOWN:
break;
}
}
tv_clear(typ1);
typ1->v_type = VAR_NUMBER;
typ1->vval.v_number = n1;
return 1;
}
char *typval_tostring(typval_T *arg,
# 8932 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
_Bool
# 8932 "/home/ubuntu/neovim/src/nvim/eval.c"
quotes)
{
if (arg ==
# 8934 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8934 "/home/ubuntu/neovim/src/nvim/eval.c"
) {
return xstrdup("(does not exist)");
}
if (!quotes && arg->v_type == VAR_STRING) {
return xstrdup(arg->vval.v_string ==
# 8938 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8938 "/home/ubuntu/neovim/src/nvim/eval.c"
? "" : arg->vval.v_string);
}
return encode_tv2string(arg,
# 8940 "/home/ubuntu/neovim/src/nvim/eval.c" 3 4
((void *)0)
# 8940 "/home/ubuntu/neovim/src/nvim/eval.c"
);
}