精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

詳解關于Lua棧介紹以及實例

移動開發 iOS
關于Lua棧介紹以及實例是本文要介紹的內容,主要是棧在lua中如何使用,具體內容的實現來看本文詳解。

關于Lua棧介紹以及實例是本文要介紹的內容,主要是lua中如何使用,具體內容的實現來看本文詳解。c++中載入lua的代碼

  1. #include <> //所需要的頭文件  
  2. extern "C"  
  3. {  
  4. #include "include\lua.h"  
  5. #include "include\lualib.h"  
  6. #include "include\lauxlib.h"  
  7. #pragma comment(lib, "lua.lib")  
  8. };  
  9.  
  10. int main(void)  
  11. {  
  12.         char buff[256]; //棧  
  13.         int error; //錯誤代碼  
  14.         lua_State* L = lua_open(); //lua指針  
  15.         luaL_openlibs(L); //載入所有lua庫  
  16.         //在此加入所需代碼...  
  17.         lua_close(L); //關閉lua  
  18.         return 0;  

在Programming in lua中載入庫的方法是分別載入5個庫,分別是base、table、io、string、math,但是在使用中(lua5.1.3 + vs.net2003)發現io庫在載入的時候會出現錯誤,程序無法繼續執行,但不提示錯誤。

在網上查詢了一下,有些人遇到的是非法引用內存(見這里),他的解決方法是改成上面代碼中的方式:直接載入全部庫。

在這里有一段解釋:“關于luaopen_io調用失敗的問題,在Lua的maillist里問了一下,有人說是因為io庫里有些函數的運行是依賴于Lua建立的特定的環境,所以要用lua_call來調用,要么,就直接用luaL_openlibs來引入所有標準庫。看了看幫助文檔,還有Lua的源代碼,似乎好像就是這么回事啊!”

再查官方文檔(http://www.lua.org/manual/5.1/manual.html)中有一段:

  1. To have access to these libraries, the C host program should call the luaL_openlibs function,   
  2. which opens all standard libraries. Alternatively, it can open them individually by calling luaopen_base (for the basic library),   
  3. luaopen_package (for the package library), luaopen_string (for the string library),   
  4. luaopen_table (for the table library), luaopen_math (for the mathematical library),   
  5. luaopen_io (for the I/O library), luaopen_os (for the Operating System library),   
  6. and luaopen_debug (for the debug library).   
  7. These functions are declared in lualib.h and should not be called directly: you must call them like any other Lua C function, e.g.,   
  8. by using lua_call. " 

最后這句的意思是:“這些函數在lualib.h中定義并且不能直接調用:你必須以其他C函數調用方式來進行調用,例如使用lua_call。”

接著是lua_call的用法:

lua_call

原型:void lua_call (lua_State *L, int nargs, int nresults);

Calls a function.

功能:調用一個方法

調用一個函數必須按照以下的規則:首先,將要調用的函數入棧;之后,將函數參數按順序入棧,就是說第一個參數最先入棧。最后調用lua_call;nargs是入棧的參數數。當函數被調用時彈出全部的參數和函數值。當函數返回后函數結果會壓入棧。結果的數量取決于nresults(lua_call的最后一個參數)。除非nresults的值是LUA_MULTRET。以這種方式所有的函數結果都被入棧。由Lua管理棧空間中的這些返回值。函數的結果按順序入棧(第一個元素最先入棧),所以在調用完成后最后一個參數在棧頂。

  1. Any error inside the called function is propagated upwards (with a longjmp).  

在函數調用中產生的error會被向上傳遞(使用longjmp方式)。

  1. The following example shows how the host program may do the equivalent to this Lua code:  

下面的例子展示了如何使宿主程序做如下lua代碼的功能:

  1. a = f("how", t.x, 14)  
  2. it is in C:  

這是在C中:

  1. lua_getfield(L, LUA_GLOBALSINDEX, "f"); /* function to be called */  
  2. lua_pushstring(L, "how");                        /* 1st argument */  
  3. lua_getfield(L, LUA_GLOBALSINDEX, "t");   /* table to be indexed */  
  4. lua_getfield(L, -1, "x");        /* push result of t.x (2nd arg) */  
  5. lua_remove(L, -2);                  /* remove 't' from the stack */  
  6. lua_pushinteger(L, 14);                          /* 3rd argument */  
  7. lua_call(L, 3, 1);     /* call 'f' with 3 arguments and 1 result */  
  8. lua_setfield(L, LUA_GLOBALSINDEX, "a");        /* set global 'a' */ 

如果看不明白(其實我也不明白)那就直接按照最上面的代碼中所寫的方式載入lua庫吧。

學習LUA也有一些時日了,個人認為對于LUA中的棧的理解很重要,嗯,寫個小文章(真的很小) 

如果你看了LUA的文檔,那么就應該很清楚LUA與C交互數據時都是用到LUA中所謂的stack。那么當我調用lua_open函數之后棧是什么樣的呢?空的(luaopen_base等會往棧上加進一些東西)。那么至于如何操作棧上的數據,我想官方文檔上已經說得很清楚了,不過最初我對于棧的順序有一些迷糊,所以就說說這個。現在假如我有如下的一段代碼:

  1. lua_State* L = lua_open();  
  2. lua_pushnumber( L, 211 );  
  3. lua_pushnumber( L, 2222 );  
  4. lua_newtable( L );  
  5. lua_close( L ); 

那么當執行完lua_newtable之后棧上有三個元素,大致就是這樣:

  1. 211   
  2. 222   
  3. table  

現在211是第一個元素,index為1,不過LUA也可以用負數來表示,那么現在他是多少?

  1. index -index value   
  2. 1 -3 211   
  3. 2 -2 222   
  4. 3 -1 table  

嗯,很簡單,再看看如果我們要設置一個TABLE的值怎么做?文檔中說用lua_settable或是lua_rawset(這兩者有什么區別應該和這里說的無關),它們參數意義、以及準備工作都一樣,-1是值,-2是鍵值

  1. lua_settable( lua_state*, int ) 

第一個參數是要操作的腳本環境,第二個則是要操作的表在棧上的位置

一般的寫法可能是這樣

  1. // 代碼A  
  2. lua_getglobal( L, "myTable" );   // 獲取要設置值的table  
  3. lua_pushstring( L, "hp" );         // "hp"在棧上的位置為-1  
  4. lua_pushnumber( L, 211 );          // "hp"在棧上的位置變為-2,而211則是-1  
  5. lua_settable( L, -3 );               // 值被正確的設置到全局變量(表)的myTable中 

如果我是想把hp這個值設置到全局表中呢?一般通過調用lua_setglobal宏

  1. lua_pushnumber( L, 211 );  
  2. lua_setglobal( L, "hp" ); 

就這么簡單,不過我們來看看lua_setglobal這個宏

  1. #define lua_setglobal(L,s)    \  
  2.  
  3.    (lua_pushstring(L, s), lua_insert(L, -2), lua_settable(L, LUA_GLOBALSINDEX)) 

這么看來實際上我們上面的代碼被替換成了

  1. lua_pushnumber( L, 211 );  
  2. lua_pushstring( L, "hp" );  
  3. lua_insert( L, -2 );         // 這一步看上去或許比較詭異,實際上是把-1的值放到lua_insert的第二個參數所指的位置,然后這個位置后面的參數往上移  
  4.                                //這里實際上最終結果就是-1和-2對調,但從邏輯上并不是對調  
  5. lua_settable( L, LUA_GLOBALSINDEX );         // 這里為什么不用lua_rawset?我認為是有原因的^@^ 

將上面的代碼與代碼A結合起來看,在lua_settable時index值不同,而它做的工作是如果發現index是LUA_GLOBALSINDEX 那么就取出全局表(還有一個LUA_REGISTERINDEX,類似),否則從stack上取元素,當然,這個棧位置取出的不是一個table就會失敗。所以代碼A中指定的是-3是剛從全局表中取出的myTable表(這里假設他是一個table),上面的代碼片段則是取出的全局表。所以lua_settable的index是什么值都可以,只要它指向的是一個table

實際上lua中與c的接口也就主要在棧的操作上,基本上你在寫一個lua與C結合的程序時你最最需要做的工作就是明白你當前棧上有什么元素以及它們的位置。我一般會在紙上畫出他們的位置,如果你熟了,對于幾句在一起有關聯的lua調用則可以很快的看出棧的變化。比如

  1. lua_gettable/lua_rawget   
  2.  
  3. lua_pushstring( L, "hp" );  
  4. lua_gettable( L, LUA_GLOBALSINDEX ); 

只看第一句,棧頂是一個字符串,但兩句放在一起,最終棧頂是一個全局表上一個名為hp的實際值

  1. lua_pushstring( L, "hp" );  
  2. lua_pushnumber( L, 211 );  
  3. lua_settable( L, LUA_GLOBALSINDEX ); 

無論第二句pushnumber還是pushvalue,pushstring什么的,最終這三句執行之后對于棧來說是沒有任何變化的,因為lua_settable/lua_rawset會移走-1和-2

總之,對于棧的變化,在看一個函數的文檔時先看它參數又需要棧上那些位置的元素并正確設置棧上的值,看清楚他會取棧上那些位置的元素作為這個lua api調用的使用并為之把正確的值放到棧上,最后注意函數完成之后會清除/移走那些位置的元素,我想應該就沒什么問題了

  1. lua_gettable  
  2. lua_getglobal(L, "mytable") <== push mytable  
  3. lua_pushnumber(L, 1)        <== push key 1  
  4. lua_gettable(L, -2)         <== pop key 1, push mytable[1]  
  5.  
  6. lua_settable  
  7. lua_getglobal(L, "mytable") <== push mytable  
  8. lua_pushnumber(L, 1)        <== push key 1  
  9. lua_pushstring(L, "abc")    <== push value "abc"  
  10. lua_settable(L, -3)         <== mytable[1] = "abc", pop key & value 

lua_rawget:

用法同lua_gettable,但更快(因為當key不存在時不用訪問元方法__index)

lua_rawset:

用法同lua_settable,但更快(因為當key不存在時不用訪問元方法__newindex)

lua_rawgeti必須為數值鍵

  1. lua_getglobal(L, "mytable") <== push mytable  
  2. lua_rawgeti(L, -1, 1)       <== push mytable[1],作用同下面兩行調用  
  3. --lua_pushnumber(L, 1)      <== push key 1  
  4. --lua_rawget(L,-2)          <== pop key 1, push mytable[1] 

lua_rawseti必須為數值鍵

  1. lua_getglobal(L, "mytable") <== push mytable  
  2. lua_pushstring(L, "abc")    <== push value "abc"  
  3. lua_rawseti(L, -2, 1)       <== mytable[1] = "abc", pop value "abc" 

lua_getfield必須為字符串

  1. lua_getglobal(L, "mytable") <== push mytable  
  2. lua_getfield(L, -1, "x")    <== push mytable["x"],作用同下面兩行調用  
  3. --lua_pushstring(L, "x")    <== push key "x"  
  4. --lua_gettable(L,-2)        <== pop key "x", push mytable["x"] 

lua_setfield必須為字符串

 

  1. lua_getglobal(L, "mytable") <== push mytable  
  2. lua_pushstring(L, "abc")    <== push value "abc"  
  3. lua_setfield(L, -2, "x")    <== mytable["x"] = "abc", pop value "abc" 

詳解:詳解關于Lua棧介紹以及實例的內容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-08-24 14:33:14

LUA開發環境Decoda

2011-08-25 14:03:32

UbuntuLUA安裝

2011-08-25 17:25:55

LUADelphi

2011-08-25 15:51:10

Lua腳本

2011-06-30 18:15:36

Qt 線程 同步

2011-08-25 15:41:42

Lua源碼

2011-08-23 14:18:13

LUA 5.1編譯vs2005

2011-08-10 18:37:32

CocoaMac OS X

2009-08-28 13:12:56

C#反射實例C#反射

2011-08-31 16:39:06

Lua調試器

2013-01-15 15:18:46

Linux守護進程

2011-08-23 17:06:03

2011-08-25 10:07:24

Lua 5.0函數編譯器

2011-08-22 17:13:00

LuaC++函數

2011-08-23 17:46:09

LUA正則表達式模式

2011-08-25 16:20:33

Lua腳本變量

2011-08-24 15:28:02

Lua編譯器解釋器

2011-08-30 13:26:18

Mysql ProxyLua

2010-06-11 11:24:24

Mrtg教程

2011-08-23 17:42:42

Lua腳本
點贊
收藏

51CTO技術棧公眾號

亚洲春色综合另类校园电影| 中文字幕中文字幕中文字幕亚洲无线 | 亚洲精品一区二区三区在线观看| 久久国产午夜精品理论片最新版本| 人妻妺妺窝人体色www聚色窝| 99国产精品视频免费观看一公开 | 在线免费看视频| 91精品短视频| 在线免费观看不卡av| 国产大尺度在线观看| 亚洲aⅴ在线观看| 久久99国内精品| 91精品国产色综合久久不卡98| 欧美极品jizzhd欧美18| gogo久久日韩裸体艺术| 在线视频欧美精品| 欧美人与动牲交xxxxbbbb| 暖暖视频在线免费观看| 国产一区视频在线看| 9.1国产丝袜在线观看| 精品国产视频在线观看| 国产精品探花在线观看| 日韩精品一区二区三区老鸭窝 | 黑人巨大精品欧美一区| 51ⅴ精品国产91久久久久久| 国产第一页浮力| 免费电影一区二区三区| 欧美videos中文字幕| 国产wwwxx| 国产一二在线播放| 亚洲精品v日韩精品| 亚洲高清视频一区二区| 午夜性色福利视频| 国产精品一区二区91| 国产精品久久久久久久久久久久久久| 国产精品第9页| 中国成人一区| 日韩在线视频国产| 亚洲自拍偷拍图| 丝袜久久网站| 亚洲国产欧美一区| 免费啪视频在线观看| 久久er热在这里只有精品66| 色哟哟国产精品| 国产伦精品一区二区三区四区视频_ | 91偷拍与自偷拍精品| 亚洲999一在线观看www| 亚洲最大成人av| 日本vs亚洲vs韩国一区三区二区| 日av在线播放中文不卡| 三级黄色在线视频| 最新成人av网站| 久久久久久国产精品三级玉女聊斋| 少妇愉情理伦三级| 欧美丝袜丝交足nylons172| 精品一区二区亚洲| xxxxx在线观看| 国产精品一线天粉嫩av| 亚洲欧美在线一区二区| 日韩人妻无码一区二区三区| 日韩av黄色在线| 亚洲第一免费播放区| 亚洲久久久久久| 欧美天堂影院| 亚洲天堂男人的天堂| av网在线播放| 久久久影院免费| 伦理中文字幕亚洲| 久草视频在线资源| 亚洲大胆av| 欧美在线免费看| 波多野结衣毛片| 九色porny丨国产精品| 91老司机在线| 男人天堂手机在线观看| 26uuu另类欧美| 亚洲日本精品| av观看在线| 精品久久久久久久久久国产| 成人在线看视频| 亚洲国产伊人| 亚洲精品一区二区三区影院 | 日本不卡免费一区| 久热精品视频在线观看| 黄色激情视频在线观看| 丝袜美腿高跟呻吟高潮一区| 成人激情免费在线| 国产成人自拍一区| 久久久精品中文字幕麻豆发布| 一区二区日本| 极品在线视频| 欧美日韩情趣电影| av免费观看不卡| 国产精品一区二区99| 久久艳片www.17c.com| 日本少妇性生活| 久久精品av麻豆的观看方式| 国产精品国产精品| 高清av在线| 亚洲福中文字幕伊人影院| 国产精彩免费视频| eeuss国产一区二区三区四区| 亚洲性猛交xxxxwww| 久久久全国免费视频| 日韩电影免费在线| 北条麻妃高清一区| 99精品老司机免费视频| 亚洲国产va精品久久久不卡综合| 国产精品乱码久久久久| www.丝袜精品| 久久久精品中文字幕| 啦啦啦免费高清视频在线观看| 国内精品写真在线观看| 日本在线播放一区| www.8ⅹ8ⅹ羞羞漫画在线看| 欧美日韩精品一区二区在线播放| 性欧美丰满熟妇xxxx性久久久| 视频在线不卡免费观看| 清纯唯美亚洲激情| 亚洲精品喷潮一区二区三区| 国产精品久久国产精麻豆99网站| 国产免费黄色av| 99精品中文字幕在线不卡| 中文字幕日韩av综合精品| 可以免费看的av毛片| 国产精品白丝jk白祙喷水网站| 亚洲日本理论电影| 综合在线影院| 日韩精品亚洲视频| 国产无遮挡又黄又爽| 国产伦精品一区二区三区视频青涩 | 亚洲 精品 综合 精品 自拍| 亚洲午夜久久久| 伊人成人免费视频| 国产精品久久久久久久久妇女| 国产精品白嫩初高中害羞小美女| 日韩电影在线观看完整版| 亚洲自拍偷拍麻豆| 亚洲精品无码久久久久久久| 93在线视频精品免费观看| 国产精品入口免费视频一| 日韩av成人| 精品久久久久人成| 国产老熟女伦老熟妇露脸| 禁久久精品乱码| www日韩av| 久久大胆人体| 精品福利在线导航| 国产中文字字幕乱码无限| 国产91精品在线观看| 好吊色视频988gao在线观看| 日韩成人18| 精品自拍视频在线观看| www.精品久久| 亚洲午夜激情网页| 免费不卡的av| 久久国产精品久久久久久电车| 麻豆av一区二区三区| 成人影院网站| 一本色道久久88综合日韩精品| 秋霞av一区二区三区| 欧美激情中文字幕一区二区| 日日干夜夜操s8| 亚洲乱码在线| 高清国语自产拍免费一区二区三区| 污污的网站在线免费观看| 日韩一区二区三区高清免费看看| 九九视频在线观看| gogo大胆日本视频一区| av动漫免费看| 久久综合88| 成人精品水蜜桃| 国产精品13p| 亚洲一二在线观看| 国产精品久久久久久久免费| 亚洲一区二区三区四区中文字幕| 捆绑凌虐一区二区三区| 丝袜亚洲另类欧美| 男女h黄动漫啪啪无遮挡软件| 4438全国亚洲精品观看视频| 韩剧1988免费观看全集| 国产午夜在线观看| 欧美一区二区三区的| 日产亚洲一区二区三区| 中文字幕乱码一区二区免费| 91视频免费入口| 免费精品视频| 在线观看一区二区三区三州| 盗摄牛牛av影视一区二区| 日韩免费在线看| h视频在线免费观看| 日韩av在线不卡| 一区二区不卡视频在线观看| 午夜视频久久久久久| 国产91在线播放九色| www.在线成人| av噜噜在线观看| 久久成人精品| 国产成人艳妇aa视频在线| 欧美日韩激情| 国产富婆一区二区三区 | 亚洲最大成人在线| 欧美成人资源| 久久久久久久久久婷婷| av大片在线播放| 亚洲国产欧美在线成人app| 中文字幕黄色av| 天天影视网天天综合色在线播放| 天堂网中文在线观看| www.成人网.com| 国产又粗又长又爽又黄的视频| 亚洲女人av| 欧美一区二区视频在线播放| 色一区二区三区四区| 蜜桃91精品入口| 日韩欧美中文字幕在线视频| 国产精品国产亚洲伊人久久| 嗯~啊~轻一点视频日本在线观看| 久久精品中文字幕电影| 国产精品一级伦理| 日韩av一区在线观看| 国产av无码专区亚洲av麻豆| 精品视频一区二区不卡| 一级做a爰片久久毛片| 亚洲成人精品影院| 久久久精品一区二区涩爱| 亚洲欧美自拍偷拍色图| 国产jk精品白丝av在线观看 | 亚洲一区电影在线观看| 久久久久久久网| 亚洲精品成人无码熟妇在线| 成人激情小说网站| 色哟哟网站在线观看| 精品一区精品二区高清| 九九九在线观看视频| 三级在线观看一区二区| 男人天堂999| 欧美专区一区二区三区| 分分操这里只有精品| 欧美日韩精品一本二本三本| 欧美性受xxxx黑人猛交88| 91影院成人| 亚洲人久久久| 天天做天天爱天天爽综合网| 在线视频一区观看| 精品亚洲免费视频| 成年在线观看视频| 一区二区三区四区在线观看国产日韩 | 在线观看黄网站| 亚洲va韩国va欧美va精品| 黄色一级视频免费| 一区av在线播放| 久久无码精品丰满人妻| 一区二区三区高清在线| 久久久久久久蜜桃| 亚洲第一综合色| 日本午夜视频在线观看| 日韩欧美国产视频| 无码任你躁久久久久久久| 色婷婷av一区二区三区之一色屋| 日韩精品一区不卡| 欧美日韩国产在线观看| 国产视频第二页| 精品国产亚洲在线| 午夜在线视频观看| 国产一区二区久久精品| 黄色网址在线免费| 久久久久久亚洲精品中文字幕 | 国产精品久久久久91| 日本亚洲欧洲无免费码在线| 亚洲va久久久噜噜噜久久天堂| 一区二区三区国产好| 久久99精品久久久久久秒播放器| 久久99视频| 亚洲第一精品区| 黄色日韩精品| 国产精品亚洲αv天堂无码| 日韩精品一区第一页| 国产精品igao网网址不卡| 成人一区在线看| 男人操女人动态图| 亚洲三级在线免费观看| 日韩毛片在线视频| 精品视频一区三区九区| 性生交大片免费看女人按摩| 亚洲另类图片色| 高清全集视频免费在线| 91超碰中文字幕久久精品| 日韩三区四区| 精品国产一区二区三区麻豆免费观看完整版 | 国语一区二区三区| 少妇精品久久久久久久久久| 午夜激情一区| 成年人免费大片| 国产成人av一区二区三区在线观看| 成人h动漫精品一区| 亚洲三级久久久| 国产又大又黄又粗| 91精品国产91久久久久久一区二区| 五月天婷婷激情网| 精品久久久999| 欧美二三四区| 成人免费视频网站入口| 成人一二三区| 99精品人妻少妇一区二区| 国产一区二区女| 少妇人妻好深好紧精品无码| 亚洲专区一二三| 91影院在线播放| 亚洲人成在线播放| xxxx视频在线| 91亚洲永久免费精品| 少妇精品久久久一区二区| 无码熟妇人妻av在线电影| 久久丁香综合五月国产三级网站| 免费成人蒂法网站| 亚洲精品v日韩精品| 一级黄色片在线看| 亚洲天堂第二页| 午夜av不卡| 国产精品三区在线| 欧美日韩国产成人精品| 99精品视频国产| 中文字幕精品一区二区精品绿巨人| 天海翼一区二区| 欧美精品一区二区三区高清aⅴ| 国产在线看片| 国产在线a不卡| 欧美亚洲国产激情| 欧美xxx久久| 日韩av在线播| 日韩视频123| av观看在线| 亚洲自拍欧美色图| 91精品国产自产在线观看永久∴ | 国产精品h视频| 奇米四色…亚洲| 91资源在线播放| 欧美亚洲一区三区| 成人在线观看免费| 欧洲成人免费视频| 亚洲另类av| 国产欧美高清在线| 久久久一区二区| 国产婷婷色一区二区在线观看| 国产视频一区在线| 自拍偷拍欧美视频| 欧美18视频| 日本麻豆一区二区三区视频| 老熟妇一区二区| 欧美午夜一区二区三区免费大片| 成在在线免费视频| 国产日韩在线亚洲字幕中文| 999国产精品视频| 自拍一级黄色片| 亚洲国产成人tv| 丝袜+亚洲+另类+欧美+变态| 日本91av在线播放| 日韩中文在线电影| www.亚洲自拍| 亚洲一区二区高清| 人妻夜夜爽天天爽| 日本欧美一二三区| 亚洲成熟少妇视频在线观看| 91精品国产综合久久精品 | 最新中文字幕一区二区三区| 国产精品久久无码一三区| 粗暴蹂躏中文一区二区三区| 试看120秒一区二区三区| 男人插女人视频在线观看| 久久久精品中文字幕麻豆发布| 一本一道精品欧美中文字幕| 欧美精品一二区| 欧美黄色网视频| 一区二区三区韩国| 亚洲精品精品亚洲| 天堂av在线播放| 国产精品自产拍高潮在线观看| 欧美成人午夜| 熟女高潮一区二区三区| 3d动漫精品啪啪| 高清精品在线| 一区二区三区四区| av一区二区久久| 最新国产中文字幕| 欧美激情视频在线免费观看 欧美视频免费一| 精品日产乱码久久久久久仙踪林| 福利在线一区二区三区| 亚洲男人的天堂网| 日本天堂影院在线视频| 91热福利电影| 另类亚洲自拍| 麻豆视频在线观看| 在线激情影院一区| 亚洲日本一区二区三区在线| 国产精品69页| 日韩理论片网站| 久久综合九色综合久| 成人黄色在线免费观看| 蜜臀av在线播放一区二区三区|