diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2005-07-11 14:10:35 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2005-07-11 14:10:35 -0300 |
| commit | b261cd110f542680797bec8ca974b2116b414f0a (patch) | |
| tree | b25d98150531fdf5c2126e5fa7caa4d136447b6e | |
| parent | e4324f54b9f842f3e1187acf0a3e7f320de518ab (diff) | |
| download | lua-b261cd110f542680797bec8ca974b2116b414f0a.tar.gz lua-b261cd110f542680797bec8ca974b2116b414f0a.tar.bz2 lua-b261cd110f542680797bec8ca974b2116b414f0a.zip | |
new macro for conversion double->int + small changes
| -rw-r--r-- | luaconf.h | 86 |
1 files changed, 33 insertions, 53 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: luaconf.h,v 1.53 2005/06/13 21:20:28 roberto Exp roberto $ | 2 | ** $Id: luaconf.h,v 1.54 2005/07/05 14:31:45 roberto Exp roberto $ |
| 3 | ** Configuration file for Lua | 3 | ** Configuration file for Lua |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -41,22 +41,27 @@ | |||
| 41 | ** non-conventional directories. | 41 | ** non-conventional directories. |
| 42 | */ | 42 | */ |
| 43 | #if defined(_WIN32) | 43 | #if defined(_WIN32) |
| 44 | #define LUA_ROOT "C:\\Program Files\\Lua51" | 44 | /* |
| 45 | #define LUA_LDIR LUA_ROOT "\\lua" | 45 | ** In Windows, any exclamation mark ('!') in the path is replaced by the |
| 46 | #define LUA_CDIR LUA_ROOT "\\dll" | 46 | ** path of the directory of the executable file of the current process. |
| 47 | */ | ||
| 48 | #define LUA_LDIR "!\\lua" | ||
| 49 | #define LUA_CDIR "!\\dll" | ||
| 47 | #define LUA_PATH_DEFAULT \ | 50 | #define LUA_PATH_DEFAULT \ |
| 48 | "?.lua;" LUA_LDIR"\\?.lua;" LUA_LDIR"\\?\\init.lua" | 51 | "?.lua;" LUA_LDIR"\\?.lua;" LUA_LDIR"\\?\\init.lua;" \ |
| 49 | #define LUA_CPATH_DEFAULT \ | 52 | LUA_CDIR"\\?.lua;" LUA_CDIR"\\?\\init.lua" |
| 50 | "?.dll;" "l?.dll;" LUA_CDIR"\\?.dll;" LUA_CDIR"\\l?.dll" | 53 | #define LUA_CPATH_DEFAULT \ |
| 54 | "?.dll;" LUA_CDIR"\\?.dll;" LUA_CDIR"\\loadall.dll" | ||
| 51 | 55 | ||
| 52 | #else | 56 | #else |
| 53 | #define LUA_ROOT "/usr/local" | 57 | #define LUA_ROOT "/usr/local" |
| 54 | #define LUA_LDIR LUA_ROOT "/share/lua/5.1" | 58 | #define LUA_LDIR LUA_ROOT "/share/lua/5.1" |
| 55 | #define LUA_CDIR LUA_ROOT "/lib/lua/5.1" | 59 | #define LUA_CDIR LUA_ROOT "/lib/lua/5.1" |
| 56 | #define LUA_PATH_DEFAULT \ | 60 | #define LUA_PATH_DEFAULT \ |
| 57 | "./?.lua;" LUA_LDIR"/?.lua;" LUA_LDIR"/?/init.lua" | 61 | "./?.lua;" LUA_LDIR"/?.lua;" LUA_LDIR"/?/init.lua;" \ |
| 58 | #define LUA_CPATH_DEFAULT \ | 62 | LUA_CDIR"/?.lua;" LUA_CDIR"/?/init.lua" |
| 59 | "./?.so;" "./l?.so;" LUA_CDIR"/?.so;" LUA_CDIR"/l?.so" | 63 | #define LUA_CPATH_DEFAULT \ |
| 64 | "./?.so;" LUA_CDIR"/?.so;" LUA_CDIR"/loadall.so" | ||
| 60 | #endif | 65 | #endif |
| 61 | 66 | ||
| 62 | 67 | ||
| @@ -74,21 +79,17 @@ | |||
| 74 | 79 | ||
| 75 | /* | 80 | /* |
| 76 | @@ LUA_PATHSEP is the character that separates templates in a path. | 81 | @@ LUA_PATHSEP is the character that separates templates in a path. |
| 77 | ** CHANGE it if for some reason your system cannot use a | ||
| 78 | ** semicolon. (E.g., if a semicolon is a common character in | ||
| 79 | ** file/directory names.) Probably you do not need to change this. | ||
| 80 | */ | ||
| 81 | #define LUA_PATHSEP ';' | ||
| 82 | |||
| 83 | |||
| 84 | /* | ||
| 85 | @@ LUA_PATH_MARK is the string that marks the substitution points in a | 82 | @@ LUA_PATH_MARK is the string that marks the substitution points in a |
| 86 | @* template. | 83 | @* template. |
| 87 | ** CHANGE it if for some reason your system cannot use an interrogation | 84 | @@ LUA_EXECDIR in a Windows path is replaced by the executable's |
| 88 | ** mark. (E.g., if an interogation mark is a common character in | 85 | @* directory. |
| 89 | ** file/directory names.) Probably you do not need to change this. | 86 | ** CHANGE them if for some reason your system cannot use those |
| 87 | ** characters. (E.g., if one of those characters is a common character | ||
| 88 | ** in file/directory names.) Probably you do not need to change them. | ||
| 90 | */ | 89 | */ |
| 90 | #define LUA_PATHSEP ";" | ||
| 91 | #define LUA_PATH_MARK "?" | 91 | #define LUA_PATH_MARK "?" |
| 92 | #define LUA_EXECDIR "!" | ||
| 92 | 93 | ||
| 93 | 94 | ||
| 94 | /* | 95 | /* |
| @@ -464,45 +465,24 @@ | |||
| 464 | 465 | ||
| 465 | /* | 466 | /* |
| 466 | @@ lua_number2int is a macro to convert lua_Number to int. | 467 | @@ lua_number2int is a macro to convert lua_Number to int. |
| 467 | ** CHANGE that if you know a faster way to convert a lua_Number to | 468 | @@ lua_number2integer is a macro to convert lua_Number to lua_Integer. |
| 469 | ** CHANGE them if you know a faster way to convert a lua_Number to | ||
| 468 | ** int (with any rounding method and without throwing errors) in your | 470 | ** int (with any rounding method and without throwing errors) in your |
| 469 | ** system. In Pentium machines, a naive typecast from double to int | 471 | ** system. In Pentium machines, a naive typecast from double to int |
| 470 | ** in C is extremely slow, so any alternative is worth trying. | 472 | ** in C is extremely slow, so any alternative is worth trying. |
| 471 | */ | 473 | */ |
| 472 | 474 | ||
| 473 | /* On a gcc/Pentium, resort to assembler */ | 475 | /* On a Pentium, resort to a trick */ |
| 474 | #if !defined(LUA_ANSI) && defined(__GNUC__) && defined(__i386) | 476 | #if !defined(LUA_ANSI) && (defined(__i386) || defined (_M_IX86)) |
| 475 | #define lua_number2int(i,d) __asm__ ("fistpl %0":"=m"(i):"t"(d):"st") | 477 | union luai_Cast { double l_d; long l_l; }; |
| 476 | 478 | #define lua_number2int(i,d) \ | |
| 477 | /* On Windows/Pentium, resort to assembler */ | 479 | { union luai_Cast u; u.l_d = d + 6755399441055744.0; (i) = u.l_l; } |
| 478 | #elif !defined(LUA_ANSI) && defined(_MSC_VER) && defined(_M_IX86) | ||
| 479 | #define lua_number2int(i,d) __asm fld d __asm fistp i | ||
| 480 | |||
| 481 | |||
| 482 | /* on Pentium machines compliant with C99, you can try lrint */ | ||
| 483 | #elif defined (__i386) && defined(__STDC_VERSION__) && \ | ||
| 484 | (__STDC_VERSION__ >= 199900L) | ||
| 485 | #define lua_number2int(i,d) ((i)=lrint(d)) | ||
| 486 | |||
| 487 | /* this option always works, but may be slow */ | ||
| 488 | #else | ||
| 489 | #define lua_number2int(i,d) ((i)=(int)(d)) | ||
| 490 | |||
| 491 | #endif | ||
| 492 | |||
| 493 | |||
| 494 | /* | ||
| 495 | @@ lua_number2integer is a macro to convert lua_Number to lua_Integer. | ||
| 496 | ** CHANGE (see lua_number2int). | ||
| 497 | */ | ||
| 498 | /* On a gcc or Windows/Pentium, resort to assembler */ | ||
| 499 | #if (defined(__GNUC__) && defined(__i386)) || \ | ||
| 500 | (defined(_MSC_VER) && defined(_M_IX86)) | ||
| 501 | #define lua_number2integer(i,n) lua_number2int(i, n) | 480 | #define lua_number2integer(i,n) lua_number2int(i, n) |
| 502 | 481 | ||
| 503 | /* this option always works, but may be slow */ | 482 | /* this option always works, but may be slow */ |
| 504 | #else | 483 | #else |
| 505 | #define lua_number2integer(i,d) ((i)=(lua_Integer)(d)) | 484 | #define lua_number2int(i,d) ((i)=(int)(d)) |
| 485 | #define lua_number2integer(i,d) ((i)=(lua_Integer)(d)) | ||
| 506 | 486 | ||
| 507 | #endif | 487 | #endif |
| 508 | 488 | ||
| @@ -517,12 +497,12 @@ | |||
| 517 | ** =================================================================== | 497 | ** =================================================================== |
| 518 | */ | 498 | */ |
| 519 | 499 | ||
| 500 | #define LUA_NUMBER double | ||
| 520 | 501 | ||
| 521 | /* | 502 | /* |
| 522 | @@ LUAI_UACNUMBER is the result of an 'usual argument conversion' | 503 | @@ LUAI_UACNUMBER is the result of an 'usual argument conversion' |
| 523 | @* over a number. | 504 | @* over a number. |
| 524 | */ | 505 | */ |
| 525 | #define LUA_NUMBER double | ||
| 526 | #define LUAI_UACNUMBER double | 506 | #define LUAI_UACNUMBER double |
| 527 | 507 | ||
| 528 | 508 | ||
| @@ -572,7 +552,7 @@ | |||
| 572 | ** CHANGE them if you prefer to use longjmp/setjmp even with C++ or | 552 | ** CHANGE them if you prefer to use longjmp/setjmp even with C++ or |
| 573 | ** if want/don't want to use _longjmp/_setjmp instead of regular | 553 | ** if want/don't want to use _longjmp/_setjmp instead of regular |
| 574 | ** longjmp/setjmp. By default, Lua handles errors with exceptions when | 554 | ** longjmp/setjmp. By default, Lua handles errors with exceptions when |
| 575 | ** compiling as C++ code, with _longjmp/_setjmp when compiling as C code | 555 | * compiling as C++ code, with _longjmp/_setjmp when compiling as C code |
| 576 | ** in a Unix system, and with longjmp/setjmp otherwise. | 556 | ** in a Unix system, and with longjmp/setjmp otherwise. |
| 577 | */ | 557 | */ |
| 578 | #if defined(__cplusplus) | 558 | #if defined(__cplusplus) |
