44
55namespace Lua . Standard ;
66
7- public static class BasicLibrary
7+ public sealed class BasicLibrary
88{
9- public static void OpenBasicLibrary ( this LuaState state )
10- {
11- state . Environment [ "_G" ] = state . Environment ;
12- state . Environment [ "_VERSION" ] = "Lua 5.2" ;
13- foreach ( var func in Functions )
14- {
15- state . Environment [ func . Name ] = func ;
16- }
17- }
9+ public static readonly BasicLibrary Instance = new ( ) ;
1810
19- static readonly LuaFunction [ ] Functions = [
20- new ( "assert" , Assert ) ,
21- new ( "collectgarbage" , CollectGarbage ) ,
22- new ( "dofile" , DoFile ) ,
23- new ( "error" , Error ) ,
24- new ( "getmetatable" , GetMetatable ) ,
25- new ( "ipairs" , IPairs ) ,
26- new ( "loadfile" , LoadFile ) ,
27- new ( "load" , Load ) ,
28- new ( "next" , Next ) ,
29- new ( "pairs" , Pairs ) ,
30- new ( "pcall" , PCall ) ,
31- new ( "print" , Print ) ,
32- new ( "rawequal" , RawEqual ) ,
33- new ( "rawget" , RawGet ) ,
34- new ( "rawlen" , RawLen ) ,
35- new ( "rawset" , RawSet ) ,
36- new ( "select" , Select ) ,
37- new ( "setmetatable" , SetMetatable ) ,
38- new ( "tonumber" , ToNumber ) ,
39- new ( "tostring" , ToString ) ,
40- new ( "type" , Type ) ,
41- new ( "xpcall" , XPCall ) ,
42- ] ;
43-
44- static readonly LuaFunction IPairsIterator = new ( "iterator" , ( context , buffer , cancellationToken ) =>
11+ public BasicLibrary ( )
4512 {
46- var table = context . GetArgument < LuaTable > ( 0 ) ;
47- var i = context . GetArgument < double > ( 1 ) ;
13+ Functions = [
14+ new ( "assert" , Assert ) ,
15+ new ( "collectgarbage" , CollectGarbage ) ,
16+ new ( "dofile" , DoFile ) ,
17+ new ( "error" , Error ) ,
18+ new ( "getmetatable" , GetMetatable ) ,
19+ new ( "ipairs" , IPairs ) ,
20+ new ( "loadfile" , LoadFile ) ,
21+ new ( "load" , Load ) ,
22+ new ( "next" , Next ) ,
23+ new ( "pairs" , Pairs ) ,
24+ new ( "pcall" , PCall ) ,
25+ new ( "print" , Print ) ,
26+ new ( "rawequal" , RawEqual ) ,
27+ new ( "rawget" , RawGet ) ,
28+ new ( "rawlen" , RawLen ) ,
29+ new ( "rawset" , RawSet ) ,
30+ new ( "select" , Select ) ,
31+ new ( "setmetatable" , SetMetatable ) ,
32+ new ( "tonumber" , ToNumber ) ,
33+ new ( "tostring" , ToString ) ,
34+ new ( "type" , Type ) ,
35+ new ( "xpcall" , XPCall ) ,
36+ ] ;
37+
38+ IPairsIterator = new ( "iterator" , ( context , buffer , cancellationToken ) =>
39+ {
40+ var table = context . GetArgument < LuaTable > ( 0 ) ;
41+ var i = context . GetArgument < double > ( 1 ) ;
42+
43+ i ++ ;
44+ if ( table . TryGetValue ( i , out var value ) )
45+ {
46+ buffer . Span [ 0 ] = i ;
47+ buffer . Span [ 1 ] = value ;
48+ }
49+ else
50+ {
51+ buffer . Span [ 0 ] = LuaValue . Nil ;
52+ buffer . Span [ 1 ] = LuaValue . Nil ;
53+ }
4854
49- i ++ ;
50- if ( table . TryGetValue ( i , out var value ) )
51- {
52- buffer . Span [ 0 ] = i ;
53- buffer . Span [ 1 ] = value ;
54- }
55- else
56- {
57- buffer . Span [ 0 ] = LuaValue . Nil ;
58- buffer . Span [ 1 ] = LuaValue . Nil ;
59- }
55+ return new ( 2 ) ;
56+ } ) ;
6057
61- return new ( 2 ) ;
62- } ) ;
58+ PairsIterator = new ( "iterator" , Next ) ;
59+ }
6360
64- static readonly LuaFunction PairsIterator = new ( "iterator" , Next ) ;
61+ public readonly LuaFunction [ ] Functions ;
62+ readonly LuaFunction IPairsIterator ;
63+ readonly LuaFunction PairsIterator ;
6564
66- public static ValueTask < int > Assert ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
65+ public ValueTask < int > Assert ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
6766 {
6867 var arg0 = context . GetArgument ( 0 ) ;
6968
@@ -82,13 +81,13 @@ public static ValueTask<int> Assert(LuaFunctionExecutionContext context, Memory<
8281 return new ( context . ArgumentCount ) ;
8382 }
8483
85- public static ValueTask < int > CollectGarbage ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
84+ public ValueTask < int > CollectGarbage ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
8685 {
8786 GC . Collect ( ) ;
8887 return new ( 0 ) ;
8988 }
9089
91- public static async ValueTask < int > DoFile ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
90+ public async ValueTask < int > DoFile ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
9291 {
9392 var arg0 = context . GetArgument < string > ( 0 ) ;
9493
@@ -100,7 +99,7 @@ public static async ValueTask<int> DoFile(LuaFunctionExecutionContext context, M
10099 return await new Closure ( context . State , chunk ) . InvokeAsync ( context , buffer , cancellationToken ) ;
101100 }
102101
103- public static ValueTask < int > Error ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
102+ public ValueTask < int > Error ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
104103 {
105104 var obj = context . ArgumentCount == 0 || context . Arguments [ 0 ] . Type is LuaValueType . Nil
106105 ? "(error object is a nil value)"
@@ -109,7 +108,7 @@ public static ValueTask<int> Error(LuaFunctionExecutionContext context, Memory<L
109108 throw new LuaRuntimeException ( context . State . GetTraceback ( ) , obj ! ) ;
110109 }
111110
112- public static ValueTask < int > GetMetatable ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
111+ public ValueTask < int > GetMetatable ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
113112 {
114113 var arg0 = context . GetArgument ( 0 ) ;
115114
@@ -136,7 +135,7 @@ public static ValueTask<int> GetMetatable(LuaFunctionExecutionContext context, M
136135 return new ( 1 ) ;
137136 }
138137
139- public static ValueTask < int > IPairs ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
138+ public ValueTask < int > IPairs ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
140139 {
141140 var arg0 = context . GetArgument < LuaTable > ( 0 ) ;
142141
@@ -157,7 +156,7 @@ public static ValueTask<int> IPairs(LuaFunctionExecutionContext context, Memory<
157156 return new ( 3 ) ;
158157 }
159158
160- public static async ValueTask < int > LoadFile ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
159+ public async ValueTask < int > LoadFile ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
161160 {
162161 // Lua-CSharp does not support binary chunks, the mode argument is ignored.
163162 var arg0 = context . GetArgument < string > ( 0 ) ;
@@ -182,7 +181,7 @@ public static async ValueTask<int> LoadFile(LuaFunctionExecutionContext context,
182181 }
183182 }
184183
185- public static ValueTask < int > Load ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
184+ public ValueTask < int > Load ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
186185 {
187186 // Lua-CSharp does not support binary chunks, the mode argument is ignored.
188187 var arg0 = context . GetArgument ( 0 ) ;
@@ -223,7 +222,7 @@ public static ValueTask<int> Load(LuaFunctionExecutionContext context, Memory<Lu
223222 }
224223 }
225224
226- public static ValueTask < int > Next ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
225+ public ValueTask < int > Next ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
227226 {
228227 var arg0 = context . GetArgument < LuaTable > ( 0 ) ;
229228 var arg1 = context . HasArgument ( 1 ) ? context . Arguments [ 1 ] : LuaValue . Nil ;
@@ -241,7 +240,7 @@ public static ValueTask<int> Next(LuaFunctionExecutionContext context, Memory<Lu
241240 }
242241 }
243242
244- public static ValueTask < int > Pairs ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
243+ public ValueTask < int > Pairs ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
245244 {
246245 var arg0 = context . GetArgument < LuaTable > ( 0 ) ;
247246
@@ -262,7 +261,7 @@ public static ValueTask<int> Pairs(LuaFunctionExecutionContext context, Memory<L
262261 return new ( 3 ) ;
263262 }
264263
265- public static async ValueTask < int > PCall ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
264+ public async ValueTask < int > PCall ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
266265 {
267266 var arg0 = context . GetArgument < LuaFunction > ( 0 ) ;
268267
@@ -290,7 +289,7 @@ public static async ValueTask<int> PCall(LuaFunctionExecutionContext context, Me
290289 }
291290 }
292291
293- public static async ValueTask < int > Print ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
292+ public async ValueTask < int > Print ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
294293 {
295294 using var methodBuffer = new PooledArray < LuaValue > ( 1 ) ;
296295
@@ -305,7 +304,7 @@ public static async ValueTask<int> Print(LuaFunctionExecutionContext context, Me
305304 return 0 ;
306305 }
307306
308- public static ValueTask < int > RawEqual ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
307+ public ValueTask < int > RawEqual ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
309308 {
310309 var arg0 = context . GetArgument ( 0 ) ;
311310 var arg1 = context . GetArgument ( 1 ) ;
@@ -314,7 +313,7 @@ public static ValueTask<int> RawEqual(LuaFunctionExecutionContext context, Memor
314313 return new ( 1 ) ;
315314 }
316315
317- public static ValueTask < int > RawGet ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
316+ public ValueTask < int > RawGet ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
318317 {
319318 var arg0 = context . GetArgument < LuaTable > ( 0 ) ;
320319 var arg1 = context . GetArgument ( 1 ) ;
@@ -323,7 +322,7 @@ public static ValueTask<int> RawGet(LuaFunctionExecutionContext context, Memory<
323322 return new ( 1 ) ;
324323 }
325324
326- public static ValueTask < int > RawLen ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
325+ public ValueTask < int > RawLen ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
327326 {
328327 var arg0 = context . GetArgument ( 0 ) ;
329328
@@ -343,7 +342,7 @@ public static ValueTask<int> RawLen(LuaFunctionExecutionContext context, Memory<
343342 return new ( 1 ) ;
344343 }
345344
346- public static ValueTask < int > RawSet ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
345+ public ValueTask < int > RawSet ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
347346 {
348347 var arg0 = context . GetArgument < LuaTable > ( 0 ) ;
349348 var arg1 = context . GetArgument ( 1 ) ;
@@ -353,7 +352,7 @@ public static ValueTask<int> RawSet(LuaFunctionExecutionContext context, Memory<
353352 return new ( 0 ) ;
354353 }
355354
356- public static ValueTask < int > Select ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
355+ public ValueTask < int > Select ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
357356 {
358357 var arg0 = context . GetArgument ( 0 ) ;
359358
@@ -391,7 +390,7 @@ public static ValueTask<int> Select(LuaFunctionExecutionContext context, Memory<
391390 }
392391 }
393392
394- public static ValueTask < int > SetMetatable ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
393+ public ValueTask < int > SetMetatable ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
395394 {
396395 var arg0 = context . GetArgument < LuaTable > ( 0 ) ;
397396 var arg1 = context . GetArgument ( 1 ) ;
@@ -418,7 +417,7 @@ public static ValueTask<int> SetMetatable(LuaFunctionExecutionContext context, M
418417 return new ( 1 ) ;
419418 }
420419
421- public static ValueTask < int > ToNumber ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
420+ public ValueTask < int > ToNumber ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
422421 {
423422 var e = context . GetArgument ( 0 ) ;
424423 int ? toBase = context . HasArgument ( 1 )
@@ -554,13 +553,13 @@ static double StringToDouble(ReadOnlySpan<char> text, int toBase)
554553 return value ;
555554 }
556555
557- public static ValueTask < int > ToString ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
556+ public ValueTask < int > ToString ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
558557 {
559558 var arg0 = context . GetArgument ( 0 ) ;
560559 return arg0 . CallToStringAsync ( context , buffer , cancellationToken ) ;
561560 }
562561
563- public static ValueTask < int > Type ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
562+ public ValueTask < int > Type ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
564563 {
565564 var arg0 = context . GetArgument ( 0 ) ;
566565
@@ -580,7 +579,7 @@ public static ValueTask<int> Type(LuaFunctionExecutionContext context, Memory<Lu
580579 return new ( 1 ) ;
581580 }
582581
583- public static async ValueTask < int > XPCall ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
582+ public async ValueTask < int > XPCall ( LuaFunctionExecutionContext context , Memory < LuaValue > buffer , CancellationToken cancellationToken )
584583 {
585584 var arg0 = context . GetArgument < LuaFunction > ( 0 ) ;
586585 var arg1 = context . GetArgument < LuaFunction > ( 1 ) ;
0 commit comments