Skip to content

Commit 2125b92

Browse files
authored
Merge pull request #1827 from fesily/doc-luajit-cdata-reflection
add ffi-reflect doc
2 parents 390629b + 2c72eb8 commit 2125b92

File tree

2 files changed

+131
-0
lines changed

2 files changed

+131
-0
lines changed

meta/3rd/ffi-reflect/config.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
3+
}
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
---@meta
2+
3+
---@alias ffi.typeinfo.what "int"
4+
---|"void"
5+
---|"float"
6+
---|"enum"
7+
---|"constant"
8+
---|"ptr"
9+
---|"ref"
10+
---|"array"
11+
---|"struct"
12+
---|"union"
13+
---|"func"
14+
---|"field"
15+
---|"bitfield"
16+
---|"typedef"
17+
18+
---@class ffi.typeinfo
19+
---@field what ffi.typeinfo.what
20+
21+
---@class ffi.enuminfo : ffi.typeinfo
22+
---@field name string?
23+
---@field size number|string
24+
---@field alignment number
25+
---@field type ffi.typeinfo
26+
local enuminfo = {}
27+
28+
---@return ffi.constantinfo[]
29+
function enuminfo:values()
30+
end
31+
32+
---@return ffi.constantinfo
33+
function enuminfo:value(name_or_index)
34+
end
35+
36+
---@class ffi.funcinfo : ffi.typeinfo
37+
---@field name string?
38+
---@field sym_name string?
39+
---@field return_type ffi.funcinfo
40+
---@field nargs integer
41+
---@field vararg boolean
42+
---@field sse_reg_params boolean
43+
---@field convention "cdecl"|"thiscall"|"fastcall"|"stdcall"
44+
local funcinfo = {}
45+
46+
---@return ffi.fieldinfo[]
47+
function funcinfo:arguments()
48+
end
49+
50+
---@return ffi.fieldinfo
51+
function funcinfo:argument(name_or_index)
52+
end
53+
54+
---@class ffi.unioninfo : ffi.typeinfo
55+
---@field name string?
56+
---@field size integer
57+
---@field alignment number
58+
---@field const boolean
59+
---@field volatile boolean
60+
---@field transparent boolean
61+
local unioninfo = {}
62+
63+
---@return ffi.typeinfo[]
64+
function unioninfo:members()
65+
end
66+
67+
---@return ffi.typeinfo
68+
function unioninfo:member(name_or_index)
69+
end
70+
71+
---@class ffi.structinfo : ffi.unioninfo
72+
---@field vla boolean
73+
74+
---@class ffi.floatinfo : ffi.typeinfo
75+
---@field size integer
76+
---@field alignment number
77+
---@field const boolean
78+
---@field volatile boolean
79+
80+
---@alias ffi.voidinfo ffi.floatinfo
81+
82+
---@class ffi.intinfo : ffi.floatinfo
83+
---@field bool boolean
84+
---@field unsigned boolean
85+
---@field long boolean
86+
87+
---@class ffi.constantinfo : ffi.typeinfo
88+
---@field name string?
89+
---@field type ffi.typeinfo
90+
---@field value integer
91+
92+
---@class ffi.ptrinfo : ffi.typeinfo
93+
---@field size integer
94+
---@field alignment number
95+
---@field const boolean
96+
---@field volatile boolean
97+
---@field element_type ffi.typeinfo
98+
99+
---@alias ffi.refinfo ffi.ptrinfo
100+
101+
---@class ffi.arrayinfo : ffi.ptrinfo
102+
---@field vla boolean
103+
---@field vector boolean
104+
---@field complex boolean
105+
106+
---@class ffi.fieldinfo : ffi.typeinfo
107+
---@field name string?
108+
---@field offset number
109+
---@field type ffi.typeinfo
110+
111+
---@class ffi.bitfield : ffi.fieldinfo
112+
---@field size integer|string
113+
114+
local reflect = {}
115+
116+
---reflection cdata c defined
117+
---@param v ffi.cdata*
118+
---@return ffi.typeinfo
119+
function reflect.typeof(v)
120+
end
121+
122+
---try get cdata metatable
123+
---@param v ffi.cdata*
124+
---@return table
125+
function reflect.getmetatable(v)
126+
end
127+
128+
return reflect

0 commit comments

Comments
 (0)