pike.git/
src/
builtin_functions.c
Branch:
Tag:
Non-build tags
All tags
No tags
2011-05-15
2011-05-15 03:30:31 by Per Hedbor <ph@opera.com>
1b068aad8fb693741042e5a94a2724ee4daa44b9 (
39
lines) (+
39
/-
0
)
[
Show
|
Annotate
]
Branch:
7.9
The compatibility hash functions and hashstr are only used in builtin_functions.c. Move them there.
220:
/*! @namespace 7.4:: */
+
#define MK_HASHMEM(NAME, TYPE) ATTRIBUTE((const)) \
+
static INLINE size_t NAME(const TYPE *str, ptrdiff_t len, ptrdiff_t maxn) \
+
{ \
+
size_t ret,c; \
+
\
+
ret = len*92873743; \
+
\
+
len = MINIMUM(maxn,len); \
+
for(; len>=0; len--) \
+
{ \
+
c=str++[0]; \
+
ret ^= ( ret << 4 ) + c ; \
+
ret &= 0x7fffffff; \
+
} \
+
return ret; \
+
}
+
+
MK_HASHMEM(simple_hashmem, unsigned char)
+
MK_HASHMEM(simple_hashmem1, p_wchar1)
+
MK_HASHMEM(simple_hashmem2, p_wchar2)
+
/*! @decl int hash(string s) *! @decl int hash(string s, int max) *!
271:
/*! @namespace 7.0:: */
+
ATTRIBUTE((const)) static INLINE size_t hashstr(const unsigned char *str, ptrdiff_t maxn)
+
{
+
size_t ret,c;
+
+
if(!(ret=str++[0]))
+
return ret;
+
for(; maxn>=0; maxn--)
+
{
+
c=str++[0];
+
if(!c) break;
+
ret ^= ( ret << 4 ) + c ;
+
ret &= 0x7fffffff;
+
}
+
+
return ret;
+
}
+
/*! @decl int hash(string s) *! @decl int hash(string s, int max) *!