void CrawlStack(lua_State* L,LuaStack& S,int level)
{
	int t = lua_type(L, level);
	if (t==LUA_TTABLE) {
		TableCrawler C(L,level);
		boost::shared_ptr<LuaTable> v=C.GetTable();
		S.Append(v);
	} else {
		S.Append(GetScalarValue(L,level));
	}
}
void CrawlStack(lua_State* L,LuaStack& S)
{
	int top = lua_gettop(L);
	for (int i = 1; i <= top; i++) {  /* repeat for each level */
		int t = lua_type(L, i);
		if (t==LUA_TTABLE) {
			TableCrawler C(L,i);
			boost::shared_ptr<LuaTable> v=C.GetTable();
			S.Append(v);
		} else {
			S.Append(GetScalarValue(L,i));
		}
	}
}