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