+}
+
+
+static void extl_stack_pusha(lua_State *st, ExtlAny *a)
+{
+ switch(a->type){
+ case 'i': lua_pushnumber(st, a->value.i); break;
+ case 'd': lua_pushnumber(st, a->value.d); break;
+ case 'b': lua_pushboolean(st, a->value.b); break;
+ case 'o': extl_push_obj(st, a->value.o); break;
+ case 's':
+ case 'S': lua_pushstring(st, a->value.s); break;
+ case 't': lua_rawgeti(st, LUA_REGISTRYINDEX, a->value.t); break;
+ case 'f': lua_rawgeti(st, LUA_REGISTRYINDEX, a->value.f); break;
+ default: lua_pushnil(st);
+ }
+}
+
+
+static void extl_stack_push(lua_State *st, char spec, void *ptr)
+{
+ ExtlAny a;
+
+ extl_to_any(&a, spec, ptr);
+ extl_stack_pusha(st, &a);
+}
+
+
+static bool extl_stack_push_vararg(lua_State *st, char spec, va_list *argsp)
+{
+ ExtlAny a;
+
+ extl_to_any_vararg(&a, spec, argsp);
+ extl_stack_pusha(st, &a);