native Lua  0.5.0-devel
Lua on the platform you use with the compiler you choose
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