|
1 /* |
|
2 ** $Id: llimits.h,v 1.69.1.1 2007/12/27 13:02:25 roberto Exp $ |
|
3 ** Limits, basic types, and some other `installation-dependent' definitions |
|
4 ** See Copyright Notice in lua.h |
|
5 */ |
|
6 |
|
7 #ifndef llimits_h |
|
8 #define llimits_h |
|
9 |
|
10 |
|
11 #include <limits.h> |
|
12 #include <stddef.h> |
|
13 |
|
14 |
|
15 #include "lua.h" |
|
16 |
|
17 |
|
18 typedef LUAI_UINT32 lu_int32; |
|
19 |
|
20 typedef LUAI_UMEM lu_mem; |
|
21 |
|
22 typedef LUAI_MEM l_mem; |
|
23 |
|
24 |
|
25 |
|
26 /* chars used as small naturals (so that `char' is reserved for characters) */ |
|
27 typedef unsigned char lu_byte; |
|
28 |
|
29 |
|
30 #define MAX_SIZET ((size_t)(~(size_t)0)-2) |
|
31 |
|
32 #define MAX_LUMEM ((lu_mem)(~(lu_mem)0)-2) |
|
33 |
|
34 |
|
35 #define MAX_INT (INT_MAX-2) /* maximum value of an int (-2 for safety) */ |
|
36 |
|
37 /* |
|
38 ** conversion of pointer to integer |
|
39 ** this is for hashing only; there is no problem if the integer |
|
40 ** cannot hold the whole pointer value |
|
41 */ |
|
42 #define IntPoint(p) ((unsigned int)(lu_mem)(p)) |
|
43 |
|
44 |
|
45 |
|
46 /* type to ensure maximum alignment */ |
|
47 typedef LUAI_USER_ALIGNMENT_T L_Umaxalign; |
|
48 |
|
49 |
|
50 /* result of a `usual argument conversion' over lua_Number */ |
|
51 typedef LUAI_UACNUMBER l_uacNumber; |
|
52 |
|
53 |
|
54 /* internal assertions for in-house debugging */ |
|
55 #ifdef lua_assert |
|
56 |
|
57 #define check_exp(c,e) (lua_assert(c), (e)) |
|
58 #define api_check(l,e) lua_assert(e) |
|
59 |
|
60 #else |
|
61 |
|
62 #define lua_assert(c) ((void)0) |
|
63 #define check_exp(c,e) (e) |
|
64 #define api_check luai_apicheck |
|
65 |
|
66 #endif |
|
67 |
|
68 |
|
69 #ifndef UNUSED |
|
70 #define UNUSED(x) ((void)(x)) /* to avoid warnings */ |
|
71 #endif |
|
72 |
|
73 |
|
74 #ifndef cast |
|
75 #define cast(t, exp) ((t)(exp)) |
|
76 #endif |
|
77 |
|
78 #define cast_byte(i) cast(lu_byte, (i)) |
|
79 #define cast_num(i) cast(lua_Number, (i)) |
|
80 #define cast_int(i) cast(int, (i)) |
|
81 |
|
82 |
|
83 |
|
84 /* |
|
85 ** type for virtual-machine instructions |
|
86 ** must be an unsigned with (at least) 4 bytes (see details in lopcodes.h) |
|
87 */ |
|
88 typedef lu_int32 Instruction; |
|
89 |
|
90 |
|
91 |
|
92 /* maximum stack for a Lua function */ |
|
93 #define MAXSTACK 250 |
|
94 |
|
95 |
|
96 |
|
97 /* minimum size for the string table (must be power of 2) */ |
|
98 #ifndef MINSTRTABSIZE |
|
99 #define MINSTRTABSIZE 32 |
|
100 #endif |
|
101 |
|
102 |
|
103 /* minimum size for string buffer */ |
|
104 #ifndef LUA_MINBUFFER |
|
105 #define LUA_MINBUFFER 32 |
|
106 #endif |
|
107 |
|
108 |
|
109 #ifndef lua_lock |
|
110 #define lua_lock(L) ((void) 0) |
|
111 #define lua_unlock(L) ((void) 0) |
|
112 #endif |
|
113 |
|
114 #ifndef luai_threadyield |
|
115 #define luai_threadyield(L) {lua_unlock(L); lua_lock(L);} |
|
116 #endif |
|
117 |
|
118 |
|
119 /* |
|
120 ** macro to control inclusion of some hard tests on stack reallocation |
|
121 */ |
|
122 #ifndef HARDSTACKTESTS |
|
123 #define condhardstacktests(x) ((void)0) |
|
124 #else |
|
125 #define condhardstacktests(x) x |
|
126 #endif |
|
127 |
|
128 #endif |