native Lua
0.5.0-devel
Lua on the platform you use with the compiler you choose
src
luaconf.h
Go to the documentation of this file.
1
/*
2
** $Id: luaconf.h $
3
** Configuration file for Lua
4
** See Copyright Notice in lua.h
5
*/
6
7
8
#ifndef luaconf_h
9
#define luaconf_h
10
11
#include <limits.h>
12
#include <stddef.h>
13
14
#include "
_native_lua_config.h
"
/* native Lua */
15
16
17
/*
18
** ===================================================================
19
** General Configuration File for Lua
20
**
21
** Some definitions here can be changed externally, through the
22
** compiler (e.g., with '-D' options). Those are protected by
23
** '#if !defined' guards. However, several other definitions should
24
** be changed directly here, either because they affect the Lua
25
** ABI (by making the changes here, you ensure that all software
26
** connected to Lua, such as C libraries, will be compiled with the
27
** same configuration); or because they are seldom changed.
28
**
29
** Search for "@@" to find all configurable definitions.
30
** ===================================================================
31
*/
32
33
34
/*
35
** {====================================================================
36
** System Configuration: macros to adapt (if needed) Lua to some
37
** particular platform, for instance restricting it to C89.
38
** =====================================================================
39
*/
40
41
/*
42
@@ LUAI_MAXCSTACK defines the maximum depth for nested calls and
43
** also limits the maximum depth of other recursive algorithms in
44
** the implementation, such as syntactic analysis. A value too
45
** large may allow the interpreter to crash (C-stack overflow).
46
** The default value seems ok for regular machines, but may be
47
** too high for restricted hardware.
48
** The test file 'cstack.lua' may help finding a good limit.
49
** (It will crash with a limit too high.)
50
*/
51
#if !defined(LUAI_MAXCSTACK)
52
#define LUAI_MAXCSTACK 2000
53
#endif
54
55
56
/*
57
@@ LUA_USE_C89 controls the use of non-ISO-C89 features.
58
** Define it if you want Lua to avoid the use of a few C99 features
59
** or Windows-specific features on Windows.
60
*/
61
/* #define LUA_USE_C89 */
62
63
64
/*
65
** By default, Lua on Windows use (some) specific Windows features
66
*/
67
#if !defined(LUA_USE_C89) && defined(_WIN32) && !defined(_WIN32_WCE)
68
#define LUA_USE_WINDOWS
/* enable goodies for regular Windows */
69
#endif
70
71
72
#if defined(LUA_USE_WINDOWS)
73
#define LUA_DL_DLL
/* enable support for DLL */
74
#define LUA_USE_C89
/* broadly, Windows is C89 */
75
#endif
76
77
78
#if defined(LUA_USE_LINUX)
79
#define LUA_USE_POSIX
80
#define LUA_USE_DLOPEN
/* needs an extra library: -ldl */
81
#endif
82
83
84
#if defined(LUA_USE_MACOSX)
85
#define LUA_USE_POSIX
86
#define LUA_USE_DLOPEN
/* MacOS does not need -ldl */
87
#endif
88
89
90
/*
91
@@ LUAI_IS32INT is true iff 'int' has (at least) 32 bits.
92
*/
93
#define LUAI_IS32INT ((UINT_MAX >> 30) >= 3)
94
95
/* }================================================================== */
96
97
98
99
/*
100
** {==================================================================
101
** Configuration for Number types.
102
** ===================================================================
103
*/
104
105
/*
106
@@ LUA_32BITS enables Lua with 32-bit integers and 32-bit floats.
107
*/
108
/* #define LUA_32BITS */
109
110
111
/*
112
@@ LUA_C89_NUMBERS ensures that Lua uses the largest types available for
113
** C89 ('long' and 'double'); Windows always has '__int64', so it does
114
** not need to use this case.
115
*/
116
#if defined(LUA_USE_C89) && !defined(LUA_USE_WINDOWS)
117
#define LUA_C89_NUMBERS
118
#endif
119
120
121
/*
122
@@ LUA_INT_TYPE defines the type for Lua integers.
123
@@ LUA_FLOAT_TYPE defines the type for Lua floats.
124
** Lua should work fine with any mix of these options supported
125
** by your C compiler. The usual configurations are 64-bit integers
126
** and 'double' (the default), 32-bit integers and 'float' (for
127
** restricted platforms), and 'long'/'double' (for C compilers not
128
** compliant with C99, which may not have support for 'long long').
129
*/
130
131
/* predefined options for LUA_INT_TYPE */
132
#define LUA_INT_INT 1
133
#define LUA_INT_LONG 2
134
#define LUA_INT_LONGLONG 3
135
136
/* predefined options for LUA_FLOAT_TYPE */
137
#define LUA_FLOAT_FLOAT 1
138
#define LUA_FLOAT_DOUBLE 2
139
#define LUA_FLOAT_LONGDOUBLE 3
140
141
#if defined(LUA_32BITS)
/* { */
142
/*
143
** 32-bit integers and 'float'
144
*/
145
#if LUAI_IS32INT
/* use 'int' if big enough */
146
#define LUA_INT_TYPE LUA_INT_INT
147
#else
/* otherwise use 'long' */
148
#define LUA_INT_TYPE LUA_INT_LONG
149
#endif
150
#define LUA_FLOAT_TYPE LUA_FLOAT_FLOAT
151
152
#elif defined(LUA_C89_NUMBERS)
/* }{ */
153
/*
154
** largest types available for C89 ('long' and 'double')
155
*/
156
#define LUA_INT_TYPE LUA_INT_LONG
157
#define LUA_FLOAT_TYPE LUA_FLOAT_DOUBLE
158
159
#endif
/* } */
160
161
162
/*
163
** default configuration for 64-bit Lua ('long long' and 'double')
164
*/
165
#if !defined(LUA_INT_TYPE)
166
#define LUA_INT_TYPE LUA_INT_LONGLONG
167
#endif
168
169
#if !defined(LUA_FLOAT_TYPE)
170
#define LUA_FLOAT_TYPE LUA_FLOAT_DOUBLE
171
#endif
172
173
/* }================================================================== */
174
175
176
177
/*
178
** {==================================================================
179
** Configuration for Paths.
180
** ===================================================================
181
*/
182
183
/*
184
** LUA_PATH_SEP is the character that separates templates in a path.
185
** LUA_PATH_MARK is the string that marks the substitution points in a
186
** template.
187
** LUA_EXEC_DIR in a Windows path is replaced by the executable's
188
** directory.
189
*/
190
#define LUA_PATH_SEP ";"
191
#define LUA_PATH_MARK "?"
192
#define LUA_EXEC_DIR "!"
193
194
195
/*
196
@@ LUA_PATH_DEFAULT is the default path that Lua uses to look for
197
** Lua libraries.
198
@@ LUA_CPATH_DEFAULT is the default path that Lua uses to look for
199
** C libraries.
200
** CHANGE them if your machine has a non-conventional directory
201
** hierarchy or if you want to install your libraries in
202
** non-conventional directories.
203
*/
204
205
#define LUA_VDIR LUA_VERSION_MAJOR "." LUA_VERSION_MINOR
206
#if defined(_WIN32)
/* { */
207
/*
208
** In Windows, any exclamation mark ('!') in the path is replaced by the
209
** path of the directory of the executable file of the current process.
210
*/
211
#define LUA_LDIR "!\\lua\\"
212
#define LUA_CDIR "!\\"
213
#define LUA_SHRDIR "!\\..\\share\\lua\\" LUA_VDIR "\\"
214
215
#if !defined(LUA_PATH_DEFAULT)
216
#define LUA_PATH_DEFAULT \
217
LUA_LDIR"?.lua;" LUA_LDIR"?\\init.lua;" \
218
LUA_CDIR"?.lua;" LUA_CDIR"?\\init.lua;" \
219
LUA_SHRDIR"?.lua;" LUA_SHRDIR"?\\init.lua;" \
220
".\\?.lua;" ".\\?\\init.lua"
221
#endif
222
223
#if !defined(LUA_CPATH_DEFAULT)
224
#define LUA_CPATH_DEFAULT \
225
LUA_CDIR"?.dll;" \
226
LUA_CDIR"..\\lib\\lua\\" LUA_VDIR "\\?.dll;" \
227
LUA_CDIR"loadall.dll;" ".\\?.dll"
228
#endif
229
230
#else
/* }{ */
231
232
#define LUA_ROOT "/usr/local/"
233
#define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR "/"
234
#define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR "/"
235
236
#if !defined(LUA_PATH_DEFAULT)
237
#define LUA_PATH_DEFAULT \
238
LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \
239
LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua;" \
240
"./?.lua;" "./?/init.lua"
241
#endif
242
243
#if !defined(LUA_CPATH_DEFAULT)
244
#define LUA_CPATH_DEFAULT \
245
LUA_CDIR"?.so;" LUA_CDIR"loadall.so;" "./?.so"
246
#endif
247
248
#endif
/* } */
249
250
251
/*
252
@@ LUA_DIRSEP is the directory separator (for submodules).
253
** CHANGE it if your machine does not use "/" as the directory separator
254
** and is not Windows. (On Windows Lua automatically uses "\".)
255
*/
256
#if !defined(LUA_DIRSEP)
257
258
#if defined(_WIN32)
259
#define LUA_DIRSEP "\\"
260
#else
261
#define LUA_DIRSEP "/"
262
#endif
263
264
#endif
265
266
/* }================================================================== */
267
268
269
/*
270
** {==================================================================
271
** Marks for exported symbols in the C code
272
** ===================================================================
273
*/
274
275
/*
276
@@ LUA_API is a mark for all core API functions.
277
@@ LUALIB_API is a mark for all auxiliary library functions.
278
@@ LUAMOD_API is a mark for all standard library opening functions.
279
** CHANGE them if you need to define those functions in some special way.
280
** For instance, if you want to create one Windows DLL with the core and
281
** the libraries, you may want to use the following definition (define
282
** LUA_BUILD_AS_DLL to get it).
283
*/
284
#if defined(LUA_BUILD_AS_DLL)
/* { */
285
286
#if defined(LUA_CORE) || defined(LUA_LIB)
/* { */
287
#define LUA_API __declspec(dllexport)
288
#else
/* }{ */
289
#define LUA_API __declspec(dllimport)
290
#endif
/* } */
291
292
#else
/* }{ */
293
294
#define LUA_API extern
295
296
#endif
/* } */
297
298
299
/*
300
** More often than not the libs go together with the core.
301
*/
302
#define LUALIB_API LUA_API
303
#define LUAMOD_API LUA_API
304
305
306
/*
307
@@ LUAI_FUNC is a mark for all extern functions that are not to be
308
** exported to outside modules.
309
@@ LUAI_DDEF and LUAI_DDEC are marks for all extern (const) variables,
310
** none of which to be exported to outside modules (LUAI_DDEF for
311
** definitions and LUAI_DDEC for declarations).
312
** CHANGE them if you need to mark them in some special way. Elf/gcc
313
** (versions 3.2 and later) mark them as "hidden" to optimize access
314
** when Lua is compiled as a shared library. Not all elf targets support
315
** this attribute. Unfortunately, gcc does not offer a way to check
316
** whether the target offers that support, and those without support
317
** give a warning about it. To avoid these warnings, change to the
318
** default definition.
319
*/
320
#if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 302) && \
321
defined(__ELF__)
/* { */
322
#define LUAI_FUNC __attribute__((visibility("internal"))) extern
323
#else
/* }{ */
324
#define LUAI_FUNC extern
325
#endif
/* } */
326
327
#define LUAI_DDEC(dec) LUAI_FUNC dec
328
#define LUAI_DDEF
/* empty */
329
330
/* }================================================================== */
331
332
333
/*
334
** {==================================================================
335
** Compatibility with previous versions
336
** ===================================================================
337
*/
338
339
/*
340
@@ LUA_COMPAT_5_3 controls other macros for compatibility with Lua 5.3.
341
** You can define it to get all options, or change specific options
342
** to fit your specific needs.
343
*/
344
#if defined(LUA_COMPAT_5_3)
/* { */
345
346
/*
347
@@ LUA_COMPAT_MATHLIB controls the presence of several deprecated
348
** functions in the mathematical library.
349
** (These functions were already officially removed in 5.3;
350
** nevertheless they are still available here.)
351
*/
352
#define LUA_COMPAT_MATHLIB
353
354
/*
355
@@ LUA_COMPAT_APIINTCASTS controls the presence of macros for
356
** manipulating other integer types (lua_pushunsigned, lua_tounsigned,
357
** luaL_checkint, luaL_checklong, etc.)
358
** (These macros were also officially removed in 5.3, but they are still
359
** available here.)
360
*/
361
#define LUA_COMPAT_APIINTCASTS
362
363
364
/*
365
@@ LUA_COMPAT_LT_LE controls the emulation of the '__le' metamethod
366
** using '__lt'.
367
*/
368
#define LUA_COMPAT_LT_LE
369
370
371
/*
372
@@ The following macros supply trivial compatibility for some
373
** changes in the API. The macros themselves document how to
374
** change your code to avoid using them.
375
** (Once more, these macros were officially removed in 5.3, but they are
376
** still available here.)
377
*/
378
#define lua_strlen(L,i) lua_rawlen(L, (i))
379
380
#define lua_objlen(L,i) lua_rawlen(L, (i))
381
382
#define lua_equal(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPEQ)
383
#define lua_lessthan(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPLT)
384
385
#endif
/* } */
386
387
/* }================================================================== */
388
389
390
391
/*
392
** {==================================================================
393
** Configuration for Numbers.
394
** Change these definitions if no predefined LUA_FLOAT_* / LUA_INT_*
395
** satisfy your needs.
396
** ===================================================================
397
*/
398
399
/*
400
@@ LUA_NUMBER is the floating-point type used by Lua.
401
@@ LUAI_UACNUMBER is the result of a 'default argument promotion'
402
@@ over a floating number.
403
@@ l_floatatt(x) corrects float attribute 'x' to the proper float type
404
** by prefixing it with one of FLT/DBL/LDBL.
405
@@ LUA_NUMBER_FRMLEN is the length modifier for writing floats.
406
@@ LUA_NUMBER_FMT is the format for writing floats.
407
@@ lua_number2str converts a float to a string.
408
@@ l_mathop allows the addition of an 'l' or 'f' to all math operations.
409
@@ l_floor takes the floor of a float.
410
@@ lua_str2number converts a decimal numeral to a number.
411
*/
412
413
414
/* The following definitions are good for most cases here */
415
416
#define l_floor(x) (l_mathop(floor)(x))
417
418
#define lua_number2str(s,sz,n) \
419
l_sprintf((s), sz, LUA_NUMBER_FMT, (LUAI_UACNUMBER)(n))
420
421
/*
422
@@ lua_numbertointeger converts a float number with an integral value
423
** to an integer, or returns 0 if float is not within the range of
424
** a lua_Integer. (The range comparisons are tricky because of
425
** rounding. The tests here assume a two-complement representation,
426
** where MININTEGER always has an exact representation as a float;
427
** MAXINTEGER may not have one, and therefore its conversion to float
428
** may have an ill-defined value.)
429
*/
430
#define lua_numbertointeger(n,p) \
431
((n) >= (LUA_NUMBER)(LUA_MININTEGER) && \
432
(n) < -(LUA_NUMBER)(LUA_MININTEGER) && \
433
(*(p) = (LUA_INTEGER)(n), 1))
434
435
436
/* now the variable definitions */
437
438
#if LUA_FLOAT_TYPE == LUA_FLOAT_FLOAT
/* { single float */
439
440
#define LUA_NUMBER float
441
442
#define l_floatatt(n) (FLT_##n)
443
444
#define LUAI_UACNUMBER double
445
446
#define LUA_NUMBER_FRMLEN ""
447
#define LUA_NUMBER_FMT "%.7g"
448
449
#define l_mathop(op) op##f
450
451
#define lua_str2number(s,p) strtof((s), (p))
452
453
454
#elif LUA_FLOAT_TYPE == LUA_FLOAT_LONGDOUBLE
/* }{ long double */
455
456
#define LUA_NUMBER long double
457
458
#define l_floatatt(n) (LDBL_##n)
459
460
#define LUAI_UACNUMBER long double
461
462
#define LUA_NUMBER_FRMLEN "L"
463
#define LUA_NUMBER_FMT "%.19Lg"
464
465
#define l_mathop(op) op##l
466
467
#define lua_str2number(s,p) strtold((s), (p))
468
469
#elif LUA_FLOAT_TYPE == LUA_FLOAT_DOUBLE
/* }{ double */
470
471
#define LUA_NUMBER double
472
473
#define l_floatatt(n) (DBL_##n)
474
475
#define LUAI_UACNUMBER double
476
477
#define LUA_NUMBER_FRMLEN ""
478
#define LUA_NUMBER_FMT "%.14g"
479
480
#define l_mathop(op) op
481
482
#define lua_str2number(s,p) strtod((s), (p))
483
484
#else
/* }{ */
485
486
#error "numeric float type not defined"
487
488
#endif
/* } */
489
490
491
492
/*
493
@@ LUA_INTEGER is the integer type used by Lua.
494
**
495
@@ LUA_UNSIGNED is the unsigned version of LUA_INTEGER.
496
**
497
@@ LUAI_UACINT is the result of a 'default argument promotion'
498
@@ over a LUA_INTEGER.
499
@@ LUA_INTEGER_FRMLEN is the length modifier for reading/writing integers.
500
@@ LUA_INTEGER_FMT is the format for writing integers.
501
@@ LUA_MAXINTEGER is the maximum value for a LUA_INTEGER.
502
@@ LUA_MININTEGER is the minimum value for a LUA_INTEGER.
503
@@ LUA_MAXUNSIGNED is the maximum value for a LUA_UNSIGNED.
504
@@ LUA_UNSIGNEDBITS is the number of bits in a LUA_UNSIGNED.
505
@@ lua_integer2str converts an integer to a string.
506
*/
507
508
509
/* The following definitions are good for most cases here */
510
511
#define LUA_INTEGER_FMT "%" LUA_INTEGER_FRMLEN "d"
512
513
#define LUAI_UACINT LUA_INTEGER
514
515
#define lua_integer2str(s,sz,n) \
516
l_sprintf((s), sz, LUA_INTEGER_FMT, (LUAI_UACINT)(n))
517
518
/*
519
** use LUAI_UACINT here to avoid problems with promotions (which
520
** can turn a comparison between unsigneds into a signed comparison)
521
*/
522
#define LUA_UNSIGNED unsigned LUAI_UACINT
523
524
525
#define LUA_UNSIGNEDBITS (sizeof(LUA_UNSIGNED) * CHAR_BIT)
526
527
528
/* now the variable definitions */
529
530
#if LUA_INT_TYPE == LUA_INT_INT
/* { int */
531
532
#define LUA_INTEGER int
533
#define LUA_INTEGER_FRMLEN ""
534
535
#define LUA_MAXINTEGER INT_MAX
536
#define LUA_MININTEGER INT_MIN
537
538
#define LUA_MAXUNSIGNED UINT_MAX
539
540
#elif LUA_INT_TYPE == LUA_INT_LONG
/* }{ long */
541
542
#define LUA_INTEGER long
543
#define LUA_INTEGER_FRMLEN "l"
544
545
#define LUA_MAXINTEGER LONG_MAX
546
#define LUA_MININTEGER LONG_MIN
547
548
#define LUA_MAXUNSIGNED ULONG_MAX
549
550
#elif LUA_INT_TYPE == LUA_INT_LONGLONG
/* }{ long long */
551
552
/* use presence of macro LLONG_MAX as proxy for C99 compliance */
553
#if defined(LLONG_MAX)
/* { */
554
/* use ISO C99 stuff */
555
556
#define LUA_INTEGER long long
557
#define LUA_INTEGER_FRMLEN "ll"
558
559
#define LUA_MAXINTEGER LLONG_MAX
560
#define LUA_MININTEGER LLONG_MIN
561
562
#define LUA_MAXUNSIGNED ULLONG_MAX
563
564
#elif defined(LUA_USE_WINDOWS)
/* }{ */
565
/* in Windows, can use specific Windows types */
566
567
#define LUA_INTEGER __int64
568
#define LUA_INTEGER_FRMLEN "I64"
569
570
#define LUA_MAXINTEGER _I64_MAX
571
#define LUA_MININTEGER _I64_MIN
572
573
#define LUA_MAXUNSIGNED _UI64_MAX
574
575
#else
/* }{ */
576
577
#error "Compiler does not support 'long long'. Use option '-DLUA_32BITS' \
578
or '-DLUA_C89_NUMBERS' (see file 'luaconf.h' for details)"
579
580
#endif
/* } */
581
582
#else
/* }{ */
583
584
#error "numeric integer type not defined"
585
586
#endif
/* } */
587
588
/* }================================================================== */
589
590
591
/*
592
** {==================================================================
593
** Dependencies with C99 and other C details
594
** ===================================================================
595
*/
596
597
/*
598
@@ l_sprintf is equivalent to 'snprintf' or 'sprintf' in C89.
599
** (All uses in Lua have only one format item.)
600
*/
601
#if !defined(LUA_USE_C89)
602
#define l_sprintf(s,sz,f,i) snprintf(s,sz,f,i)
603
#else
604
#define l_sprintf(s,sz,f,i) ((void)(sz), sprintf(s,f,i))
605
#endif
606
607
608
/*
609
@@ lua_strx2number converts a hexadecimal numeral to a number.
610
** In C99, 'strtod' does that conversion. Otherwise, you can
611
** leave 'lua_strx2number' undefined and Lua will provide its own
612
** implementation.
613
*/
614
#if !defined(LUA_USE_C89)
615
#define lua_strx2number(s,p) lua_str2number(s,p)
616
#endif
617
618
619
/*
620
@@ lua_pointer2str converts a pointer to a readable string in a
621
** non-specified way.
622
*/
623
#define lua_pointer2str(buff,sz,p) l_sprintf(buff,sz,"%p",p)
624
625
626
/*
627
@@ lua_number2strx converts a float to a hexadecimal numeral.
628
** In C99, 'sprintf' (with format specifiers '%a'/'%A') does that.
629
** Otherwise, you can leave 'lua_number2strx' undefined and Lua will
630
** provide its own implementation.
631
*/
632
#if !defined(LUA_USE_C89)
633
#define lua_number2strx(L,b,sz,f,n) \
634
((void)L, l_sprintf(b,sz,f,(LUAI_UACNUMBER)(n)))
635
#endif
636
637
638
/*
639
** 'strtof' and 'opf' variants for math functions are not valid in
640
** C89. Otherwise, the macro 'HUGE_VALF' is a good proxy for testing the
641
** availability of these variants. ('math.h' is already included in
642
** all files that use these macros.)
643
*/
644
#if defined(LUA_USE_C89) || (defined(HUGE_VAL) && !defined(HUGE_VALF))
645
#undef l_mathop
/* variants not available */
646
#undef lua_str2number
647
#define l_mathop(op) (lua_Number)op
/* no variant */
648
#define lua_str2number(s,p) ((lua_Number)strtod((s), (p)))
649
#endif
650
651
652
/*
653
@@ LUA_KCONTEXT is the type of the context ('ctx') for continuation
654
** functions. It must be a numerical type; Lua will use 'intptr_t' if
655
** available, otherwise it will use 'ptrdiff_t' (the nearest thing to
656
** 'intptr_t' in C89)
657
*/
658
#define LUA_KCONTEXT ptrdiff_t
659
660
#if !defined(LUA_USE_C89) && defined(__STDC_VERSION__) && \
661
__STDC_VERSION__ >= 199901L
662
#include <stdint.h>
663
#if defined(INTPTR_MAX)
/* even in C99 this type is optional */
664
#undef LUA_KCONTEXT
665
#define LUA_KCONTEXT intptr_t
666
#endif
667
#endif
668
669
670
/*
671
@@ lua_getlocaledecpoint gets the locale "radix character" (decimal point).
672
** Change that if you do not want to use C locales. (Code using this
673
** macro must include the header 'locale.h'.)
674
*/
675
#if !defined(lua_getlocaledecpoint)
676
#define lua_getlocaledecpoint() (localeconv()->decimal_point[0])
677
#endif
678
679
/* }================================================================== */
680
681
682
/*
683
** {==================================================================
684
** Language Variations
685
** =====================================================================
686
*/
687
688
/*
689
@@ LUA_NOCVTN2S/LUA_NOCVTS2N control how Lua performs some
690
** coercions. Define LUA_NOCVTN2S to turn off automatic coercion from
691
** numbers to strings. Define LUA_NOCVTS2N to turn off automatic
692
** coercion from strings to numbers.
693
*/
694
/* #define LUA_NOCVTN2S */
695
/* #define LUA_NOCVTS2N */
696
697
698
/*
699
@@ LUA_USE_APICHECK turns on several consistency checks on the C API.
700
** Define it as a help when debugging C code.
701
*/
702
#if defined(LUA_USE_APICHECK)
703
#include <assert.h>
704
#define luai_apicheck(l,e) assert(e)
705
#endif
706
707
/* }================================================================== */
708
709
710
/*
711
** {==================================================================
712
** Macros that affect the API and must be stable (that is, must be the
713
** same when you compile Lua and when you compile code that links to
714
** Lua).
715
** =====================================================================
716
*/
717
718
/*
719
@@ LUAI_MAXSTACK limits the size of the Lua stack.
720
** CHANGE it if you need a different limit. This limit is arbitrary;
721
** its only purpose is to stop Lua from consuming unlimited stack
722
** space (and to reserve some numbers for pseudo-indices).
723
** (It must fit into max(size_t)/32.)
724
*/
725
#if LUAI_IS32INT
726
#define LUAI_MAXSTACK 1000000
727
#else
728
#define LUAI_MAXSTACK 15000
729
#endif
730
731
732
/*
733
@@ LUA_EXTRASPACE defines the size of a raw memory area associated with
734
** a Lua state with very fast access.
735
** CHANGE it if you need a different size.
736
*/
737
#define LUA_EXTRASPACE (sizeof(void *))
738
739
740
/*
741
@@ LUA_IDSIZE gives the maximum size for the description of the source
742
@@ of a function in debug information.
743
** CHANGE it if you want a different size.
744
*/
745
#define LUA_IDSIZE 60
746
747
748
/*
749
@@ LUAL_BUFFERSIZE is the buffer size used by the lauxlib buffer system.
750
*/
751
#define LUAL_BUFFERSIZE ((int)(16 * sizeof(void*) * sizeof(lua_Number)))
752
753
754
/*
755
@@ LUAI_MAXALIGN defines fields that, when used in a union, ensure
756
** maximum alignment for the other items in that union.
757
*/
758
#define LUAI_MAXALIGN lua_Number n; double u; void *s; lua_Integer i; long l
759
760
/* }================================================================== */
761
762
763
764
765
766
/* =================================================================== */
767
768
/*
769
** Local configuration. You can use this space to add your redefinitions
770
** without modifying the main part of the file.
771
*/
772
773
774
775
776
777
#endif
_native_lua_config.h
native Lua configuration file
Generated on Fri Dec 18 2020 17:09:24 for native Lua by
1.8.18