Mercurial > mm7
comparison lib/lua/lua-5.2.2/lmem.h @ 1866:41cc4dd3c122
Lua 5.2.2 added.
author | Nomad |
---|---|
date | Wed, 16 Oct 2013 13:34:26 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
1848:3b39b70e8e93 | 1866:41cc4dd3c122 |
---|---|
1 /* | |
2 ** $Id: lmem.h,v 1.40 2013/02/20 14:08:21 roberto Exp $ | |
3 ** Interface to Memory Manager | |
4 ** See Copyright Notice in lua.h | |
5 */ | |
6 | |
7 #ifndef lmem_h | |
8 #define lmem_h | |
9 | |
10 | |
11 #include <stddef.h> | |
12 | |
13 #include "llimits.h" | |
14 #include "lua.h" | |
15 | |
16 | |
17 /* | |
18 ** This macro avoids the runtime division MAX_SIZET/(e), as 'e' is | |
19 ** always constant. | |
20 ** The macro is somewhat complex to avoid warnings: | |
21 ** +1 avoids warnings of "comparison has constant result"; | |
22 ** cast to 'void' avoids warnings of "value unused". | |
23 */ | |
24 #define luaM_reallocv(L,b,on,n,e) \ | |
25 (cast(void, \ | |
26 (cast(size_t, (n)+1) > MAX_SIZET/(e)) ? (luaM_toobig(L), 0) : 0), \ | |
27 luaM_realloc_(L, (b), (on)*(e), (n)*(e))) | |
28 | |
29 #define luaM_freemem(L, b, s) luaM_realloc_(L, (b), (s), 0) | |
30 #define luaM_free(L, b) luaM_realloc_(L, (b), sizeof(*(b)), 0) | |
31 #define luaM_freearray(L, b, n) luaM_reallocv(L, (b), n, 0, sizeof((b)[0])) | |
32 | |
33 #define luaM_malloc(L,s) luaM_realloc_(L, NULL, 0, (s)) | |
34 #define luaM_new(L,t) cast(t *, luaM_malloc(L, sizeof(t))) | |
35 #define luaM_newvector(L,n,t) \ | |
36 cast(t *, luaM_reallocv(L, NULL, 0, n, sizeof(t))) | |
37 | |
38 #define luaM_newobject(L,tag,s) luaM_realloc_(L, NULL, tag, (s)) | |
39 | |
40 #define luaM_growvector(L,v,nelems,size,t,limit,e) \ | |
41 if ((nelems)+1 > (size)) \ | |
42 ((v)=cast(t *, luaM_growaux_(L,v,&(size),sizeof(t),limit,e))) | |
43 | |
44 #define luaM_reallocvector(L, v,oldn,n,t) \ | |
45 ((v)=cast(t *, luaM_reallocv(L, v, oldn, n, sizeof(t)))) | |
46 | |
47 LUAI_FUNC l_noret luaM_toobig (lua_State *L); | |
48 | |
49 /* not to be called directly */ | |
50 LUAI_FUNC void *luaM_realloc_ (lua_State *L, void *block, size_t oldsize, | |
51 size_t size); | |
52 LUAI_FUNC void *luaM_growaux_ (lua_State *L, void *block, int *size, | |
53 size_t size_elem, int limit, | |
54 const char *what); | |
55 | |
56 #endif | |
57 |