comparison src/eval.c @ 3450:b067b8b81be9 v7.3.490

updated for version 7.3.490 Problem: Member confusion in Lua interface. Solution: Fix it. Add luaeval(). (Taro Muraoka, Luis Carvalho)
author Bram Moolenaar <bram@vim.org>
date Thu, 05 Apr 2012 16:54:08 +0200
parents 19040069b8bf
children fe7bf24804e1
comparison
equal deleted inserted replaced
3449:3107917c6aed 3450:b067b8b81be9
620 static void f_localtime __ARGS((typval_T *argvars, typval_T *rettv)); 620 static void f_localtime __ARGS((typval_T *argvars, typval_T *rettv));
621 #ifdef FEAT_FLOAT 621 #ifdef FEAT_FLOAT
622 static void f_log __ARGS((typval_T *argvars, typval_T *rettv)); 622 static void f_log __ARGS((typval_T *argvars, typval_T *rettv));
623 static void f_log10 __ARGS((typval_T *argvars, typval_T *rettv)); 623 static void f_log10 __ARGS((typval_T *argvars, typval_T *rettv));
624 #endif 624 #endif
625 #ifdef FEAT_LUA
626 static void f_luaeval __ARGS((typval_T *argvars, typval_T *rettv));
627 #endif
625 static void f_map __ARGS((typval_T *argvars, typval_T *rettv)); 628 static void f_map __ARGS((typval_T *argvars, typval_T *rettv));
626 static void f_maparg __ARGS((typval_T *argvars, typval_T *rettv)); 629 static void f_maparg __ARGS((typval_T *argvars, typval_T *rettv));
627 static void f_mapcheck __ARGS((typval_T *argvars, typval_T *rettv)); 630 static void f_mapcheck __ARGS((typval_T *argvars, typval_T *rettv));
628 static void f_match __ARGS((typval_T *argvars, typval_T *rettv)); 631 static void f_match __ARGS((typval_T *argvars, typval_T *rettv));
629 static void f_matchadd __ARGS((typval_T *argvars, typval_T *rettv)); 632 static void f_matchadd __ARGS((typval_T *argvars, typval_T *rettv));
6774 set_ref_in_ht(&fc->l_avars.dv_hashtab, copyID); 6777 set_ref_in_ht(&fc->l_avars.dv_hashtab, copyID);
6775 } 6778 }
6776 6779
6777 /* v: vars */ 6780 /* v: vars */
6778 set_ref_in_ht(&vimvarht, copyID); 6781 set_ref_in_ht(&vimvarht, copyID);
6782
6783 #ifdef FEAT_LUA
6784 set_ref_in_lua(copyID);
6785 #endif
6779 6786
6780 /* 6787 /*
6781 * 2. Free lists and dictionaries that are not referenced. 6788 * 2. Free lists and dictionaries that are not referenced.
6782 */ 6789 */
6783 did_free = free_unref_items(copyID); 6790 did_free = free_unref_items(copyID);
7944 {"localtime", 0, 0, f_localtime}, 7951 {"localtime", 0, 0, f_localtime},
7945 #ifdef FEAT_FLOAT 7952 #ifdef FEAT_FLOAT
7946 {"log", 1, 1, f_log}, 7953 {"log", 1, 1, f_log},
7947 {"log10", 1, 1, f_log10}, 7954 {"log10", 1, 1, f_log10},
7948 #endif 7955 #endif
7956 #ifdef FEAT_LUA
7957 {"luaeval", 1, 2, f_luaeval},
7958 #endif
7949 {"map", 2, 2, f_map}, 7959 {"map", 2, 2, f_map},
7950 {"maparg", 1, 4, f_maparg}, 7960 {"maparg", 1, 4, f_maparg},
7951 {"mapcheck", 1, 3, f_mapcheck}, 7961 {"mapcheck", 1, 3, f_mapcheck},
7952 {"match", 2, 4, f_match}, 7962 {"match", 2, 4, f_match},
7953 {"matchadd", 2, 4, f_matchadd}, 7963 {"matchadd", 2, 4, f_matchadd},
13621 rettv->v_type = VAR_FLOAT; 13631 rettv->v_type = VAR_FLOAT;
13622 if (get_float_arg(argvars, &f) == OK) 13632 if (get_float_arg(argvars, &f) == OK)
13623 rettv->vval.v_float = log10(f); 13633 rettv->vval.v_float = log10(f);
13624 else 13634 else
13625 rettv->vval.v_float = 0.0; 13635 rettv->vval.v_float = 0.0;
13636 }
13637 #endif
13638
13639 #ifdef FEAT_LUA
13640 /*
13641 * "luaeval()" function
13642 */
13643 static void
13644 f_luaeval(argvars, rettv)
13645 typval_T *argvars;
13646 typval_T *rettv;
13647 {
13648 char_u *str;
13649 char_u buf[NUMBUFLEN];
13650
13651 str = get_tv_string_buf(&argvars[0], buf);
13652 do_luaeval(str, argvars + 1, rettv);
13626 } 13653 }
13627 #endif 13654 #endif
13628 13655
13629 /* 13656 /*
13630 * "map()" function 13657 * "map()" function