浏览该文件的文档.
50 #if !defined(LUA_USE_C89) && defined(_WIN32) && !defined(_WIN32_WCE)
51 #define LUA_USE_WINDOWS
55 #if defined(LUA_USE_WINDOWS)
61 #if defined(LUA_USE_LINUX)
63 #define LUA_USE_DLOPEN
67 #if defined(LUA_USE_MACOSX)
69 #define LUA_USE_DLOPEN
76 #define LUAI_IS32INT ((UINT_MAX >> 30) >= 3)
99 #if defined(LUA_USE_C89) && !defined(LUA_USE_WINDOWS)
100 #define LUA_C89_NUMBERS
115 #define LUA_INT_INT 1
116 #define LUA_INT_LONG 2
117 #define LUA_INT_LONGLONG 3
120 #define LUA_FLOAT_FLOAT 1
121 #define LUA_FLOAT_DOUBLE 2
122 #define LUA_FLOAT_LONGDOUBLE 3
124 #if defined(LUA_32BITS)
129 #define LUA_INT_TYPE LUA_INT_INT
131 #define LUA_INT_TYPE LUA_INT_LONG
133 #define LUA_FLOAT_TYPE LUA_FLOAT_FLOAT
135 #elif defined(LUA_C89_NUMBERS)
139 #define LUA_INT_TYPE LUA_INT_LONG
140 #define LUA_FLOAT_TYPE LUA_FLOAT_DOUBLE
148 #if !defined(LUA_INT_TYPE)
149 #define LUA_INT_TYPE LUA_INT_LONGLONG
152 #if !defined(LUA_FLOAT_TYPE)
153 #define LUA_FLOAT_TYPE LUA_FLOAT_DOUBLE
173 #define LUA_PATH_SEP ";"
174 #define LUA_PATH_MARK "?"
175 #define LUA_EXEC_DIR "!"
188 #define LUA_VDIR LUA_VERSION_MAJOR "." LUA_VERSION_MINOR
194 #define LUA_LDIR "!\\lua\\"
195 #define LUA_CDIR "!\\"
196 #define LUA_SHRDIR "!\\..\\share\\lua\\" LUA_VDIR "\\"
198 #if !defined(LUA_PATH_DEFAULT)
199 #define LUA_PATH_DEFAULT \
200 LUA_LDIR"?.lua;" LUA_LDIR"?\\init.lua;" \
201 LUA_CDIR"?.lua;" LUA_CDIR"?\\init.lua;" \
202 LUA_SHRDIR"?.lua;" LUA_SHRDIR"?\\init.lua;" \
203 ".\\?.lua;" ".\\?\\init.lua"
206 #if !defined(LUA_CPATH_DEFAULT)
207 #define LUA_CPATH_DEFAULT \
209 LUA_CDIR"..\\lib\\lua\\" LUA_VDIR "\\?.dll;" \
210 LUA_CDIR"loadall.dll;" ".\\?.dll"
215 #define LUA_ROOT "/usr/local/"
216 #define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR "/"
217 #define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR "/"
219 #if !defined(LUA_PATH_DEFAULT)
220 #define LUA_PATH_DEFAULT \
221 LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \
222 LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua;" \
223 "./?.lua;" "./?/init.lua"
226 #if !defined(LUA_CPATH_DEFAULT)
227 #define LUA_CPATH_DEFAULT \
228 LUA_CDIR"?.so;" LUA_CDIR"loadall.so;" "./?.so"
239 #if !defined(LUA_DIRSEP)
242 #define LUA_DIRSEP "\\"
244 #define LUA_DIRSEP "/"
267 #if defined(LUA_BUILD_AS_DLL)
269 #if defined(LUA_CORE) || defined(LUA_LIB)
270 #define LUA_API __declspec(dllexport)
272 #define LUA_API __declspec(dllimport)
277 #define LUA_API extern
285 #define LUALIB_API LUA_API
286 #define LUAMOD_API LUA_API
303 #if defined(__GNUC__) && ((__GNUC__*100 + __GNUC_MINOR__) >= 302) && \
305 #define LUAI_FUNC __attribute__((visibility("internal"))) extern
307 #define LUAI_FUNC extern
310 #define LUAI_DDEC(dec) LUAI_FUNC dec
327 #if defined(LUA_COMPAT_5_3)
335 #define LUA_COMPAT_MATHLIB
344 #define LUA_COMPAT_APIINTCASTS
351 #define LUA_COMPAT_LT_LE
361 #define lua_strlen(L,i) lua_rawlen(L, (i))
363 #define lua_objlen(L,i) lua_rawlen(L, (i))
365 #define lua_equal(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPEQ)
366 #define lua_lessthan(L,idx1,idx2) lua_compare(L,(idx1),(idx2),LUA_OPLT)
399 #define l_floor(x) (l_mathop(floor)(x))
401 #define lua_number2str(s,sz,n) \
402 l_sprintf((s), sz, LUA_NUMBER_FMT, (LUAI_UACNUMBER)(n))
413 #define lua_numbertointeger(n,p) \
414 ((n) >= (LUA_NUMBER)(LUA_MININTEGER) && \
415 (n) < -(LUA_NUMBER)(LUA_MININTEGER) && \
416 (*(p) = (LUA_INTEGER)(n), 1))
421 #if LUA_FLOAT_TYPE == LUA_FLOAT_FLOAT
423 #define LUA_NUMBER float
425 #define l_floatatt(n) (FLT_##n)
427 #define LUAI_UACNUMBER double
429 #define LUA_NUMBER_FRMLEN ""
430 #define LUA_NUMBER_FMT "%.7g"
432 #define l_mathop(op) op##f
434 #define lua_str2number(s,p) strtof((s), (p))
437 #elif LUA_FLOAT_TYPE == LUA_FLOAT_LONGDOUBLE
439 #define LUA_NUMBER long double
441 #define l_floatatt(n) (LDBL_##n)
443 #define LUAI_UACNUMBER long double
445 #define LUA_NUMBER_FRMLEN "L"
446 #define LUA_NUMBER_FMT "%.19Lg"
448 #define l_mathop(op) op##l
450 #define lua_str2number(s,p) strtold((s), (p))
452 #elif LUA_FLOAT_TYPE == LUA_FLOAT_DOUBLE
454 #define LUA_NUMBER double
456 #define l_floatatt(n) (DBL_##n)
458 #define LUAI_UACNUMBER double
460 #define LUA_NUMBER_FRMLEN ""
461 #define LUA_NUMBER_FMT "%.14g"
463 #define l_mathop(op) op
465 #define lua_str2number(s,p) strtod((s), (p))
469 #error "numeric float type not defined"
494 #define LUA_INTEGER_FMT "%" LUA_INTEGER_FRMLEN "d"
496 #define LUAI_UACINT LUA_INTEGER
498 #define lua_integer2str(s,sz,n) \
499 l_sprintf((s), sz, LUA_INTEGER_FMT, (LUAI_UACINT)(n))
505 #define LUA_UNSIGNED unsigned LUAI_UACINT
508 #define LUA_UNSIGNEDBITS (sizeof(LUA_UNSIGNED) * CHAR_BIT)
513 #if LUA_INT_TYPE == LUA_INT_INT
515 #define LUA_INTEGER int
516 #define LUA_INTEGER_FRMLEN ""
518 #define LUA_MAXINTEGER INT_MAX
519 #define LUA_MININTEGER INT_MIN
521 #define LUA_MAXUNSIGNED UINT_MAX
523 #elif LUA_INT_TYPE == LUA_INT_LONG
525 #define LUA_INTEGER long
526 #define LUA_INTEGER_FRMLEN "l"
528 #define LUA_MAXINTEGER LONG_MAX
529 #define LUA_MININTEGER LONG_MIN
531 #define LUA_MAXUNSIGNED ULONG_MAX
533 #elif LUA_INT_TYPE == LUA_INT_LONGLONG
536 #if defined(LLONG_MAX)
539 #define LUA_INTEGER long long
540 #define LUA_INTEGER_FRMLEN "ll"
542 #define LUA_MAXINTEGER LLONG_MAX
543 #define LUA_MININTEGER LLONG_MIN
545 #define LUA_MAXUNSIGNED ULLONG_MAX
547 #elif defined(LUA_USE_WINDOWS)
550 #define LUA_INTEGER __int64
551 #define LUA_INTEGER_FRMLEN "I64"
553 #define LUA_MAXINTEGER _I64_MAX
554 #define LUA_MININTEGER _I64_MIN
556 #define LUA_MAXUNSIGNED _UI64_MAX
560 #error "Compiler does not support 'long long'. Use option '-DLUA_32BITS' \
561 or '-DLUA_C89_NUMBERS' (see file 'luaconf.h' for details)"
567 #error "numeric integer type not defined"
584 #if !defined(LUA_USE_C89)
585 #define l_sprintf(s,sz,f,i) snprintf(s,sz,f,i)
587 #define l_sprintf(s,sz,f,i) ((void)(sz), sprintf(s,f,i))
597 #if !defined(LUA_USE_C89)
598 #define lua_strx2number(s,p) lua_str2number(s,p)
606 #define lua_pointer2str(buff,sz,p) l_sprintf(buff,sz,"%p",p)
615 #if !defined(LUA_USE_C89)
616 #define lua_number2strx(L,b,sz,f,n) \
617 ((void)L, l_sprintf(b,sz,f,(LUAI_UACNUMBER)(n)))
627 #if defined(LUA_USE_C89) || (defined(HUGE_VAL) && !defined(HUGE_VALF))
629 #undef lua_str2number
630 #define l_mathop(op) (lua_Number)op
631 #define lua_str2number(s,p) ((lua_Number)strtod((s), (p)))
641 #define LUA_KCONTEXT ptrdiff_t
643 #if !defined(LUA_USE_C89) && defined(__STDC_VERSION__) && \
644 __STDC_VERSION__ >= 199901L
646 #if defined(INTPTR_MAX)
648 #define LUA_KCONTEXT intptr_t
658 #if !defined(lua_getlocaledecpoint)
659 #define lua_getlocaledecpoint() (localeconv()->decimal_point[0])
685 #if defined(LUA_USE_APICHECK)
687 #define luai_apicheck(l,e) assert(e)
709 #define LUAI_MAXSTACK 1000000
711 #define LUAI_MAXSTACK 15000
720 #define LUA_EXTRASPACE (sizeof(void *))
728 #define LUA_IDSIZE 60
734 #define LUAL_BUFFERSIZE ((int)(16 * sizeof(void*) * sizeof(lua_Number)))
741 #define LUAI_MAXALIGN lua_Number n; double u; void *s; lua_Integer i; long l