diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1999-10-11 14:13:42 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 1999-10-11 14:13:42 -0200 |
| commit | c5fee7615e979e3a39af44614f82938519dedb68 (patch) | |
| tree | 831ad8d88aba1d15e6337838d11e0234bd2e96d6 /lobject.h | |
| parent | cca78b5c71f4def3d3d80c71f690f8380b3cb35e (diff) | |
| download | lua-c5fee7615e979e3a39af44614f82938519dedb68.tar.gz lua-c5fee7615e979e3a39af44614f82938519dedb68.tar.bz2 lua-c5fee7615e979e3a39af44614f82938519dedb68.zip | |
new implementation for string hashing, with chaining.
Diffstat (limited to 'lobject.h')
| -rw-r--r-- | lobject.h | 21 |
1 files changed, 12 insertions, 9 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lobject.h,v 1.30 1999/09/06 20:34:18 roberto Exp roberto $ | 2 | ** $Id: lobject.h,v 1.31 1999/10/04 17:51:04 roberto Exp roberto $ |
| 3 | ** Type definitions for Lua objects | 3 | ** Type definitions for Lua objects |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -14,13 +14,15 @@ | |||
| 14 | 14 | ||
| 15 | 15 | ||
| 16 | #ifdef DEBUG | 16 | #ifdef DEBUG |
| 17 | #include "lauxlib.h" | 17 | #ifdef NDEBUG |
| 18 | #define LUA_INTERNALERROR(s) \ | 18 | #undef NDEBUG |
| 19 | luaL_verror("INTERNAL ERROR - %s [%s:%d]",(s),__FILE__,__LINE__) | 19 | #endif |
| 20 | #define LUA_ASSERT(c,s) { if (!(c)) LUA_INTERNALERROR(s); } | 20 | #include <assert.h> |
| 21 | #define LUA_INTERNALERROR(s) assert(0) | ||
| 22 | #define LUA_ASSERT(c,s) assert(c) | ||
| 21 | #else | 23 | #else |
| 22 | #define LUA_INTERNALERROR(s) /* empty */ | 24 | #define LUA_INTERNALERROR(s) /* empty */ |
| 23 | #define LUA_ASSERT(c,s) /* empty */ | 25 | #define LUA_ASSERT(c,s) /* empty */ |
| 24 | #endif | 26 | #endif |
| 25 | 27 | ||
| 26 | 28 | ||
| @@ -90,8 +92,8 @@ typedef struct TObject { | |||
| 90 | */ | 92 | */ |
| 91 | 93 | ||
| 92 | typedef struct TaggedString { | 94 | typedef struct TaggedString { |
| 93 | struct TaggedString *next; | 95 | struct TaggedString *nexthash; /* chain hash table */ |
| 94 | int marked; | 96 | struct TaggedString *nextglobal; /* chain global variables */ |
| 95 | unsigned long hash; | 97 | unsigned long hash; |
| 96 | int constindex; /* hint to reuse constants (= -1 if this is a userdata) */ | 98 | int constindex; /* hint to reuse constants (= -1 if this is a userdata) */ |
| 97 | union { | 99 | union { |
| @@ -104,6 +106,7 @@ typedef struct TaggedString { | |||
| 104 | void *v; /* if this is a userdata, here is its value */ | 106 | void *v; /* if this is a userdata, here is its value */ |
| 105 | } d; | 107 | } d; |
| 106 | } u; | 108 | } u; |
| 109 | unsigned char marked; | ||
| 107 | char str[1]; /* \0 byte already reserved */ | 110 | char str[1]; /* \0 byte already reserved */ |
| 108 | } TaggedString; | 111 | } TaggedString; |
| 109 | 112 | ||
