LUA API 參考

lapi.c和lauxlib.c里包含了大部分的lua的capi渊季。所謂capi是指在c形式的api接口朋蔫,可以在c/c++/c#/…中可以調(diào)用到的api,但是lua中并不一定有對(duì)應(yīng)的方法梭域。ldebug.c里有一些調(diào)試用的capi(后續(xù)文章會(huì)介紹)。另外一些capi搅轿,便是打開lua庫函數(shù)的capi病涨,在lualib.h里集中聲明。

lapi.c
基礎(chǔ)的capi璧坟。

state相關(guān)
lua_checkstatck
檢查棧的深度既穆,如果沒有超過最大深度便會(huì)擴(kuò)充棧,否則返回0(交給上層處理)雀鹃。

lua_xmove
將n個(gè)對(duì)象從一個(gè)狀態(tài)(協(xié)程)移動(dòng)到另一個(gè)狀態(tài)(協(xié)程)上幻工。

lua_setlevel
設(shè)置狀態(tài)(協(xié)程)的調(diào)用層次,用于resume黎茎。

lua_atpanic
設(shè)置狀態(tài)(協(xié)程)的內(nèi)部錯(cuò)誤處理方法囊颅。

lua_newthread
新建一個(gè)狀態(tài)(協(xié)程)。

stack相關(guān)
lua_gettop
獲取棧頂踢代,一般用于檢查參數(shù)個(gè)數(shù)盲憎。

lua_settop
設(shè)置棧頂,一般用于設(shè)置返回值個(gè)數(shù)胳挎。之前的文章在編寫庫函數(shù)的時(shí)候饼疙,會(huì)返回一個(gè)返回值數(shù)量,這個(gè)數(shù)量要與當(dāng)前函數(shù)棧的深度一致慕爬,否則會(huì)出問題窑眯。

lua_remove
在函數(shù)棧的某個(gè)位置上移除對(duì)象。

lua_insert
在函數(shù)棧的某個(gè)位置上插入對(duì)象医窿。

lua_replace
在函數(shù)棧的某個(gè)位置上替換成當(dāng)前棧頂?shù)膶?duì)象磅甩。

lua_pushvalue
最常用的,在棧頂上壓入對(duì)象留搔,與之對(duì)應(yīng)的是lua_pop更胖,實(shí)際上就是lua_settop(宏定義)。

type相關(guān)
lua_type
類型:0-nil隔显,1-bool却妨,2-lightuserdata,3-number括眠,4-string彪标,5-table,6-function掷豺,7-userdata捞烟,8-thread。-1代表啥也沒有(不是nil)当船。

lua_typename
類型名题画,lua里的type方法實(shí)際上調(diào)用了上面二者。

lua_iscfunction
是否是c方法德频。

lua_isnumber
是否是number苍息,或者可以轉(zhuǎn)換成number。

lua_isstring
是否是string或者number壹置。

lua_isuserdata
是否是userdata或lightuserdata竞思。

lua_rawequal
繞過元方法判斷是否相等。

lua_equal
(如果有钞护,便使用元方法)判斷是否相等盖喷。

lua_lessthan
(如果有,便使用元方法)判斷是否小于难咕。

lua_tonumber
轉(zhuǎn)換成number(失敗返回0)课梳。

lua_tointeger
轉(zhuǎn)換成number并向下取整(失敗返回0)距辆,64位下返回值類型為int64,只有52-53位精度(有機(jī)會(huì)再細(xì)說)惦界。32位下返回值為int挑格,沒有損失精度。

lua_toboolean
如果是false或nil或0返回false沾歪,否則返回true漂彤。

lua_tolstring
轉(zhuǎn)換成字符串并獲取長度。

lua_objlen
獲取對(duì)象的長度灾搏,暫時(shí)可以認(rèn)為與#操作符類似挫望。

lua_tocfunction
轉(zhuǎn)換成c方法,失敗返nil狂窑。

lua_touserdata
轉(zhuǎn)換成userdata或lightuserdata媳板,失敗返nil。

lua_tothread
轉(zhuǎn)換成狀態(tài)(協(xié)程)泉哈,失敗返nil蛉幸。

lua_topointer
轉(zhuǎn)換成指針。

push相關(guān)
lua_pushnil
壓入nil丛晦。

lua_pushnumber
壓入number奕纫。

lua_pushinteger
壓入向下取整的number。

lua_pushlstring
壓入string烫沙,附帶長度信息匹层。

lua_pushstring
壓入string,長度信息自己算锌蓄。

lua_pushvfstring
壓入格式化變參的string升筏。

lua_pushfstring
壓入格式化變參的string,與上面的并沒什么區(qū)別瘸爽,只不過上面的是為了兼用上層調(diào)用的變參(詳情請(qǐng)搜索va_list)您访。

lua_pushcclosure
壓入c方法,并根據(jù)棧上的參數(shù)創(chuàng)建閉包剪决。

lua_pushboolean
壓入bool灵汪。

lua_pushlightuserdata
壓入lightuserdata。

lua_pushthread
壓入狀態(tài)(協(xié)程)昼捍。

獲取Lua->stack
lua_gettable
獲取棧上的table的某個(gè)字段识虚,鍵為棧頂對(duì)象肢扯。

lua_getfield
獲取棧上的table的某個(gè)字段妒茬。

lua_rawget
繞過元表獲取table的元素,鍵為棧頂?shù)膶?duì)象蔚晨。

lua_rawgeti
繞過元表獲取數(shù)組類型table的元素乍钻。

lua_createtable
新建一個(gè)table

lua_getmetatable
獲取元表肛循,如果不是table或userdata,那么獲取該類型的元表银择。

lua_getfenv
獲取環(huán)境變量table多糠。

設(shè)置stack->Lua
lua_settable
設(shè)置棧上的table的某個(gè)字段,鍵和值為棧頂前兩個(gè)對(duì)象浩考。

lua_setfield
設(shè)置棧上的table的某個(gè)字段夹孔,值為棧頂對(duì)象。

lua_rawset
繞過元表設(shè)置table的元素析孽,鍵和值為棧頂前兩個(gè)對(duì)象搭伤。

lua_rawseti
繞過元表設(shè)置table的元素,值為棧頂對(duì)象袜瞬。

lua_setmetatable
設(shè)置元表怜俐,如果不是table或userdata,那么為該類型的設(shè)置元表邓尤。

lua_setfenv
設(shè)置環(huán)境變量table拍鲤。

load & call
lua_call
調(diào)用方法。

lua_pcall
類似lua的方法xpcall汞扎,保護(hù)調(diào)用季稳。

lua_cpcall
保護(hù)調(diào)用c方法,可傳入一個(gè)指針作為參數(shù)佩捞。

lua_load
加載lua代碼绞幌。

lua_dump
加載lua字節(jié)碼。

lua_status
返回狀態(tài)(協(xié)程)的狀態(tài)一忱。

其他
lua_gc
垃圾回收莲蜘。

lua_error
報(bào)錯(cuò)

lua_next
獲取table的下一對(duì)鍵值。從nil開始帘营。

lua_concat
拼接字符串票渠。

lua_getallocf
獲取內(nèi)存分配函數(shù)。

lua_setallocf
設(shè)置內(nèi)存分配函數(shù)芬迄。

lua_newuserdata
新建userdata问顷。

lua_getupvalue
獲取upvalue。

lua_setupvalue
設(shè)置upvalue禀梳。

lauxlib.c
擴(kuò)展的capi

error相關(guān)
luaL_argerror
參數(shù)錯(cuò)誤杜窄,將一些字符串的拼接起來組成錯(cuò)誤信息,最后調(diào)用luaL_error算途。

luaL_typerror
類型錯(cuò)誤塞耕,同上。

luaL_where
獲取并拼接方法的信息嘴瓤。

luaL_error
缺省錯(cuò)誤扫外,提供格式化變參莉钙。

type相關(guān)
luaL_checkoption
檢查參數(shù)列表,如失敗便報(bào)錯(cuò)筛谚。

luaL_newmetatable
為全局對(duì)象新建元表磁玉。

luaL_checkudata
檢查全局對(duì)象是否與傳入的userdata相同,如失敗便報(bào)錯(cuò)驾讲。

luaL_checkstack
檢查椢蒙。空間,如失敗便報(bào)錯(cuò)吮铭。

luaL_checktype
檢查類型厚柳,如失敗便報(bào)錯(cuò)。

luaL_checkany
檢查是否有參數(shù)沐兵,如失敗便報(bào)錯(cuò)别垮。

luaL_checklstring
檢查string,如失敗便報(bào)錯(cuò)扎谎。

luaL_optlstring
檢查string碳想,如失敗使用缺省值。

luaL_checknumber
檢查number毁靶,如失敗便報(bào)錯(cuò)胧奔。

luaL_optnumber
檢查number,如失敗使用缺省值预吆。

luaL_checkinteger
檢查“integer”龙填,如失敗便報(bào)錯(cuò)。

luaL_optinteger
檢查“integer”,如失敗使用缺省值。

meta相關(guān)
luaL_getmetafield
獲取元表字段跌捆。

luaL_callmeta
調(diào)用元方法取逾。

lib相關(guān)
luaL_register
注冊庫函數(shù)克胳。

luaL_gsub
替換字符串。

luaL_findtable
根據(jù)路徑查詢table,路徑形式可能為aa.bb.cc,一次查找aa梆靖、bb、cc笔诵,如果沒有則新建返吻。

buffer相關(guān)
luaL_prepbuffer
準(zhǔn)備緩沖區(qū)。

luaL_addlstring
將string加入緩沖區(qū)乎婿,附帶長度信息测僵。

luaL_addstring
將string加入緩沖區(qū),長度自己算次酌。

luaL_pushresult
將buffer里的字符串拼接起來恨课,壓入棧中。

luaL_addvalue
將棧頂對(duì)象加入緩沖區(qū)岳服。

luaL_buffinit
初始化緩沖區(qū)剂公。

ref相關(guān)
luaL_ref
添加對(duì)某個(gè)對(duì)象的引用,方便獲取某個(gè)對(duì)象吊宋。

luaL_unref
取消對(duì)某個(gè)對(duì)象的引用纲辽。

load相關(guān)
luaL_loadfile
加載文件,并解析璃搜。

luaL_loadbuffer
加載源碼/字節(jié)碼字符串拖吼,并解析。

luaL_loadstring
同上这吻。

state相關(guān)
luaL_newstate
新建一個(gè)狀態(tài)(協(xié)程)吊档。

參考文獻(xiàn)
https://www.codingnow.com/2000/download/lua_manual.html
————————————————

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市唾糯,隨后出現(xiàn)的幾起案子怠硼,更是在濱河造成了極大的恐慌,老刑警劉巖移怯,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件香璃,死亡現(xiàn)場離奇詭異,居然都是意外死亡舟误,警方通過查閱死者的電腦和手機(jī)葡秒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嵌溢,“玉大人眯牧,你說我怎么就攤上這事±挡荩” “怎么了炸站?”我有些...
    開封第一講書人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長疚顷。 經(jīng)常有香客問我旱易,道長,這世上最難降的妖魔是什么腿堤? 我笑而不...
    開封第一講書人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任阀坏,我火速辦了婚禮,結(jié)果婚禮上笆檀,老公的妹妹穿的比我還像新娘忌堂。我一直安慰自己,他們只是感情好酗洒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開白布士修。 她就那樣靜靜地躺著枷遂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪棋嘲。 梳的紋絲不亂的頭發(fā)上酒唉,一...
    開封第一講書人閱讀 51,215評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音沸移,去河邊找鬼痪伦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛雹锣,可吹牛的內(nèi)容都是我干的网沾。 我是一名探鬼主播,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蕊爵,長吁一口氣:“原來是場噩夢啊……” “哼辉哥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起攒射,我...
    開封第一講書人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤证薇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后匆篓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浑度,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年鸦概,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了箩张。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡窗市,死狀恐怖先慷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情咨察,我是刑警寧澤论熙,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站摄狱,受9級(jí)特大地震影響脓诡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜媒役,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一祝谚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酣衷,春花似錦交惯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽意荤。三九已至,卻和暖如春只锻,著一層夾襖步出監(jiān)牢的瞬間玖像,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來泰國打工炬藤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碴里。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓沈矿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親咬腋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子羹膳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 第一篇 語言 第0章 序言 Lua僅讓你用少量的代碼解決關(guān)鍵問題。 Lua所提供的機(jī)制是C不擅長的:高級(jí)語言根竿,動(dòng)態(tài)...
    testfor閱讀 2,667評(píng)論 1 7
  • 1.Lua 交互式編程 and 腳本式編程2.注釋單行:--多行:--[[ --]] 多行推薦使...
    只猿閱讀 529評(píng)論 0 1
  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,789評(píng)論 0 38
  • 名稱 說明 docLua 相關(guān)的文檔陵像,包括了編譯文檔、接口文檔等 Makefile 編譯Lua使用寇壳,在...
    一川煙草i蓑衣閱讀 1,441評(píng)論 0 1
  • Lua 全教程 本文目錄 Lua 簡介 Lua 版本 Lua 環(huán)境開發(fā)工具軟件包管理分析和調(diào)試 基礎(chǔ)概念常量和標(biāo)識(shí)...
    Hello_Muay閱讀 5,477評(píng)論 0 2