diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2014-04-12 11:51:53 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2014-04-12 11:51:53 -0300 |
commit | ab964ad7c64d0ff355b061ec045a27126b34aa29 (patch) | |
tree | ac2a66188c18d23ea7ef4f781d21e29a8045094c | |
parent | ef789d4161b6f2b6c28c28c71268a591e9ec6d42 (diff) | |
download | lua-ab964ad7c64d0ff355b061ec045a27126b34aa29.tar.gz lua-ab964ad7c64d0ff355b061ec045a27126b34aa29.tar.bz2 lua-ab964ad7c64d0ff355b061ec045a27126b34aa29.zip |
new macro LUA_MAXUNSIGNED + support for 'short' integers (for tests only)
-rw-r--r-- | luaconf.h | 48 |
1 files changed, 36 insertions, 12 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: luaconf.h,v 1.195 2014/04/09 17:05:11 roberto Exp roberto $ | 2 | ** $Id: luaconf.h,v 1.196 2014/04/11 19:53: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 | */ |
@@ -536,9 +536,32 @@ | |||
536 | @@ LUA_INTEGER_FMT is the format for writing integers. | 536 | @@ LUA_INTEGER_FMT is the format for writing integers. |
537 | @@ LUA_MAXINTEGER is the maximum value for a LUA_INTEGER. | 537 | @@ LUA_MAXINTEGER is the maximum value for a LUA_INTEGER. |
538 | @@ LUA_MININTEGER is the minimum value for a LUA_INTEGER. | 538 | @@ LUA_MININTEGER is the minimum value for a LUA_INTEGER. |
539 | @@ LUA_MAXUNSIGNED is the maximum value for a LUA_UNSIGNED. | ||
539 | @@ lua_integer2str converts an integer to a string. | 540 | @@ lua_integer2str converts an integer to a string. |
540 | */ | 541 | */ |
541 | 542 | ||
543 | |||
544 | /* The following definitions are good for most cases here */ | ||
545 | |||
546 | #define LUA_INTEGER_SCAN "%" LUA_INTEGER_FRMLEN "d" | ||
547 | #define LUA_INTEGER_FMT "%" LUA_INTEGER_FRMLEN "d" | ||
548 | #define lua_integer2str(s,n) sprintf((s), LUA_INTEGER_FMT, (n)) | ||
549 | |||
550 | #define LUA_MAXUNSIGNED (~(LUA_UNSIGNED)0) | ||
551 | #define LUA_MAXINTEGER ((LUA_INTEGER)(LUA_MAXUNSIGNED >> 1)) | ||
552 | #define LUA_MININTEGER ((LUA_INTEGER)~(LUA_MAXUNSIGNED >> 1)) | ||
553 | |||
554 | #define LUAI_UACINT LUA_INTEGER | ||
555 | |||
556 | /* | ||
557 | ** use LUAI_UACINT here to avoid problems with promotions (which can change | ||
558 | ** an unsigned back to a signed type) | ||
559 | */ | ||
560 | #define LUA_UNSIGNED unsigned LUAI_UACINT | ||
561 | |||
562 | |||
563 | /* now the variable definitions */ | ||
564 | |||
542 | #if defined(LUA_INT_INT) /* { int */ | 565 | #if defined(LUA_INT_INT) /* { int */ |
543 | 566 | ||
544 | #define LUA_INTEGER int | 567 | #define LUA_INTEGER int |
@@ -559,23 +582,24 @@ | |||
559 | #define LUA_INTEGER_FRMLEN "ll" | 582 | #define LUA_INTEGER_FRMLEN "ll" |
560 | #endif | 583 | #endif |
561 | 584 | ||
562 | #else /* }{ */ | 585 | #elif defined(LUA_INT_SHORT) /* }{ short int; for tests */ |
563 | 586 | ||
564 | #error "numeric integer type not defined" | 587 | #define LUA_INTEGER short int |
588 | #define LUA_INTEGER_FRMLEN "" | ||
565 | 589 | ||
566 | #endif /* } */ | 590 | #undef LUA_MAXUNSIGNED |
591 | #undef LUAI_UACINT | ||
592 | #undef LUA_INTEGER_SCAN | ||
567 | 593 | ||
594 | #define LUA_MAXUNSIGNED 0xffffu | ||
595 | #define LUAI_UACINT int | ||
596 | #define LUA_INTEGER_SCAN "%hd" | ||
568 | 597 | ||
569 | #define LUA_INTEGER_SCAN "%" LUA_INTEGER_FRMLEN "d" | 598 | #else /* }{ */ |
570 | #define LUA_INTEGER_FMT "%" LUA_INTEGER_FRMLEN "d" | ||
571 | #define lua_integer2str(s,n) sprintf((s), LUA_INTEGER_FMT, (n)) | ||
572 | |||
573 | #define LUA_UNSIGNED unsigned LUA_INTEGER | ||
574 | 599 | ||
575 | #define LUA_MAXINTEGER ((LUA_INTEGER)(~(LUA_UNSIGNED)0 >> 1)) | 600 | #error "numeric integer type not defined" |
576 | #define LUA_MININTEGER ((LUA_INTEGER)~(~(LUA_UNSIGNED)0 >> 1)) | ||
577 | 601 | ||
578 | #define LUAI_UACINT LUA_INTEGER | 602 | #endif /* } */ |
579 | 603 | ||
580 | /* }================================================================== */ | 604 | /* }================================================================== */ |
581 | 605 | ||