精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

五月天综合激情网| 欧美成人a∨高清免费观看| 亚洲欧美综合v| 一区二区免费电影| 日韩熟女一区二区| 国产在线视频欧美一区| 丝袜美腿亚洲综合| 欧美精品一区视频| 白白操在线视频| 亚洲综合免费视频| 国产欧美日韩| 色偷偷88欧美精品久久久| julia一区二区中文久久94| 小向美奈子av| 91福利精品在线观看| 久久久久久久久99精品| 51色欧美片视频在线观看| 色哟哟无码精品一区二区三区| av网址在线播放| 欧美黄色大片在线观看| 欧美色视频日本高清在线观看| 国产成人精品福利一区二区三区 | 成人日韩在线| 久久久久一区二区三区四区| 亚洲一区免费网站| 1024手机在线视频| 日韩精品成人| 一区二区三区中文字幕精品精品| 国产精品视频久久| 一级性生活免费视频| 日韩精品欧美大片| 91国产丝袜在线播放| 欧美一区二区综合| 成年人免费高清视频| 一区二区在线| 亚洲精品一区二区三区四区高清 | 欧美黄色三级| 欧美日韩亚洲91| 蜜桃视频日韩| 黄色av网站免费观看| 国内久久精品| 精品黑人一区二区三区久久 | av成人免费看| 日韩欧美亚洲国产一区| 人体内射精一区二区三区 | 一区二区三区日韩在线| 国产又粗又长又大的视频| 波多野结衣在线网站| 日韩成人av影视| 久热99视频在线观看| 欧美69精品久久久久久不卡| 999福利在线视频| 26uuu国产电影一区二区| 国产精品久久久久秋霞鲁丝 | 欧美日韩1234| 无码日本精品xxxxxxxxx| 开心激情综合网| 天堂一区二区在线免费观看| 91国产精品视频在线| 国产欧美小视频| 日韩激情综合| 精品日韩欧美在线| 精品1卡二卡三卡四卡老狼| 亚洲精品在线播放| 欧美性大战久久久久久久蜜臀| 中文字幕日韩精品一区二区| 人妻偷人精品一区二区三区| 美腿丝袜亚洲三区| 2025国产精品视频| 日本特级黄色片| 欧美成人久久| 影音先锋日韩有码| 激情高潮到大叫狂喷水| 日韩欧美黄色| 国产一区二区精品丝袜| 无码精品一区二区三区在线播放| 欧美黄色a视频| 天天综合天天综合色| 免费看av软件| 国产在线视频你懂得| 成人丝袜高跟foot| 91久久在线视频| 中文字幕免费高清网站| 亚洲美女一区| 欧美国产亚洲视频| 一级片黄色录像| 欧美精品播放| 久久国产精品首页| 99久久99久久精品免费| 天天综合国产| 最近免费中文字幕视频2019| 欧美日韩人妻精品一区在线| 妖精视频一区二区三区免费观看| 日韩久久久精品| 亚洲图色中文字幕| 蜜桃视频成人m3u8| 日韩一区二区在线看| 91亚洲免费视频| 成人黄色免费短视频| 精品久久久久久电影| 三级在线免费看| 大型av综合网站| 欧美成人精品福利| 精品国产av无码| 日本福利一区| 亚洲精品色婷婷福利天堂| 久久久高清视频| 欧美特黄一级大片| 正在播放亚洲1区| 国产熟女一区二区| 日韩精品一卡| 日韩性xxxx爱| 97在线观看免费高| 一区二区蜜桃| 国产成人精品视| 久久国产乱子伦精品| 国产精品亚洲第一区在线暖暖韩国| 91精品视频免费观看| 神马久久高清| 91啪亚洲精品| 国产精品videossex国产高清| 日韩成人亚洲| 日韩成人中文字幕| av男人的天堂av| 日本午夜一区| 51ⅴ精品国产91久久久久久| 亚洲免费成人在线| 亚洲欧美国产高清| 黄色一级片黄色| 亚洲欧美综合久久久久久v动漫| 欧美男女性生活在线直播观看| 亚洲va在线va天堂va偷拍| 99综合99| 色偷偷88888欧美精品久久久| 国产精品21p| 337p粉嫩大胆噜噜噜噜噜91av| 精品一区二区三区无码视频| 精品国产三级| 日韩电影免费观看中文字幕| 国产午夜精品理论片| 蜜桃一区二区三区在线观看| 欧美精品国产精品久久久| √天堂资源地址在线官网| 中文字幕一区二区三中文字幕| www亚洲国产| 国产精品久久乐| 中文字幕视频在线免费欧美日韩综合在线看| 久久久久99精品成人片我成大片| 99re成人精品视频| 一区二区av| 欧美啪啪网站| 日韩一区视频在线| 国产免费黄色网址| 91麻豆精品一区二区三区| 男女超爽视频免费播放| 国产综合色激情| 搡老女人一区二区三区视频tv| 最近中文字幕在线观看| 国产福利一区二区三区视频| 快播亚洲色图| 韩国精品主播一区二区在线观看| 国产亚洲精品久久久久动| 中国女人一级一次看片| 成人精品免费视频| 一区二区在线观看网站| 天天综合在线观看| 亚洲精品视频在线观看视频| 麻豆精品久久久久久久99蜜桃| 国产一区二区精品在线观看| 欧美精品123| 91超碰碰碰碰久久久久久综合| 日韩在线视频观看| 成 人 免费 黄 色| 国产精品天干天干在线综合| 91精品国产91久久久久麻豆 主演| 韩国精品福利一区二区三区| 欧美性受xxxx白人性爽| 国产爆初菊在线观看免费视频网站| 亚洲午夜精品网| 国内国产精品天干天干| 亚洲精品一区二区妖精| 国产成人97精品免费看片| av午夜在线| 日韩精品一区二区在线| 国产精品一区二区6| 国产成人午夜片在线观看高清观看| 青草全福视在线| **日韩最新| 久久久久久久久国产| 国产v片在线观看| 欧美极品少妇xxxxⅹ高跟鞋| 国产欧美在线一区| 亚洲成在人线免费观看| 国产欧美亚洲精品| 婷婷五月在线视频| 欧美日韩国产综合一区二区| 欧美成人精品欧美一级| 久久婷婷成人综合色| 久久成人免费观看| 福利片在线一区二区| 国产精品69久久| 国产美女福利在线观看| 精品国产区一区| 最近中文字幕免费观看| 午夜精品免费在线观看| 天堂www中文在线资源| 欧美日韩1区| 日本一区二区三区视频免费看| 欧美电影在线观看一区| 国产成人久久久精品一区| 伊人福利在线| 日韩中文视频免费在线观看| 日色在线视频| 91精品福利在线| 久久综合色综合| 成人av网站免费| 五月天婷婷影视| 日韩电影在线一区二区三区| 高清欧美精品xxxxx| 欧美 亚欧 日韩视频在线 | 日本久久电影网| 日韩av免费网址| 91免费国产在线| 欧洲成人午夜精品无码区久久| 欧美激情视频一区二区三区在线播放| 欧美日韩日本网| 精品亚洲自拍| 国产精品第8页| 91社区在线高清| 亚洲女人被黑人巨大进入al| 中文字幕观看视频| 欧美性少妇18aaaa视频| 日韩手机在线观看| 亚洲二区视频在线| 波多野吉衣中文字幕| 丁香一区二区三区| 激情综合激情五月| 久久久久网站| mm131午夜| 日韩高清影视在线观看| 国产在线欧美日韩| 亚洲成人av观看| 色综合久久精品亚洲国产| 亚洲av成人精品日韩在线播放| 欧美综合一区二区三区| 婷婷久久综合网| 不卡高清视频专区| 无码任你躁久久久久久老妇| 成人黄页毛片网站| 亚洲图片综合网| av日韩在线网站| 亚洲美女性囗交| 精品一区二区三区久久久| 国产精品入口芒果| 在线精品一区| 中文字幕久精品免| 亚洲成人二区| 人妻激情另类乱人伦人妻| 欧美顶级大胆免费视频| 在线视频一区观看| 欧美欧美全黄| 免费看黄在线看| 免费看的黄色欧美网站| 69精品丰满人妻无码视频a片| 你懂的网址国产 欧美| 欧美国产综合在线| 亚洲欧美日韩国产一区二区| 成人免费视频久久| 亚洲高清免费| 熟女性饥渴一区二区三区| 欧美69视频| 黄色成人在线看| 日韩不卡一区二区三区| 免费精品99久久国产综合精品应用| 国产精品亚洲а∨天堂免在线| 亚洲熟女乱综合一区二区三区| 国产网红主播福利一区二区| 少妇被狂c下部羞羞漫画| 91在线云播放| 天堂网中文在线观看| 一级日本不卡的影视| 五月婷婷综合激情网| 一区二区三区丝袜| 亚洲 欧美 中文字幕| 欧美日韩不卡在线| 天天操天天干天天插| 精品欧美乱码久久久久久| 天堂在线中文| 久久视频在线看| 欧洲一区二区三区精品| 91亚洲永久免费精品| 日本妇女一区| 日本在线视频www色| 久久久久免费| 欧美做受高潮中文字幕| 国产欧美日韩久久| 国产第100页| 亚洲图片欧美一区| 国产乡下妇女三片| 欧美精品一区二| 午夜在线观看视频| 欧美影院在线播放| 伊人久久大香线蕉av超碰| 日本一区二区三区视频在线播放| 亚洲婷婷免费| 中文字幕第17页| 91视频91自| 久久综合加勒比| 欧美一级日韩免费不卡| 国产精品探花视频| 欧美一二三区在线观看| 日韩国产福利| 久久久久久久一区二区| 国产精品传媒麻豆hd| 久久久一本精品99久久精品66| 欧美aaaaaaaa牛牛影院| 美女黄色片网站| 蜜臀av在线播放一区二区三区| 免费a在线观看播放| 久久久久综合网| 日韩人妻无码一区二区三区99| 7777精品伊人久久久大香线蕉超级流畅| 97人妻一区二区精品免费视频| 亚洲精选一区二区| а√天堂8资源在线| 国产成人福利视频| 农村少妇一区二区三区四区五区| 亚洲色图都市激情| 国产美女精品人人做人人爽| youjizz亚洲女人| 亚洲理论在线观看| 中文字幕第2页| 中文字幕不卡在线视频极品| 午夜激情成人网| 丁香激情五月少妇| 91在线高清观看| 精品人妻互换一区二区三区| 国产精品午夜在线| 国产女主播喷水视频在线观看 | 蜜桃av噜噜一区二区三区| 欧美91精品| 亚洲天堂av一区二区三区| 国产精品一区二区av交换| 日韩伦理在线免费观看| 国产.精品.日韩.另类.中文.在线.播放| 中文字幕一区二区三区四| 国产精品久久久久久亚洲伦| 国产在线一卡二卡| 51精品秘密在线观看| 欧美jizz18hd性欧美| 欧美人在线视频| 久久伊人精品| 激情视频小说图片| 国产成人免费网站| 国产在线观看成人| 亚洲第一天堂av| 在线观看免费网站黄| 国产精品久久一区主播| 色呦哟—国产精品| www.午夜av| 亚洲综合久久久| 内射后入在线观看一区| 91黑丝高跟在线| 狠狠做六月爱婷婷综合aⅴ| 一区二区xxx| 99热99精品| 天天操天天干天天摸| 日韩一区二区精品视频| 日韩欧美一级| 无码人妻丰满熟妇区96| 国产欧美一区二区三区网站| 亚洲视频久久久| 欧美激情第6页| 曰本一区二区三区视频| a在线观看免费视频| 一区二区三区在线视频观看| 天堂在线观看免费视频| 国产福利精品在线| 亚洲91中文字幕无线码三区| 亚洲一区二区在线免费| 在线免费观看成人短视频| huan性巨大欧美| 国产精品高清在线| 亚洲国产不卡| 国产麻豆xxxvideo实拍| 欧洲人成人精品| 男女视频在线| 91系列在线播放| 亚洲欧洲一区| 国产香蕉精品视频| 色猫猫国产区一区二在线视频| 在线观看免费版| 国产伦精品一区二区三区四区视频 | 精品动漫一区| 久久中文字幕精品| 亚洲第一精品久久忘忧草社区| www.26天天久久天堂| 婷婷五月综合缴情在线视频| 国产精品理伦片| 日韩a在线观看|