comparison src/evalfunc.c @ 16213:2c33b119ba92 v8.1.1111

patch 8.1.1111: it is not easy to check for infinity commit https://github.com/vim/vim/commit/fda1bff39f89775b20a2d88ef3903656d52f66ad Author: Bram Moolenaar <Bram@vim.org> Date: Thu Apr 4 13:44:37 2019 +0200 patch 8.1.1111: it is not easy to check for infinity Problem: It is not easy to check for infinity. Solution: Add isinf(). (Ozaki Kiichi, closes https://github.com/vim/vim/issues/3787)
author Bram Moolenaar <Bram@vim.org>
date Thu, 04 Apr 2019 13:45:04 +0200
parents cd5c83115ec6
children abb67309c1ca
comparison
equal deleted inserted replaced
16212:862f5ea5dcb0 16213:2c33b119ba92
235 static void f_insert(typval_T *argvars, typval_T *rettv); 235 static void f_insert(typval_T *argvars, typval_T *rettv);
236 static void f_invert(typval_T *argvars, typval_T *rettv); 236 static void f_invert(typval_T *argvars, typval_T *rettv);
237 static void f_isdirectory(typval_T *argvars, typval_T *rettv); 237 static void f_isdirectory(typval_T *argvars, typval_T *rettv);
238 static void f_islocked(typval_T *argvars, typval_T *rettv); 238 static void f_islocked(typval_T *argvars, typval_T *rettv);
239 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H) 239 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H)
240 static void f_isinf(typval_T *argvars, typval_T *rettv);
240 static void f_isnan(typval_T *argvars, typval_T *rettv); 241 static void f_isnan(typval_T *argvars, typval_T *rettv);
241 #endif 242 #endif
242 static void f_items(typval_T *argvars, typval_T *rettv); 243 static void f_items(typval_T *argvars, typval_T *rettv);
243 #ifdef FEAT_JOB_CHANNEL 244 #ifdef FEAT_JOB_CHANNEL
244 static void f_job_getchannel(typval_T *argvars, typval_T *rettv); 245 static void f_job_getchannel(typval_T *argvars, typval_T *rettv);
719 {"inputsave", 0, 0, f_inputsave}, 720 {"inputsave", 0, 0, f_inputsave},
720 {"inputsecret", 1, 2, f_inputsecret}, 721 {"inputsecret", 1, 2, f_inputsecret},
721 {"insert", 2, 3, f_insert}, 722 {"insert", 2, 3, f_insert},
722 {"invert", 1, 1, f_invert}, 723 {"invert", 1, 1, f_invert},
723 {"isdirectory", 1, 1, f_isdirectory}, 724 {"isdirectory", 1, 1, f_isdirectory},
725 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H)
726 {"isinf", 1, 1, f_isinf},
727 #endif
724 {"islocked", 1, 1, f_islocked}, 728 {"islocked", 1, 1, f_islocked},
725 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H) 729 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H)
726 {"isnan", 1, 1, f_isnan}, 730 {"isnan", 1, 1, f_isnan},
727 #endif 731 #endif
728 {"items", 1, 1, f_items}, 732 {"items", 1, 1, f_items},
6580 "system", 6584 "system",
6581 #endif 6585 #endif
6582 #ifdef FEAT_TAG_BINS 6586 #ifdef FEAT_TAG_BINS
6583 "tag_binary", 6587 "tag_binary",
6584 #endif 6588 #endif
6585 #ifdef FEAT_TAG_OLDSTATIC
6586 "tag_old_static",
6587 #endif
6588 #ifdef FEAT_TCL 6589 #ifdef FEAT_TCL
6589 # ifndef DYNAMIC_TCL 6590 # ifndef DYNAMIC_TCL
6590 "tcl", 6591 "tcl",
6591 # endif 6592 # endif
6592 #endif 6593 #endif
7440 7441
7441 clear_lval(&lv); 7442 clear_lval(&lv);
7442 } 7443 }
7443 7444
7444 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H) 7445 #if defined(FEAT_FLOAT) && defined(HAVE_MATH_H)
7446 /*
7447 * "isinf()" function
7448 */
7449 static void
7450 f_isinf(typval_T *argvars, typval_T *rettv)
7451 {
7452 if (argvars[0].v_type == VAR_FLOAT && isinf(argvars[0].vval.v_float))
7453 rettv->vval.v_number = argvars[0].vval.v_float > 0.0 ? 1 : -1;
7454 }
7455
7445 /* 7456 /*
7446 * "isnan()" function 7457 * "isnan()" function
7447 */ 7458 */
7448 static void 7459 static void
7449 f_isnan(typval_T *argvars, typval_T *rettv) 7460 f_isnan(typval_T *argvars, typval_T *rettv)