Project

General

Profile

Statistics
| Revision:

root / lab4 / .minix-src / include / luaconf.h @ 14

History | View | Annotate | Download (21.6 KB)

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