feat(library/kernel_bindings): expose methods substitution::for_each_expr and substitution::for_each_level in the Lua API
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
parent
2c3e3cb544
commit
86a56fbd2d
1 changed files with 24 additions and 0 deletions
|
@ -1757,6 +1757,28 @@ static int subst_instantiate(lua_State * L) {
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int subst_for_each_expr(lua_State * L) {
|
||||||
|
substitution const & s = to_substitution(L, 1);
|
||||||
|
luaL_checktype(L, 2, LUA_TFUNCTION); // user-fun
|
||||||
|
s.for_each_expr([&](name const & n, expr const & e, justification const & j) {
|
||||||
|
lua_pushvalue(L, 2); // push user-fun
|
||||||
|
push_name(L, n); push_expr(L, e); push_justification(L, j);
|
||||||
|
pcall(L, 3, 0, 0);
|
||||||
|
});
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int subst_for_each_level(lua_State * L) {
|
||||||
|
substitution const & s = to_substitution(L, 1);
|
||||||
|
luaL_checktype(L, 2, LUA_TFUNCTION); // user-fun
|
||||||
|
s.for_each_level([&](name const & n, level const & l, justification const & j) {
|
||||||
|
lua_pushvalue(L, 2); // push user-fun
|
||||||
|
push_name(L, n); push_level(L, l); push_justification(L, j);
|
||||||
|
pcall(L, 3, 0, 0);
|
||||||
|
});
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static const struct luaL_Reg substitution_m[] = {
|
static const struct luaL_Reg substitution_m[] = {
|
||||||
{"__gc", substitution_gc},
|
{"__gc", substitution_gc},
|
||||||
{"get_expr", safe_function<subst_get_expr>},
|
{"get_expr", safe_function<subst_get_expr>},
|
||||||
|
@ -1771,6 +1793,8 @@ static const struct luaL_Reg substitution_m[] = {
|
||||||
{"get_level_assignment", safe_function<subst_get_level_assignment>},
|
{"get_level_assignment", safe_function<subst_get_level_assignment>},
|
||||||
{"get_assignment", safe_function<subst_get_assignment>},
|
{"get_assignment", safe_function<subst_get_assignment>},
|
||||||
{"instantiate", safe_function<subst_instantiate>},
|
{"instantiate", safe_function<subst_instantiate>},
|
||||||
|
{"for_each_expr", safe_function<subst_for_each_expr>},
|
||||||
|
{"for_each_level", safe_function<subst_for_each_level>},
|
||||||
{0, 0}
|
{0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue