C API、lua_insert()

/*
 * $ gcc -Wall -W -o 2008100400 -llua50 2008100400.c
 */

#include <stdio.h>
#include <lua50/lua.h>

int main(void) {
  lua_State *L;

  L = lua_open();
  printf("%d\n", lua_gettop(L));

  lua_pushnumber(L, 10);
  printf("%d %d\n", lua_gettop(L), (int)lua_tonumber(L, -1));

  lua_pushnumber(L, 20);
  printf("%d %d\n", lua_gettop(L), (int)lua_tonumber(L, -1));

  lua_pushnumber(L, 30);
  printf("%d %d\n", lua_gettop(L), (int)lua_tonumber(L, -1));

  lua_insert(L, 1);
  printf("%d %d\n", lua_gettop(L), (int)lua_tonumber(L, -1));
  printf("%d %d\n", lua_gettop(L), (int)lua_tonumber(L, 1));
  printf("%d %d\n", lua_gettop(L), (int)lua_tonumber(L, 2));
  printf("%d %d\n", lua_gettop(L), (int)lua_tonumber(L, 3));

  lua_insert(L, 1);
  printf("%d %d\n", lua_gettop(L), (int)lua_tonumber(L, -1));

  lua_close(L);

  return 0;
}

で、

0
1 10
2 20
3 30
3 20
3 30
3 10
3 20
3 10