pike.git/
src/
builtin_functions.c
Branch:
Tag:
Non-build tags
All tags
No tags
2006-02-02
2006-02-02 10:23:37 by Jonas Wallden <jonasw@roxen.com>
f3306fe0813a6e16da61337936786e8a17a77f74 (
37
lines) (+
35
/-
2
)
[
Show
|
Annotate
]
Branch:
7.4
Backport of hash_value() from 7.6.
Rev: src/builtin_functions.c:1.479
2:
|| This file is part of Pike. For copyright information see COPYRIGHT. || Pike is distributed under GPL, LGPL and MPL. See the file COPYING || for more information.
-
|| $Id: builtin_functions.c,v 1.
478
2006/
01
/
11
04
:
46
:
52
mast
Exp $
+
|| $Id: builtin_functions.c,v 1.
479
2006/
02
/
02
10
:
23
:
37
jonasw
Exp $
*/ #include "global.h"
-
RCSID("$Id: builtin_functions.c,v 1.
478
2006/
01
/
11
04
:
46
:
52
mast
Exp $");
+
RCSID("$Id: builtin_functions.c,v 1.
479
2006/
02
/
02
10
:
23
:
37
jonasw
Exp $");
#include "interpret.h" #include "svalue.h" #include "pike_macros.h"
202:
push_int64(i); }
+
/*! @decl int hash_value (mixed value)
+
*!
+
*! Return a hash value for the argument. It's an integer in the
+
*! native integer range.
+
*!
+
*! The hash will be the same for the same value in the running
+
*! process only (the memory address is typically used as the basis
+
*! for the hash value).
+
*!
+
*! If the value is an object with an @[lfun::__hash], that function
+
*! is called and its result is returned.
+
*!
+
*! @note
+
*! This is the hashing method used by mappings.
+
*!
+
*! @seealso
+
*! @[hash]
+
*/
+
void f_hash_value(INT32 args)
+
{
+
unsigned INT32 h;
+
+
if(!args)
+
SIMPLE_TOO_FEW_ARGS_ERROR("hash_value",1);
+
+
h = hash_svalue (Pike_sp - args);
+
pop_n_elems (args);
+
push_int (h);
+
}
+
/*! @decl mixed copy_value(mixed value) *! *! Copy a value recursively.
7999:
ADD_EFUN("hash_7_0",f_compat_hash, tFunc(tStr tOr(tInt,tVoid),tInt),OPT_TRY_OPTIMIZE);
+
ADD_EFUN("hash_value",f_hash_value,tFunc(tMix,tInt),OPT_TRY_OPTIMIZE);
+
/* function(string|array:int*)|function(mapping(1=mixed:mixed)|multiset(1=mixed):array(1))|function(object|program:string*) */ ADD_EFUN2("indices",f_indices, tOr3(tFunc(tOr(tStr,tArray),tArr(tInt)),