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