Mercurial > vim
comparison src/eval.c @ 15211:de63593896b3 v8.1.0615
patch 8.1.0615: get_tv function names are not consistent
commit https://github.com/vim/vim/commit/d155d7a8519987361169459b8d464ae1caef5e9c
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Dec 21 16:04:21 2018 +0100
patch 8.1.0615: get_tv function names are not consistent
Problem: Get_tv function names are not consistent.
Solution: Rename to tv_get.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 21 Dec 2018 16:15:06 +0100 |
parents | 7903dce131d4 |
children | dada0b389d4f |
comparison
equal
deleted
inserted
replaced
15210:fbb2936c39b6 | 15211:de63593896b3 |
---|---|
679 else | 679 else |
680 { | 680 { |
681 *error = FALSE; | 681 *error = FALSE; |
682 if (!skip) | 682 if (!skip) |
683 { | 683 { |
684 retval = (get_tv_number_chk(&tv, error) != 0); | 684 retval = (tv_get_number_chk(&tv, error) != 0); |
685 clear_tv(&tv); | 685 clear_tv(&tv); |
686 } | 686 } |
687 } | 687 } |
688 if (skip) | 688 if (skip) |
689 --emsg_skip; | 689 --emsg_skip; |
718 0L, 0L, &dummy, TRUE, partial, NULL) == FAIL) | 718 0L, 0L, &dummy, TRUE, partial, NULL) == FAIL) |
719 return FAIL; | 719 return FAIL; |
720 } | 720 } |
721 else | 721 else |
722 { | 722 { |
723 s = get_tv_string_buf_chk(expr, buf); | 723 s = tv_get_string_buf_chk(expr, buf); |
724 if (s == NULL) | 724 if (s == NULL) |
725 return FAIL; | 725 return FAIL; |
726 s = skipwhite(s); | 726 s = skipwhite(s); |
727 if (eval1(&s, rettv, TRUE) == FAIL) | 727 if (eval1(&s, rettv, TRUE) == FAIL) |
728 return FAIL; | 728 return FAIL; |
749 if (eval_expr_typval(expr, NULL, 0, &rettv) == FAIL) | 749 if (eval_expr_typval(expr, NULL, 0, &rettv) == FAIL) |
750 { | 750 { |
751 *error = TRUE; | 751 *error = TRUE; |
752 return FALSE; | 752 return FALSE; |
753 } | 753 } |
754 res = (get_tv_number_chk(&rettv, error) != 0); | 754 res = (tv_get_number_chk(&rettv, error) != 0); |
755 clear_tv(&rettv); | 755 clear_tv(&rettv); |
756 return res; | 756 return res; |
757 } | 757 } |
758 | 758 |
759 /* | 759 /* |
774 ++emsg_skip; | 774 ++emsg_skip; |
775 if (eval0(arg, &tv, nextcmd, !skip) == FAIL || skip) | 775 if (eval0(arg, &tv, nextcmd, !skip) == FAIL || skip) |
776 retval = NULL; | 776 retval = NULL; |
777 else | 777 else |
778 { | 778 { |
779 retval = vim_strsave(get_tv_string(&tv)); | 779 retval = vim_strsave(tv_get_string(&tv)); |
780 clear_tv(&tv); | 780 clear_tv(&tv); |
781 } | 781 } |
782 if (skip) | 782 if (skip) |
783 --emsg_skip; | 783 --emsg_skip; |
784 | 784 |
839 vim_snprintf((char *)numbuf, NUMBUFLEN, "%g", tv.vval.v_float); | 839 vim_snprintf((char *)numbuf, NUMBUFLEN, "%g", tv.vval.v_float); |
840 retval = vim_strsave(numbuf); | 840 retval = vim_strsave(numbuf); |
841 } | 841 } |
842 #endif | 842 #endif |
843 else | 843 else |
844 retval = vim_strsave(get_tv_string(&tv)); | 844 retval = vim_strsave(tv_get_string(&tv)); |
845 clear_tv(&tv); | 845 clear_tv(&tv); |
846 } | 846 } |
847 | 847 |
848 return retval; | 848 return retval; |
849 } | 849 } |
889 | 889 |
890 if (eval1(&p, &rettv, TRUE) == FAIL) | 890 if (eval1(&p, &rettv, TRUE) == FAIL) |
891 retval = -1; | 891 retval = -1; |
892 else | 892 else |
893 { | 893 { |
894 retval = get_tv_number_chk(&rettv, NULL); | 894 retval = tv_get_number_chk(&rettv, NULL); |
895 clear_tv(&rettv); | 895 clear_tv(&rettv); |
896 } | 896 } |
897 --emsg_off; | 897 --emsg_off; |
898 | 898 |
899 return retval; | 899 return retval; |
980 listitem_T *li; | 980 listitem_T *li; |
981 | 981 |
982 li = list->lv_first; | 982 li = list->lv_first; |
983 if (li == NULL) | 983 if (li == NULL) |
984 return -1; | 984 return -1; |
985 *pp = get_tv_string(&li->li_tv); | 985 *pp = tv_get_string(&li->li_tv); |
986 | 986 |
987 li = li->li_next; | 987 li = li->li_next; |
988 if (li == NULL) | 988 if (li == NULL) |
989 return -1; | 989 return -1; |
990 return (int)get_tv_number(&li->li_tv); | 990 return (int)tv_get_number(&li->li_tv); |
991 } | 991 } |
992 #endif | 992 #endif |
993 | 993 |
994 /* | 994 /* |
995 * Top level evaluation function. | 995 * Top level evaluation function. |
1051 varnumber_T retval; | 1051 varnumber_T retval; |
1052 | 1052 |
1053 if (call_vim_function(func, argc, argv, &rettv) == FAIL) | 1053 if (call_vim_function(func, argc, argv, &rettv) == FAIL) |
1054 return -1; | 1054 return -1; |
1055 | 1055 |
1056 retval = get_tv_number_chk(&rettv, NULL); | 1056 retval = tv_get_number_chk(&rettv, NULL); |
1057 clear_tv(&rettv); | 1057 clear_tv(&rettv); |
1058 return retval; | 1058 return retval; |
1059 } | 1059 } |
1060 | 1060 |
1061 #if (defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL)) \ | 1061 #if (defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL)) \ |
1078 char_u *retval; | 1078 char_u *retval; |
1079 | 1079 |
1080 if (call_vim_function(func, argc, argv, &rettv) == FAIL) | 1080 if (call_vim_function(func, argc, argv, &rettv) == FAIL) |
1081 return NULL; | 1081 return NULL; |
1082 | 1082 |
1083 retval = vim_strsave(get_tv_string(&rettv)); | 1083 retval = vim_strsave(tv_get_string(&rettv)); |
1084 clear_tv(&rettv); | 1084 clear_tv(&rettv); |
1085 return retval; | 1085 return retval; |
1086 } | 1086 } |
1087 # endif | 1087 # endif |
1088 | 1088 |
1652 EMSG(_(e_letunexp)); | 1652 EMSG(_(e_letunexp)); |
1653 else if (!check_secure()) | 1653 else if (!check_secure()) |
1654 { | 1654 { |
1655 c1 = name[len]; | 1655 c1 = name[len]; |
1656 name[len] = NUL; | 1656 name[len] = NUL; |
1657 p = get_tv_string_chk(tv); | 1657 p = tv_get_string_chk(tv); |
1658 if (p != NULL && op != NULL && *op == '.') | 1658 if (p != NULL && op != NULL && *op == '.') |
1659 { | 1659 { |
1660 int mustfree = FALSE; | 1660 int mustfree = FALSE; |
1661 char_u *s = vim_getenv(name, &mustfree); | 1661 char_u *s = vim_getenv(name, &mustfree); |
1662 | 1662 |
1706 char_u *s; | 1706 char_u *s; |
1707 | 1707 |
1708 c1 = *p; | 1708 c1 = *p; |
1709 *p = NUL; | 1709 *p = NUL; |
1710 | 1710 |
1711 n = (long)get_tv_number(tv); | 1711 n = (long)tv_get_number(tv); |
1712 s = get_tv_string_chk(tv); /* != NULL if number or string */ | 1712 s = tv_get_string_chk(tv); /* != NULL if number or string */ |
1713 if (s != NULL && op != NULL && *op != '=') | 1713 if (s != NULL && op != NULL && *op != '=') |
1714 { | 1714 { |
1715 opt_type = get_option_value(arg, &numval, | 1715 opt_type = get_option_value(arg, &numval, |
1716 &stringval, opt_flags); | 1716 &stringval, opt_flags); |
1717 if ((opt_type == 1 && *op == '.') | 1717 if ((opt_type == 1 && *op == '.') |
1761 else | 1761 else |
1762 { | 1762 { |
1763 char_u *ptofree = NULL; | 1763 char_u *ptofree = NULL; |
1764 char_u *s; | 1764 char_u *s; |
1765 | 1765 |
1766 p = get_tv_string_chk(tv); | 1766 p = tv_get_string_chk(tv); |
1767 if (p != NULL && op != NULL && *op == '.') | 1767 if (p != NULL && op != NULL && *op == '.') |
1768 { | 1768 { |
1769 s = get_reg_contents(*arg == '@' ? '"' : *arg, GREG_EXPR_SRC); | 1769 s = get_reg_contents(*arg == '@' ? '"' : *arg, GREG_EXPR_SRC); |
1770 if (s != NULL) | 1770 if (s != NULL) |
1771 { | 1771 { |
1954 else | 1954 else |
1955 { | 1955 { |
1956 empty1 = FALSE; | 1956 empty1 = FALSE; |
1957 if (eval1(&p, &var1, TRUE) == FAIL) /* recursive! */ | 1957 if (eval1(&p, &var1, TRUE) == FAIL) /* recursive! */ |
1958 return NULL; | 1958 return NULL; |
1959 if (get_tv_string_chk(&var1) == NULL) | 1959 if (tv_get_string_chk(&var1) == NULL) |
1960 { | 1960 { |
1961 /* not a number or string */ | 1961 /* not a number or string */ |
1962 clear_tv(&var1); | 1962 clear_tv(&var1); |
1963 return NULL; | 1963 return NULL; |
1964 } | 1964 } |
1991 if (eval1(&p, &var2, TRUE) == FAIL) /* recursive! */ | 1991 if (eval1(&p, &var2, TRUE) == FAIL) /* recursive! */ |
1992 { | 1992 { |
1993 clear_tv(&var1); | 1993 clear_tv(&var1); |
1994 return NULL; | 1994 return NULL; |
1995 } | 1995 } |
1996 if (get_tv_string_chk(&var2) == NULL) | 1996 if (tv_get_string_chk(&var2) == NULL) |
1997 { | 1997 { |
1998 /* not a number or string */ | 1998 /* not a number or string */ |
1999 clear_tv(&var1); | 1999 clear_tv(&var1); |
2000 clear_tv(&var2); | 2000 clear_tv(&var2); |
2001 return NULL; | 2001 return NULL; |
2022 if (lp->ll_tv->v_type == VAR_DICT) | 2022 if (lp->ll_tv->v_type == VAR_DICT) |
2023 { | 2023 { |
2024 if (len == -1) | 2024 if (len == -1) |
2025 { | 2025 { |
2026 /* "[key]": get key from "var1" */ | 2026 /* "[key]": get key from "var1" */ |
2027 key = get_tv_string_chk(&var1); /* is number or string */ | 2027 key = tv_get_string_chk(&var1); /* is number or string */ |
2028 if (key == NULL) | 2028 if (key == NULL) |
2029 { | 2029 { |
2030 clear_tv(&var1); | 2030 clear_tv(&var1); |
2031 return NULL; | 2031 return NULL; |
2032 } | 2032 } |
2104 */ | 2104 */ |
2105 if (empty1) | 2105 if (empty1) |
2106 lp->ll_n1 = 0; | 2106 lp->ll_n1 = 0; |
2107 else | 2107 else |
2108 /* is number or string */ | 2108 /* is number or string */ |
2109 lp->ll_n1 = (long)get_tv_number(&var1); | 2109 lp->ll_n1 = (long)tv_get_number(&var1); |
2110 clear_tv(&var1); | 2110 clear_tv(&var1); |
2111 | 2111 |
2112 lp->ll_dict = NULL; | 2112 lp->ll_dict = NULL; |
2113 lp->ll_list = lp->ll_tv->vval.v_list; | 2113 lp->ll_list = lp->ll_tv->vval.v_list; |
2114 lp->ll_li = list_find(lp->ll_list, lp->ll_n1); | 2114 lp->ll_li = list_find(lp->ll_list, lp->ll_n1); |
2134 * When no index given: "lp->ll_empty2" is TRUE. | 2134 * When no index given: "lp->ll_empty2" is TRUE. |
2135 * Otherwise "lp->ll_n2" is set to the second index. | 2135 * Otherwise "lp->ll_n2" is set to the second index. |
2136 */ | 2136 */ |
2137 if (lp->ll_range && !lp->ll_empty2) | 2137 if (lp->ll_range && !lp->ll_empty2) |
2138 { | 2138 { |
2139 lp->ll_n2 = (long)get_tv_number(&var2); | 2139 lp->ll_n2 = (long)tv_get_number(&var2); |
2140 /* is number or string */ | 2140 /* is number or string */ |
2141 clear_tv(&var2); | 2141 clear_tv(&var2); |
2142 if (lp->ll_n2 < 0) | 2142 if (lp->ll_n2 < 0) |
2143 { | 2143 { |
2144 ni = list_find(lp->ll_list, lp->ll_n2); | 2144 ni = list_find(lp->ll_list, lp->ll_n2); |
2365 if (tv2->v_type == VAR_LIST) | 2365 if (tv2->v_type == VAR_LIST) |
2366 break; | 2366 break; |
2367 if (*op == '+' || *op == '-') | 2367 if (*op == '+' || *op == '-') |
2368 { | 2368 { |
2369 /* nr += nr or nr -= nr*/ | 2369 /* nr += nr or nr -= nr*/ |
2370 n = get_tv_number(tv1); | 2370 n = tv_get_number(tv1); |
2371 #ifdef FEAT_FLOAT | 2371 #ifdef FEAT_FLOAT |
2372 if (tv2->v_type == VAR_FLOAT) | 2372 if (tv2->v_type == VAR_FLOAT) |
2373 { | 2373 { |
2374 float_T f = n; | 2374 float_T f = n; |
2375 | 2375 |
2383 } | 2383 } |
2384 else | 2384 else |
2385 #endif | 2385 #endif |
2386 { | 2386 { |
2387 if (*op == '+') | 2387 if (*op == '+') |
2388 n += get_tv_number(tv2); | 2388 n += tv_get_number(tv2); |
2389 else | 2389 else |
2390 n -= get_tv_number(tv2); | 2390 n -= tv_get_number(tv2); |
2391 clear_tv(tv1); | 2391 clear_tv(tv1); |
2392 tv1->v_type = VAR_NUMBER; | 2392 tv1->v_type = VAR_NUMBER; |
2393 tv1->vval.v_number = n; | 2393 tv1->vval.v_number = n; |
2394 } | 2394 } |
2395 } | 2395 } |
2397 { | 2397 { |
2398 if (tv2->v_type == VAR_FLOAT) | 2398 if (tv2->v_type == VAR_FLOAT) |
2399 break; | 2399 break; |
2400 | 2400 |
2401 /* str .= str */ | 2401 /* str .= str */ |
2402 s = get_tv_string(tv1); | 2402 s = tv_get_string(tv1); |
2403 s = concat_str(s, get_tv_string_buf(tv2, numbuf)); | 2403 s = concat_str(s, tv_get_string_buf(tv2, numbuf)); |
2404 clear_tv(tv1); | 2404 clear_tv(tv1); |
2405 tv1->v_type = VAR_STRING; | 2405 tv1->v_type = VAR_STRING; |
2406 tv1->vval.v_string = s; | 2406 tv1->vval.v_string = s; |
2407 } | 2407 } |
2408 return OK; | 2408 return OK; |
2417 && tv2->v_type != VAR_STRING)) | 2417 && tv2->v_type != VAR_STRING)) |
2418 break; | 2418 break; |
2419 if (tv2->v_type == VAR_FLOAT) | 2419 if (tv2->v_type == VAR_FLOAT) |
2420 f = tv2->vval.v_float; | 2420 f = tv2->vval.v_float; |
2421 else | 2421 else |
2422 f = get_tv_number(tv2); | 2422 f = tv_get_number(tv2); |
2423 if (*op == '+') | 2423 if (*op == '+') |
2424 tv1->vval.v_float += f; | 2424 tv1->vval.v_float += f; |
2425 else | 2425 else |
2426 tv1->vval.v_float -= f; | 2426 tv1->vval.v_float -= f; |
2427 } | 2427 } |
3269 result = FALSE; | 3269 result = FALSE; |
3270 if (evaluate) | 3270 if (evaluate) |
3271 { | 3271 { |
3272 int error = FALSE; | 3272 int error = FALSE; |
3273 | 3273 |
3274 if (get_tv_number_chk(rettv, &error) != 0) | 3274 if (tv_get_number_chk(rettv, &error) != 0) |
3275 result = TRUE; | 3275 result = TRUE; |
3276 clear_tv(rettv); | 3276 clear_tv(rettv); |
3277 if (error) | 3277 if (error) |
3278 return FAIL; | 3278 return FAIL; |
3279 } | 3279 } |
3343 result = FALSE; | 3343 result = FALSE; |
3344 while ((*arg)[0] == '|' && (*arg)[1] == '|') | 3344 while ((*arg)[0] == '|' && (*arg)[1] == '|') |
3345 { | 3345 { |
3346 if (evaluate && first) | 3346 if (evaluate && first) |
3347 { | 3347 { |
3348 if (get_tv_number_chk(rettv, &error) != 0) | 3348 if (tv_get_number_chk(rettv, &error) != 0) |
3349 result = TRUE; | 3349 result = TRUE; |
3350 clear_tv(rettv); | 3350 clear_tv(rettv); |
3351 if (error) | 3351 if (error) |
3352 return FAIL; | 3352 return FAIL; |
3353 first = FALSE; | 3353 first = FALSE; |
3363 /* | 3363 /* |
3364 * Compute the result. | 3364 * Compute the result. |
3365 */ | 3365 */ |
3366 if (evaluate && !result) | 3366 if (evaluate && !result) |
3367 { | 3367 { |
3368 if (get_tv_number_chk(&var2, &error) != 0) | 3368 if (tv_get_number_chk(&var2, &error) != 0) |
3369 result = TRUE; | 3369 result = TRUE; |
3370 clear_tv(&var2); | 3370 clear_tv(&var2); |
3371 if (error) | 3371 if (error) |
3372 return FAIL; | 3372 return FAIL; |
3373 } | 3373 } |
3411 result = TRUE; | 3411 result = TRUE; |
3412 while ((*arg)[0] == '&' && (*arg)[1] == '&') | 3412 while ((*arg)[0] == '&' && (*arg)[1] == '&') |
3413 { | 3413 { |
3414 if (evaluate && first) | 3414 if (evaluate && first) |
3415 { | 3415 { |
3416 if (get_tv_number_chk(rettv, &error) == 0) | 3416 if (tv_get_number_chk(rettv, &error) == 0) |
3417 result = FALSE; | 3417 result = FALSE; |
3418 clear_tv(rettv); | 3418 clear_tv(rettv); |
3419 if (error) | 3419 if (error) |
3420 return FAIL; | 3420 return FAIL; |
3421 first = FALSE; | 3421 first = FALSE; |
3431 /* | 3431 /* |
3432 * Compute the result. | 3432 * Compute the result. |
3433 */ | 3433 */ |
3434 if (evaluate && result) | 3434 if (evaluate && result) |
3435 { | 3435 { |
3436 if (get_tv_number_chk(&var2, &error) == 0) | 3436 if (tv_get_number_chk(&var2, &error) == 0) |
3437 result = FALSE; | 3437 result = FALSE; |
3438 clear_tv(&var2); | 3438 clear_tv(&var2); |
3439 if (error) | 3439 if (error) |
3440 return FAIL; | 3440 return FAIL; |
3441 } | 3441 } |
3620 * operand: if this is also a list, all is ok. | 3620 * operand: if this is also a list, all is ok. |
3621 * For "something . ...", "something - ..." or "non-list + ...", | 3621 * For "something . ...", "something - ..." or "non-list + ...", |
3622 * we know that the first operand needs to be a string or number | 3622 * we know that the first operand needs to be a string or number |
3623 * without evaluating the 2nd operand. So check before to avoid | 3623 * without evaluating the 2nd operand. So check before to avoid |
3624 * side effects after an error. */ | 3624 * side effects after an error. */ |
3625 if (evaluate && get_tv_string_chk(rettv) == NULL) | 3625 if (evaluate && tv_get_string_chk(rettv) == NULL) |
3626 { | 3626 { |
3627 clear_tv(rettv); | 3627 clear_tv(rettv); |
3628 return FAIL; | 3628 return FAIL; |
3629 } | 3629 } |
3630 } | 3630 } |
3644 /* | 3644 /* |
3645 * Compute the result. | 3645 * Compute the result. |
3646 */ | 3646 */ |
3647 if (op == '.') | 3647 if (op == '.') |
3648 { | 3648 { |
3649 s1 = get_tv_string_buf(rettv, buf1); /* already checked */ | 3649 s1 = tv_get_string_buf(rettv, buf1); /* already checked */ |
3650 s2 = get_tv_string_buf_chk(&var2, buf2); | 3650 s2 = tv_get_string_buf_chk(&var2, buf2); |
3651 if (s2 == NULL) /* type error ? */ | 3651 if (s2 == NULL) /* type error ? */ |
3652 { | 3652 { |
3653 clear_tv(rettv); | 3653 clear_tv(rettv); |
3654 clear_tv(&var2); | 3654 clear_tv(&var2); |
3655 return FAIL; | 3655 return FAIL; |
3684 n1 = 0; | 3684 n1 = 0; |
3685 } | 3685 } |
3686 else | 3686 else |
3687 #endif | 3687 #endif |
3688 { | 3688 { |
3689 n1 = get_tv_number_chk(rettv, &error); | 3689 n1 = tv_get_number_chk(rettv, &error); |
3690 if (error) | 3690 if (error) |
3691 { | 3691 { |
3692 /* This can only happen for "list + non-list". For | 3692 /* This can only happen for "list + non-list". For |
3693 * "non-list + ..." or "something - ...", we returned | 3693 * "non-list + ..." or "something - ...", we returned |
3694 * before evaluating the 2nd operand. */ | 3694 * before evaluating the 2nd operand. */ |
3707 n2 = 0; | 3707 n2 = 0; |
3708 } | 3708 } |
3709 else | 3709 else |
3710 #endif | 3710 #endif |
3711 { | 3711 { |
3712 n2 = get_tv_number_chk(&var2, &error); | 3712 n2 = tv_get_number_chk(&var2, &error); |
3713 if (error) | 3713 if (error) |
3714 { | 3714 { |
3715 clear_tv(rettv); | 3715 clear_tv(rettv); |
3716 clear_tv(&var2); | 3716 clear_tv(&var2); |
3717 return FAIL; | 3717 return FAIL; |
3802 use_float = TRUE; | 3802 use_float = TRUE; |
3803 n1 = 0; | 3803 n1 = 0; |
3804 } | 3804 } |
3805 else | 3805 else |
3806 #endif | 3806 #endif |
3807 n1 = get_tv_number_chk(rettv, &error); | 3807 n1 = tv_get_number_chk(rettv, &error); |
3808 clear_tv(rettv); | 3808 clear_tv(rettv); |
3809 if (error) | 3809 if (error) |
3810 return FAIL; | 3810 return FAIL; |
3811 } | 3811 } |
3812 else | 3812 else |
3833 n2 = 0; | 3833 n2 = 0; |
3834 } | 3834 } |
3835 else | 3835 else |
3836 #endif | 3836 #endif |
3837 { | 3837 { |
3838 n2 = get_tv_number_chk(&var2, &error); | 3838 n2 = tv_get_number_chk(&var2, &error); |
3839 clear_tv(&var2); | 3839 clear_tv(&var2); |
3840 if (error) | 3840 if (error) |
3841 return FAIL; | 3841 return FAIL; |
3842 #ifdef FEAT_FLOAT | 3842 #ifdef FEAT_FLOAT |
3843 if (use_float) | 3843 if (use_float) |
4198 | 4198 |
4199 if (rettv->v_type == VAR_FLOAT) | 4199 if (rettv->v_type == VAR_FLOAT) |
4200 f = rettv->vval.v_float; | 4200 f = rettv->vval.v_float; |
4201 else | 4201 else |
4202 #endif | 4202 #endif |
4203 val = get_tv_number_chk(rettv, &error); | 4203 val = tv_get_number_chk(rettv, &error); |
4204 if (error) | 4204 if (error) |
4205 { | 4205 { |
4206 clear_tv(rettv); | 4206 clear_tv(rettv); |
4207 ret = FAIL; | 4207 ret = FAIL; |
4208 } | 4208 } |
4324 *arg = skipwhite(*arg + 1); | 4324 *arg = skipwhite(*arg + 1); |
4325 if (**arg == ':') | 4325 if (**arg == ':') |
4326 empty1 = TRUE; | 4326 empty1 = TRUE; |
4327 else if (eval1(arg, &var1, evaluate) == FAIL) /* recursive! */ | 4327 else if (eval1(arg, &var1, evaluate) == FAIL) /* recursive! */ |
4328 return FAIL; | 4328 return FAIL; |
4329 else if (evaluate && get_tv_string_chk(&var1) == NULL) | 4329 else if (evaluate && tv_get_string_chk(&var1) == NULL) |
4330 { | 4330 { |
4331 /* not a number or string */ | 4331 /* not a number or string */ |
4332 clear_tv(&var1); | 4332 clear_tv(&var1); |
4333 return FAIL; | 4333 return FAIL; |
4334 } | 4334 } |
4346 { | 4346 { |
4347 if (!empty1) | 4347 if (!empty1) |
4348 clear_tv(&var1); | 4348 clear_tv(&var1); |
4349 return FAIL; | 4349 return FAIL; |
4350 } | 4350 } |
4351 else if (evaluate && get_tv_string_chk(&var2) == NULL) | 4351 else if (evaluate && tv_get_string_chk(&var2) == NULL) |
4352 { | 4352 { |
4353 /* not a number or string */ | 4353 /* not a number or string */ |
4354 if (!empty1) | 4354 if (!empty1) |
4355 clear_tv(&var1); | 4355 clear_tv(&var1); |
4356 clear_tv(&var2); | 4356 clear_tv(&var2); |
4374 if (evaluate) | 4374 if (evaluate) |
4375 { | 4375 { |
4376 n1 = 0; | 4376 n1 = 0; |
4377 if (!empty1 && rettv->v_type != VAR_DICT) | 4377 if (!empty1 && rettv->v_type != VAR_DICT) |
4378 { | 4378 { |
4379 n1 = get_tv_number(&var1); | 4379 n1 = tv_get_number(&var1); |
4380 clear_tv(&var1); | 4380 clear_tv(&var1); |
4381 } | 4381 } |
4382 if (range) | 4382 if (range) |
4383 { | 4383 { |
4384 if (empty2) | 4384 if (empty2) |
4385 n2 = -1; | 4385 n2 = -1; |
4386 else | 4386 else |
4387 { | 4387 { |
4388 n2 = get_tv_number(&var2); | 4388 n2 = tv_get_number(&var2); |
4389 clear_tv(&var2); | 4389 clear_tv(&var2); |
4390 } | 4390 } |
4391 } | 4391 } |
4392 | 4392 |
4393 switch (rettv->v_type) | 4393 switch (rettv->v_type) |
4401 case VAR_CHANNEL: | 4401 case VAR_CHANNEL: |
4402 break; /* not evaluating, skipping over subscript */ | 4402 break; /* not evaluating, skipping over subscript */ |
4403 | 4403 |
4404 case VAR_NUMBER: | 4404 case VAR_NUMBER: |
4405 case VAR_STRING: | 4405 case VAR_STRING: |
4406 s = get_tv_string(rettv); | 4406 s = tv_get_string(rettv); |
4407 len = (long)STRLEN(s); | 4407 len = (long)STRLEN(s); |
4408 if (range) | 4408 if (range) |
4409 { | 4409 { |
4410 /* The resulting variable is a substring. If the indexes | 4410 /* The resulting variable is a substring. If the indexes |
4411 * are out of range the result is empty. */ | 4411 * are out of range the result is empty. */ |
4502 { | 4502 { |
4503 dictitem_T *item; | 4503 dictitem_T *item; |
4504 | 4504 |
4505 if (len == -1) | 4505 if (len == -1) |
4506 { | 4506 { |
4507 key = get_tv_string_chk(&var1); | 4507 key = tv_get_string_chk(&var1); |
4508 if (key == NULL) | 4508 if (key == NULL) |
4509 { | 4509 { |
4510 clear_tv(&var1); | 4510 clear_tv(&var1); |
4511 return FAIL; | 4511 return FAIL; |
4512 } | 4512 } |
4972 | 4972 |
4973 case VAR_NUMBER: | 4973 case VAR_NUMBER: |
4974 return tv1->vval.v_number == tv2->vval.v_number; | 4974 return tv1->vval.v_number == tv2->vval.v_number; |
4975 | 4975 |
4976 case VAR_STRING: | 4976 case VAR_STRING: |
4977 s1 = get_tv_string_buf(tv1, buf1); | 4977 s1 = tv_get_string_buf(tv1, buf1); |
4978 s2 = get_tv_string_buf(tv2, buf2); | 4978 s2 = tv_get_string_buf(tv2, buf2); |
4979 return ((ic ? MB_STRICMP(s1, s2) : STRCMP(s1, s2)) == 0); | 4979 return ((ic ? MB_STRICMP(s1, s2) : STRCMP(s1, s2)) == 0); |
4980 | 4980 |
4981 case VAR_SPECIAL: | 4981 case VAR_SPECIAL: |
4982 return tv1->vval.v_number == tv2->vval.v_number; | 4982 return tv1->vval.v_number == tv2->vval.v_number; |
4983 | 4983 |
5650 break; | 5650 break; |
5651 | 5651 |
5652 case VAR_NUMBER: | 5652 case VAR_NUMBER: |
5653 case VAR_UNKNOWN: | 5653 case VAR_UNKNOWN: |
5654 *tofree = NULL; | 5654 *tofree = NULL; |
5655 r = get_tv_string_buf(tv, numbuf); | 5655 r = tv_get_string_buf(tv, numbuf); |
5656 break; | 5656 break; |
5657 | 5657 |
5658 case VAR_JOB: | 5658 case VAR_JOB: |
5659 case VAR_CHANNEL: | 5659 case VAR_CHANNEL: |
5660 *tofree = NULL; | 5660 *tofree = NULL; |
5661 r = get_tv_string_buf(tv, numbuf); | 5661 r = tv_get_string_buf(tv, numbuf); |
5662 if (composite_val) | 5662 if (composite_val) |
5663 { | 5663 { |
5664 *tofree = string_quote(r, FALSE); | 5664 *tofree = string_quote(r, FALSE); |
5665 r = *tofree; | 5665 r = *tofree; |
5666 } | 5666 } |
5911 #endif | 5911 #endif |
5912 | 5912 |
5913 return &pos; | 5913 return &pos; |
5914 } | 5914 } |
5915 | 5915 |
5916 name = get_tv_string_chk(varp); | 5916 name = tv_get_string_chk(varp); |
5917 if (name == NULL) | 5917 if (name == NULL) |
5918 return NULL; | 5918 return NULL; |
5919 if (name[0] == '.') /* cursor */ | 5919 if (name[0] == '.') /* cursor */ |
5920 return &curwin->w_cursor; | 5920 return &curwin->w_cursor; |
5921 if (name[0] == 'v' && name[1] == NUL) /* Visual start */ | 5921 if (name[0] == 'v' && name[1] == NUL) /* Visual start */ |
6361 * Never returns NULL; | 6361 * Never returns NULL; |
6362 */ | 6362 */ |
6363 char_u * | 6363 char_u * |
6364 get_vim_var_str(int idx) | 6364 get_vim_var_str(int idx) |
6365 { | 6365 { |
6366 return get_tv_string(&vimvars[idx].vv_tv); | 6366 return tv_get_string(&vimvars[idx].vv_tv); |
6367 } | 6367 } |
6368 | 6368 |
6369 /* | 6369 /* |
6370 * Get List v: variable value. Caller must take care of reference count when | 6370 * Get List v: variable value. Caller must take care of reference count when |
6371 * needed. | 6371 * needed. |
6934 | 6934 |
6935 /* | 6935 /* |
6936 * Get the number value of a variable. | 6936 * Get the number value of a variable. |
6937 * If it is a String variable, uses vim_str2nr(). | 6937 * If it is a String variable, uses vim_str2nr(). |
6938 * For incompatible types, return 0. | 6938 * For incompatible types, return 0. |
6939 * get_tv_number_chk() is similar to get_tv_number(), but informs the | 6939 * tv_get_number_chk() is similar to tv_get_number(), but informs the |
6940 * caller of incompatible types: it sets *denote to TRUE if "denote" | 6940 * caller of incompatible types: it sets *denote to TRUE if "denote" |
6941 * is not NULL or returns -1 otherwise. | 6941 * is not NULL or returns -1 otherwise. |
6942 */ | 6942 */ |
6943 varnumber_T | 6943 varnumber_T |
6944 get_tv_number(typval_T *varp) | 6944 tv_get_number(typval_T *varp) |
6945 { | 6945 { |
6946 int error = FALSE; | 6946 int error = FALSE; |
6947 | 6947 |
6948 return get_tv_number_chk(varp, &error); /* return 0L on error */ | 6948 return tv_get_number_chk(varp, &error); /* return 0L on error */ |
6949 } | 6949 } |
6950 | 6950 |
6951 varnumber_T | 6951 varnumber_T |
6952 get_tv_number_chk(typval_T *varp, int *denote) | 6952 tv_get_number_chk(typval_T *varp, int *denote) |
6953 { | 6953 { |
6954 varnumber_T n = 0L; | 6954 varnumber_T n = 0L; |
6955 | 6955 |
6956 switch (varp->v_type) | 6956 switch (varp->v_type) |
6957 { | 6957 { |
6989 #ifdef FEAT_JOB_CHANNEL | 6989 #ifdef FEAT_JOB_CHANNEL |
6990 EMSG(_("E913: Using a Channel as a Number")); | 6990 EMSG(_("E913: Using a Channel as a Number")); |
6991 break; | 6991 break; |
6992 #endif | 6992 #endif |
6993 case VAR_UNKNOWN: | 6993 case VAR_UNKNOWN: |
6994 internal_error("get_tv_number(UNKNOWN)"); | 6994 internal_error("tv_get_number(UNKNOWN)"); |
6995 break; | 6995 break; |
6996 } | 6996 } |
6997 if (denote == NULL) /* useful for values that must be unsigned */ | 6997 if (denote == NULL) /* useful for values that must be unsigned */ |
6998 n = -1; | 6998 n = -1; |
6999 else | 6999 else |
7001 return n; | 7001 return n; |
7002 } | 7002 } |
7003 | 7003 |
7004 #ifdef FEAT_FLOAT | 7004 #ifdef FEAT_FLOAT |
7005 float_T | 7005 float_T |
7006 get_tv_float(typval_T *varp) | 7006 tv_get_float(typval_T *varp) |
7007 { | 7007 { |
7008 switch (varp->v_type) | 7008 switch (varp->v_type) |
7009 { | 7009 { |
7010 case VAR_NUMBER: | 7010 case VAR_NUMBER: |
7011 return (float_T)(varp->vval.v_number); | 7011 return (float_T)(varp->vval.v_number); |
7036 # ifdef FEAT_JOB_CHANNEL | 7036 # ifdef FEAT_JOB_CHANNEL |
7037 EMSG(_("E914: Using a Channel as a Float")); | 7037 EMSG(_("E914: Using a Channel as a Float")); |
7038 break; | 7038 break; |
7039 # endif | 7039 # endif |
7040 case VAR_UNKNOWN: | 7040 case VAR_UNKNOWN: |
7041 internal_error("get_tv_float(UNKNOWN)"); | 7041 internal_error("tv_get_float(UNKNOWN)"); |
7042 break; | 7042 break; |
7043 } | 7043 } |
7044 return 0; | 7044 return 0; |
7045 } | 7045 } |
7046 #endif | 7046 #endif |
7047 | 7047 |
7048 /* | 7048 /* |
7049 * Get the string value of a variable. | 7049 * Get the string value of a variable. |
7050 * If it is a Number variable, the number is converted into a string. | 7050 * If it is a Number variable, the number is converted into a string. |
7051 * get_tv_string() uses a single, static buffer. YOU CAN ONLY USE IT ONCE! | 7051 * tv_get_string() uses a single, static buffer. YOU CAN ONLY USE IT ONCE! |
7052 * get_tv_string_buf() uses a given buffer. | 7052 * tv_get_string_buf() uses a given buffer. |
7053 * If the String variable has never been set, return an empty string. | 7053 * If the String variable has never been set, return an empty string. |
7054 * Never returns NULL; | 7054 * Never returns NULL; |
7055 * get_tv_string_chk() and get_tv_string_buf_chk() are similar, but return | 7055 * tv_get_string_chk() and tv_get_string_buf_chk() are similar, but return |
7056 * NULL on error. | 7056 * NULL on error. |
7057 */ | 7057 */ |
7058 char_u * | 7058 char_u * |
7059 get_tv_string(typval_T *varp) | 7059 tv_get_string(typval_T *varp) |
7060 { | 7060 { |
7061 static char_u mybuf[NUMBUFLEN]; | 7061 static char_u mybuf[NUMBUFLEN]; |
7062 | 7062 |
7063 return get_tv_string_buf(varp, mybuf); | 7063 return tv_get_string_buf(varp, mybuf); |
7064 } | 7064 } |
7065 | 7065 |
7066 char_u * | 7066 char_u * |
7067 get_tv_string_buf(typval_T *varp, char_u *buf) | 7067 tv_get_string_buf(typval_T *varp, char_u *buf) |
7068 { | 7068 { |
7069 char_u *res = get_tv_string_buf_chk(varp, buf); | 7069 char_u *res = tv_get_string_buf_chk(varp, buf); |
7070 | 7070 |
7071 return res != NULL ? res : (char_u *)""; | 7071 return res != NULL ? res : (char_u *)""; |
7072 } | 7072 } |
7073 | 7073 |
7074 /* | 7074 /* |
7075 * Careful: This uses a single, static buffer. YOU CAN ONLY USE IT ONCE! | 7075 * Careful: This uses a single, static buffer. YOU CAN ONLY USE IT ONCE! |
7076 */ | 7076 */ |
7077 char_u * | 7077 char_u * |
7078 get_tv_string_chk(typval_T *varp) | 7078 tv_get_string_chk(typval_T *varp) |
7079 { | 7079 { |
7080 static char_u mybuf[NUMBUFLEN]; | 7080 static char_u mybuf[NUMBUFLEN]; |
7081 | 7081 |
7082 return get_tv_string_buf_chk(varp, mybuf); | 7082 return tv_get_string_buf_chk(varp, mybuf); |
7083 } | 7083 } |
7084 | 7084 |
7085 char_u * | 7085 char_u * |
7086 get_tv_string_buf_chk(typval_T *varp, char_u *buf) | 7086 tv_get_string_buf_chk(typval_T *varp, char_u *buf) |
7087 { | 7087 { |
7088 switch (varp->v_type) | 7088 switch (varp->v_type) |
7089 { | 7089 { |
7090 case VAR_NUMBER: | 7090 case VAR_NUMBER: |
7091 vim_snprintf((char *)buf, NUMBUFLEN, "%lld", | 7091 vim_snprintf((char *)buf, NUMBUFLEN, "%lld", |
7296 return NULL; | 7296 return NULL; |
7297 } | 7297 } |
7298 | 7298 |
7299 /* | 7299 /* |
7300 * Get the string value of a (global/local) variable. | 7300 * Get the string value of a (global/local) variable. |
7301 * Note: see get_tv_string() for how long the pointer remains valid. | 7301 * Note: see tv_get_string() for how long the pointer remains valid. |
7302 * Returns NULL when it doesn't exist. | 7302 * Returns NULL when it doesn't exist. |
7303 */ | 7303 */ |
7304 char_u * | 7304 char_u * |
7305 get_var_value(char_u *name) | 7305 get_var_value(char_u *name) |
7306 { | 7306 { |
7307 dictitem_T *v; | 7307 dictitem_T *v; |
7308 | 7308 |
7309 v = find_var(name, NULL, FALSE); | 7309 v = find_var(name, NULL, FALSE); |
7310 if (v == NULL) | 7310 if (v == NULL) |
7311 return NULL; | 7311 return NULL; |
7312 return get_tv_string(&v->di_tv); | 7312 return tv_get_string(&v->di_tv); |
7313 } | 7313 } |
7314 | 7314 |
7315 /* | 7315 /* |
7316 * Allocate a new hashtab for a sourced script. It will be used while | 7316 * Allocate a new hashtab for a sourced script. It will be used while |
7317 * sourcing this script and when executing functions defined in the script. | 7317 * sourcing this script and when executing functions defined in the script. |
7542 { | 7542 { |
7543 if (v->di_tv.v_type == VAR_STRING) | 7543 if (v->di_tv.v_type == VAR_STRING) |
7544 { | 7544 { |
7545 vim_free(v->di_tv.vval.v_string); | 7545 vim_free(v->di_tv.vval.v_string); |
7546 if (copy || tv->v_type != VAR_STRING) | 7546 if (copy || tv->v_type != VAR_STRING) |
7547 v->di_tv.vval.v_string = vim_strsave(get_tv_string(tv)); | 7547 v->di_tv.vval.v_string = vim_strsave(tv_get_string(tv)); |
7548 else | 7548 else |
7549 { | 7549 { |
7550 /* Take over the string to avoid an extra alloc/free. */ | 7550 /* Take over the string to avoid an extra alloc/free. */ |
7551 v->di_tv.vval.v_string = tv->vval.v_string; | 7551 v->di_tv.vval.v_string = tv->vval.v_string; |
7552 tv->vval.v_string = NULL; | 7552 tv->vval.v_string = NULL; |
7553 } | 7553 } |
7554 return; | 7554 return; |
7555 } | 7555 } |
7556 else if (v->di_tv.v_type == VAR_NUMBER) | 7556 else if (v->di_tv.v_type == VAR_NUMBER) |
7557 { | 7557 { |
7558 v->di_tv.vval.v_number = get_tv_number(tv); | 7558 v->di_tv.vval.v_number = tv_get_number(tv); |
7559 if (STRCMP(varname, "searchforward") == 0) | 7559 if (STRCMP(varname, "searchforward") == 0) |
7560 set_search_direction(v->di_tv.vval.v_number ? '/' : '?'); | 7560 set_search_direction(v->di_tv.vval.v_number ? '/' : '?'); |
7561 #ifdef FEAT_SEARCH_EXTRA | 7561 #ifdef FEAT_SEARCH_EXTRA |
7562 else if (STRCMP(varname, "hlsearch") == 0) | 7562 else if (STRCMP(varname, "hlsearch") == 0) |
7563 { | 7563 { |
7892 typval_T *argvars, | 7892 typval_T *argvars, |
7893 typval_T *rettv, | 7893 typval_T *rettv, |
7894 int inputdialog, | 7894 int inputdialog, |
7895 int secret) | 7895 int secret) |
7896 { | 7896 { |
7897 char_u *prompt = get_tv_string_chk(&argvars[0]); | 7897 char_u *prompt = tv_get_string_chk(&argvars[0]); |
7898 char_u *p = NULL; | 7898 char_u *p = NULL; |
7899 int c; | 7899 int c; |
7900 char_u buf[NUMBUFLEN]; | 7900 char_u buf[NUMBUFLEN]; |
7901 int cmd_silent_save = cmd_silent; | 7901 int cmd_silent_save = cmd_silent; |
7902 char_u *defstr = (char_u *)""; | 7902 char_u *defstr = (char_u *)""; |
7935 } | 7935 } |
7936 cmdline_row = msg_row; | 7936 cmdline_row = msg_row; |
7937 | 7937 |
7938 if (argvars[1].v_type != VAR_UNKNOWN) | 7938 if (argvars[1].v_type != VAR_UNKNOWN) |
7939 { | 7939 { |
7940 defstr = get_tv_string_buf_chk(&argvars[1], buf); | 7940 defstr = tv_get_string_buf_chk(&argvars[1], buf); |
7941 if (defstr != NULL) | 7941 if (defstr != NULL) |
7942 stuffReadbuffSpec(defstr); | 7942 stuffReadbuffSpec(defstr); |
7943 | 7943 |
7944 if (!inputdialog && argvars[2].v_type != VAR_UNKNOWN) | 7944 if (!inputdialog && argvars[2].v_type != VAR_UNKNOWN) |
7945 { | 7945 { |
7948 long argt; | 7948 long argt; |
7949 | 7949 |
7950 /* input() with a third argument: completion */ | 7950 /* input() with a third argument: completion */ |
7951 rettv->vval.v_string = NULL; | 7951 rettv->vval.v_string = NULL; |
7952 | 7952 |
7953 xp_name = get_tv_string_buf_chk(&argvars[2], buf); | 7953 xp_name = tv_get_string_buf_chk(&argvars[2], buf); |
7954 if (xp_name == NULL) | 7954 if (xp_name == NULL) |
7955 return; | 7955 return; |
7956 | 7956 |
7957 xp_namelen = (int)STRLEN(xp_name); | 7957 xp_namelen = (int)STRLEN(xp_name); |
7958 | 7958 |
7973 ex_normal_busy = save_ex_normal_busy; | 7973 ex_normal_busy = save_ex_normal_busy; |
7974 } | 7974 } |
7975 if (inputdialog && rettv->vval.v_string == NULL | 7975 if (inputdialog && rettv->vval.v_string == NULL |
7976 && argvars[1].v_type != VAR_UNKNOWN | 7976 && argvars[1].v_type != VAR_UNKNOWN |
7977 && argvars[2].v_type != VAR_UNKNOWN) | 7977 && argvars[2].v_type != VAR_UNKNOWN) |
7978 rettv->vval.v_string = vim_strsave(get_tv_string_buf( | 7978 rettv->vval.v_string = vim_strsave(tv_get_string_buf( |
7979 &argvars[2], buf)); | 7979 &argvars[2], buf)); |
7980 | 7980 |
7981 vim_free(xp_arg); | 7981 vim_free(xp_arg); |
7982 | 7982 |
7983 /* since the user typed this, no need to wait for return */ | 7983 /* since the user typed this, no need to wait for return */ |
8140 break; | 8140 break; |
8141 } | 8141 } |
8142 | 8142 |
8143 if (!eap->skip) | 8143 if (!eap->skip) |
8144 { | 8144 { |
8145 p = get_tv_string(&rettv); | 8145 p = tv_get_string(&rettv); |
8146 len = (int)STRLEN(p); | 8146 len = (int)STRLEN(p); |
8147 if (ga_grow(&ga, len + 2) == FAIL) | 8147 if (ga_grow(&ga, len + 2) == FAIL) |
8148 { | 8148 { |
8149 clear_tv(&rettv); | 8149 clear_tv(&rettv); |
8150 ret = FAIL; | 8150 ret = FAIL; |
8203 find_win_by_nr( | 8203 find_win_by_nr( |
8204 typval_T *vp, | 8204 typval_T *vp, |
8205 tabpage_T *tp) /* NULL for current tab page */ | 8205 tabpage_T *tp) /* NULL for current tab page */ |
8206 { | 8206 { |
8207 win_T *wp; | 8207 win_T *wp; |
8208 int nr = (int)get_tv_number_chk(vp, NULL); | 8208 int nr = (int)tv_get_number_chk(vp, NULL); |
8209 | 8209 |
8210 if (nr < 0) | 8210 if (nr < 0) |
8211 return NULL; | 8211 return NULL; |
8212 if (nr == 0) | 8212 if (nr == 0) |
8213 return curwin; | 8213 return curwin; |
8232 * in the current tab page. | 8232 * in the current tab page. |
8233 */ | 8233 */ |
8234 win_T * | 8234 win_T * |
8235 find_win_by_nr_or_id(typval_T *vp) | 8235 find_win_by_nr_or_id(typval_T *vp) |
8236 { | 8236 { |
8237 int nr = (int)get_tv_number_chk(vp, NULL); | 8237 int nr = (int)tv_get_number_chk(vp, NULL); |
8238 | 8238 |
8239 if (nr >= LOWEST_WIN_ID) | 8239 if (nr >= LOWEST_WIN_ID) |
8240 return win_id2wp(vp); | 8240 return win_id2wp(vp); |
8241 return find_win_by_nr(vp, NULL); | 8241 return find_win_by_nr(vp, NULL); |
8242 } | 8242 } |
8255 | 8255 |
8256 if (wvp->v_type != VAR_UNKNOWN) | 8256 if (wvp->v_type != VAR_UNKNOWN) |
8257 { | 8257 { |
8258 if (tvp->v_type != VAR_UNKNOWN) | 8258 if (tvp->v_type != VAR_UNKNOWN) |
8259 { | 8259 { |
8260 n = (long)get_tv_number(tvp); | 8260 n = (long)tv_get_number(tvp); |
8261 if (n >= 0) | 8261 if (n >= 0) |
8262 tp = find_tabpage(n); | 8262 tp = find_tabpage(n); |
8263 } | 8263 } |
8264 else | 8264 else |
8265 tp = curtab; | 8265 tp = curtab; |
8290 win_T *oldcurwin; | 8290 win_T *oldcurwin; |
8291 tabpage_T *oldtabpage; | 8291 tabpage_T *oldtabpage; |
8292 int need_switch_win; | 8292 int need_switch_win; |
8293 | 8293 |
8294 if (off == 1) | 8294 if (off == 1) |
8295 tp = find_tabpage((int)get_tv_number_chk(&argvars[0], NULL)); | 8295 tp = find_tabpage((int)tv_get_number_chk(&argvars[0], NULL)); |
8296 else | 8296 else |
8297 tp = curtab; | 8297 tp = curtab; |
8298 win = find_win_by_nr(&argvars[off], tp); | 8298 win = find_win_by_nr(&argvars[off], tp); |
8299 varname = get_tv_string_chk(&argvars[off + 1]); | 8299 varname = tv_get_string_chk(&argvars[off + 1]); |
8300 ++emsg_off; | 8300 ++emsg_off; |
8301 | 8301 |
8302 rettv->v_type = VAR_STRING; | 8302 rettv->v_type = VAR_STRING; |
8303 rettv->vval.v_string = NULL; | 8303 rettv->vval.v_string = NULL; |
8304 | 8304 |
8371 | 8371 |
8372 if (check_restricted() || check_secure()) | 8372 if (check_restricted() || check_secure()) |
8373 return; | 8373 return; |
8374 | 8374 |
8375 if (off == 1) | 8375 if (off == 1) |
8376 tp = find_tabpage((int)get_tv_number_chk(&argvars[0], NULL)); | 8376 tp = find_tabpage((int)tv_get_number_chk(&argvars[0], NULL)); |
8377 else | 8377 else |
8378 tp = curtab; | 8378 tp = curtab; |
8379 win = find_win_by_nr(&argvars[off], tp); | 8379 win = find_win_by_nr(&argvars[off], tp); |
8380 varname = get_tv_string_chk(&argvars[off + 1]); | 8380 varname = tv_get_string_chk(&argvars[off + 1]); |
8381 varp = &argvars[off + 2]; | 8381 varp = &argvars[off + 2]; |
8382 | 8382 |
8383 if (win != NULL && varname != NULL && varp != NULL) | 8383 if (win != NULL && varname != NULL && varp != NULL) |
8384 { | 8384 { |
8385 need_switch_win = !(tp == curtab && win == curwin); | 8385 need_switch_win = !(tp == curtab && win == curwin); |
8391 long numval; | 8391 long numval; |
8392 char_u *strval; | 8392 char_u *strval; |
8393 int error = FALSE; | 8393 int error = FALSE; |
8394 | 8394 |
8395 ++varname; | 8395 ++varname; |
8396 numval = (long)get_tv_number_chk(varp, &error); | 8396 numval = (long)tv_get_number_chk(varp, &error); |
8397 strval = get_tv_string_buf_chk(varp, nbuf); | 8397 strval = tv_get_string_buf_chk(varp, nbuf); |
8398 if (!error && strval != NULL) | 8398 if (!error && strval != NULL) |
8399 set_option_value(varname, numval, strval, OPT_LOCAL); | 8399 set_option_value(varname, numval, strval, OPT_LOCAL); |
8400 } | 8400 } |
8401 else | 8401 else |
8402 { | 8402 { |
8695 || this_var->di_tv.v_type == VAR_STRING) | 8695 || this_var->di_tv.v_type == VAR_STRING) |
8696 && var_flavour(this_var->di_key) == VAR_FLAVOUR_SESSION) | 8696 && var_flavour(this_var->di_key) == VAR_FLAVOUR_SESSION) |
8697 { | 8697 { |
8698 /* Escape special characters with a backslash. Turn a LF and | 8698 /* Escape special characters with a backslash. Turn a LF and |
8699 * CR into \n and \r. */ | 8699 * CR into \n and \r. */ |
8700 p = vim_strsave_escaped(get_tv_string(&this_var->di_tv), | 8700 p = vim_strsave_escaped(tv_get_string(&this_var->di_tv), |
8701 (char_u *)"\\\"\n\r"); | 8701 (char_u *)"\\\"\n\r"); |
8702 if (p == NULL) /* out of memory */ | 8702 if (p == NULL) /* out of memory */ |
8703 break; | 8703 break; |
8704 for (t = p; *t != NUL; ++t) | 8704 for (t = p; *t != NUL; ++t) |
8705 if (*t == '\n') | 8705 if (*t == '\n') |
8840 int | 8840 int |
8841 assert_equalfile(typval_T *argvars) | 8841 assert_equalfile(typval_T *argvars) |
8842 { | 8842 { |
8843 char_u buf1[NUMBUFLEN]; | 8843 char_u buf1[NUMBUFLEN]; |
8844 char_u buf2[NUMBUFLEN]; | 8844 char_u buf2[NUMBUFLEN]; |
8845 char_u *fname1 = get_tv_string_buf_chk(&argvars[0], buf1); | 8845 char_u *fname1 = tv_get_string_buf_chk(&argvars[0], buf1); |
8846 char_u *fname2 = get_tv_string_buf_chk(&argvars[1], buf2); | 8846 char_u *fname2 = tv_get_string_buf_chk(&argvars[1], buf2); |
8847 garray_T ga; | 8847 garray_T ga; |
8848 FILE *fd1; | 8848 FILE *fd1; |
8849 FILE *fd2; | 8849 FILE *fd2; |
8850 | 8850 |
8851 if (fname1 == NULL || fname2 == NULL) | 8851 if (fname1 == NULL || fname2 == NULL) |
8912 assert_match_common(typval_T *argvars, assert_type_T atype) | 8912 assert_match_common(typval_T *argvars, assert_type_T atype) |
8913 { | 8913 { |
8914 garray_T ga; | 8914 garray_T ga; |
8915 char_u buf1[NUMBUFLEN]; | 8915 char_u buf1[NUMBUFLEN]; |
8916 char_u buf2[NUMBUFLEN]; | 8916 char_u buf2[NUMBUFLEN]; |
8917 char_u *pat = get_tv_string_buf_chk(&argvars[0], buf1); | 8917 char_u *pat = tv_get_string_buf_chk(&argvars[0], buf1); |
8918 char_u *text = get_tv_string_buf_chk(&argvars[1], buf2); | 8918 char_u *text = tv_get_string_buf_chk(&argvars[1], buf2); |
8919 | 8919 |
8920 if (pat == NULL || text == NULL) | 8920 if (pat == NULL || text == NULL) |
8921 EMSG(_(e_invarg)); | 8921 EMSG(_(e_invarg)); |
8922 else if (pattern_match(pat, text, FALSE) != (atype == ASSERT_MATCH)) | 8922 else if (pattern_match(pat, text, FALSE) != (atype == ASSERT_MATCH)) |
8923 { | 8923 { |
8934 int | 8934 int |
8935 assert_inrange(typval_T *argvars) | 8935 assert_inrange(typval_T *argvars) |
8936 { | 8936 { |
8937 garray_T ga; | 8937 garray_T ga; |
8938 int error = FALSE; | 8938 int error = FALSE; |
8939 varnumber_T lower = get_tv_number_chk(&argvars[0], &error); | 8939 varnumber_T lower = tv_get_number_chk(&argvars[0], &error); |
8940 varnumber_T upper = get_tv_number_chk(&argvars[1], &error); | 8940 varnumber_T upper = tv_get_number_chk(&argvars[1], &error); |
8941 varnumber_T actual = get_tv_number_chk(&argvars[2], &error); | 8941 varnumber_T actual = tv_get_number_chk(&argvars[2], &error); |
8942 char_u *tofree; | 8942 char_u *tofree; |
8943 char msg[200]; | 8943 char msg[200]; |
8944 char_u numbuf[NUMBUFLEN]; | 8944 char_u numbuf[NUMBUFLEN]; |
8945 | 8945 |
8946 if (error) | 8946 if (error) |
8978 | 8978 |
8979 if (argvars[0].v_type == VAR_SPECIAL | 8979 if (argvars[0].v_type == VAR_SPECIAL |
8980 && argvars[0].vval.v_number == (isTrue ? VVAL_TRUE : VVAL_FALSE)) | 8980 && argvars[0].vval.v_number == (isTrue ? VVAL_TRUE : VVAL_FALSE)) |
8981 return 0; | 8981 return 0; |
8982 if (argvars[0].v_type != VAR_NUMBER | 8982 if (argvars[0].v_type != VAR_NUMBER |
8983 || (get_tv_number_chk(&argvars[0], &error) == 0) == isTrue | 8983 || (tv_get_number_chk(&argvars[0], &error) == 0) == isTrue |
8984 || error) | 8984 || error) |
8985 { | 8985 { |
8986 prepare_assert_error(&ga); | 8986 prepare_assert_error(&ga); |
8987 fill_assert_error(&ga, &argvars[1], | 8987 fill_assert_error(&ga, &argvars[1], |
8988 (char_u *)(isTrue ? "True" : "False"), | 8988 (char_u *)(isTrue ? "True" : "False"), |
8998 assert_report(typval_T *argvars) | 8998 assert_report(typval_T *argvars) |
8999 { | 8999 { |
9000 garray_T ga; | 9000 garray_T ga; |
9001 | 9001 |
9002 prepare_assert_error(&ga); | 9002 prepare_assert_error(&ga); |
9003 ga_concat(&ga, get_tv_string(&argvars[0])); | 9003 ga_concat(&ga, tv_get_string(&argvars[0])); |
9004 assert_error(&ga); | 9004 assert_error(&ga); |
9005 ga_clear(&ga); | 9005 ga_clear(&ga); |
9006 return 1; | 9006 return 1; |
9007 } | 9007 } |
9008 | 9008 |
9009 int | 9009 int |
9010 assert_exception(typval_T *argvars) | 9010 assert_exception(typval_T *argvars) |
9011 { | 9011 { |
9012 garray_T ga; | 9012 garray_T ga; |
9013 char_u *error = get_tv_string_chk(&argvars[0]); | 9013 char_u *error = tv_get_string_chk(&argvars[0]); |
9014 | 9014 |
9015 if (vimvars[VV_EXCEPTION].vv_str == NULL) | 9015 if (vimvars[VV_EXCEPTION].vv_str == NULL) |
9016 { | 9016 { |
9017 prepare_assert_error(&ga); | 9017 prepare_assert_error(&ga); |
9018 ga_concat(&ga, (char_u *)"v:exception is not set"); | 9018 ga_concat(&ga, (char_u *)"v:exception is not set"); |
9034 } | 9034 } |
9035 | 9035 |
9036 int | 9036 int |
9037 assert_beeps(typval_T *argvars) | 9037 assert_beeps(typval_T *argvars) |
9038 { | 9038 { |
9039 char_u *cmd = get_tv_string_chk(&argvars[0]); | 9039 char_u *cmd = tv_get_string_chk(&argvars[0]); |
9040 garray_T ga; | 9040 garray_T ga; |
9041 int ret = 0; | 9041 int ret = 0; |
9042 | 9042 |
9043 called_vim_beep = FALSE; | 9043 called_vim_beep = FALSE; |
9044 suppress_errthrow = TRUE; | 9044 suppress_errthrow = TRUE; |
9060 } | 9060 } |
9061 | 9061 |
9062 int | 9062 int |
9063 assert_fails(typval_T *argvars) | 9063 assert_fails(typval_T *argvars) |
9064 { | 9064 { |
9065 char_u *cmd = get_tv_string_chk(&argvars[0]); | 9065 char_u *cmd = tv_get_string_chk(&argvars[0]); |
9066 garray_T ga; | 9066 garray_T ga; |
9067 int ret = 0; | 9067 int ret = 0; |
9068 char_u numbuf[NUMBUFLEN]; | 9068 char_u numbuf[NUMBUFLEN]; |
9069 char_u *tofree; | 9069 char_u *tofree; |
9070 | 9070 |
9089 ret = 1; | 9089 ret = 1; |
9090 } | 9090 } |
9091 else if (argvars[1].v_type != VAR_UNKNOWN) | 9091 else if (argvars[1].v_type != VAR_UNKNOWN) |
9092 { | 9092 { |
9093 char_u buf[NUMBUFLEN]; | 9093 char_u buf[NUMBUFLEN]; |
9094 char *error = (char *)get_tv_string_buf_chk(&argvars[1], buf); | 9094 char *error = (char *)tv_get_string_buf_chk(&argvars[1], buf); |
9095 | 9095 |
9096 if (error == NULL | 9096 if (error == NULL |
9097 || strstr((char *)vimvars[VV_ERRMSG].vv_str, error) == NULL) | 9097 || strstr((char *)vimvars[VV_ERRMSG].vv_str, error) == NULL) |
9098 { | 9098 { |
9099 prepare_assert_error(&ga); | 9099 prepare_assert_error(&ga); |
9323 float_T f1, f2; | 9323 float_T f1, f2; |
9324 | 9324 |
9325 if (typ1->v_type == VAR_FLOAT) | 9325 if (typ1->v_type == VAR_FLOAT) |
9326 f1 = typ1->vval.v_float; | 9326 f1 = typ1->vval.v_float; |
9327 else | 9327 else |
9328 f1 = get_tv_number(typ1); | 9328 f1 = tv_get_number(typ1); |
9329 if (typ2->v_type == VAR_FLOAT) | 9329 if (typ2->v_type == VAR_FLOAT) |
9330 f2 = typ2->vval.v_float; | 9330 f2 = typ2->vval.v_float; |
9331 else | 9331 else |
9332 f2 = get_tv_number(typ2); | 9332 f2 = tv_get_number(typ2); |
9333 n1 = FALSE; | 9333 n1 = FALSE; |
9334 switch (type) | 9334 switch (type) |
9335 { | 9335 { |
9336 case TYPE_EQUAL: n1 = (f1 == f2); break; | 9336 case TYPE_EQUAL: n1 = (f1 == f2); break; |
9337 case TYPE_NEQUAL: n1 = (f1 != f2); break; | 9337 case TYPE_NEQUAL: n1 = (f1 != f2); break; |
9351 * When using "=~" or "!~", always compare as string. | 9351 * When using "=~" or "!~", always compare as string. |
9352 */ | 9352 */ |
9353 else if ((typ1->v_type == VAR_NUMBER || typ2->v_type == VAR_NUMBER) | 9353 else if ((typ1->v_type == VAR_NUMBER || typ2->v_type == VAR_NUMBER) |
9354 && type != TYPE_MATCH && type != TYPE_NOMATCH) | 9354 && type != TYPE_MATCH && type != TYPE_NOMATCH) |
9355 { | 9355 { |
9356 n1 = get_tv_number(typ1); | 9356 n1 = tv_get_number(typ1); |
9357 n2 = get_tv_number(typ2); | 9357 n2 = tv_get_number(typ2); |
9358 switch (type) | 9358 switch (type) |
9359 { | 9359 { |
9360 case TYPE_EQUAL: n1 = (n1 == n2); break; | 9360 case TYPE_EQUAL: n1 = (n1 == n2); break; |
9361 case TYPE_NEQUAL: n1 = (n1 != n2); break; | 9361 case TYPE_NEQUAL: n1 = (n1 != n2); break; |
9362 case TYPE_GREATER: n1 = (n1 > n2); break; | 9362 case TYPE_GREATER: n1 = (n1 > n2); break; |
9368 case TYPE_NOMATCH: break; /* avoid gcc warning */ | 9368 case TYPE_NOMATCH: break; /* avoid gcc warning */ |
9369 } | 9369 } |
9370 } | 9370 } |
9371 else | 9371 else |
9372 { | 9372 { |
9373 s1 = get_tv_string_buf(typ1, buf1); | 9373 s1 = tv_get_string_buf(typ1, buf1); |
9374 s2 = get_tv_string_buf(typ2, buf2); | 9374 s2 = tv_get_string_buf(typ2, buf2); |
9375 if (type != TYPE_MATCH && type != TYPE_NOMATCH) | 9375 if (type != TYPE_MATCH && type != TYPE_NOMATCH) |
9376 i = ic ? MB_STRICMP(s1, s2) : STRCMP(s1, s2); | 9376 i = ic ? MB_STRICMP(s1, s2) : STRCMP(s1, s2); |
9377 else | 9377 else |
9378 i = 0; | 9378 i = 0; |
9379 n1 = FALSE; | 9379 n1 = FALSE; |
10218 else | 10218 else |
10219 { | 10219 { |
10220 int error = FALSE; | 10220 int error = FALSE; |
10221 | 10221 |
10222 /* filter(): when expr is zero remove the item */ | 10222 /* filter(): when expr is zero remove the item */ |
10223 *remp = (get_tv_number_chk(&rettv, &error) == 0); | 10223 *remp = (tv_get_number_chk(&rettv, &error) == 0); |
10224 clear_tv(&rettv); | 10224 clear_tv(&rettv); |
10225 /* On type error, nothing has been removed; return FAIL to stop the | 10225 /* On type error, nothing has been removed; return FAIL to stop the |
10226 * loop. The error message was given by get_tv_number_chk(). */ | 10226 * loop. The error message was given by tv_get_number_chk(). */ |
10227 if (error) | 10227 if (error) |
10228 goto theend; | 10228 goto theend; |
10229 } | 10229 } |
10230 retval = OK; | 10230 retval = OK; |
10231 theend: | 10231 theend: |