diff --git a/src/builtin_functions.c b/src/builtin_functions.c index 7f2f82f8546387c1ff6acf6c7e5d3294ca09d20f..76dc3ac7d87c39925c0ab0e06007b3ebc775a9c4 100644 --- a/src/builtin_functions.c +++ b/src/builtin_functions.c @@ -5,7 +5,7 @@ \*/ /**/ #include "global.h" -RCSID("$Id: builtin_functions.c,v 1.229 2000/01/20 23:10:59 noring Exp $"); +RCSID("$Id: builtin_functions.c,v 1.230 2000/01/24 03:03:27 mast Exp $"); #include "interpret.h" #include "svalue.h" #include "pike_macros.h" @@ -549,12 +549,12 @@ void f_has_value(INT32 args) /* Fall-through. */ - case T_STRING: /* Strings are odd. /Noring */ default: stack_swap(); f_values(1); stack_swap(); + case T_STRING: /* Strings are odd. /Noring */ case T_ARRAY: f_search(2); @@ -5691,7 +5691,7 @@ void init_builtin_efuns(void) /* function(:int *) */ ADD_EFUN("rusage", f_rusage,tFunc(tNone,tArr(tInt)),OPT_EXTERNAL_DEPEND); - + /* FIXME: Is the third arg a good idea when the first is a mapping? */ ADD_EFUN("search",f_search, tOr4(tFunc(tStr tStr tOr(tVoid,tInt), @@ -5710,44 +5710,20 @@ void init_builtin_efuns(void) tFunc( tOr(tMapping,tArray) tMix tOr(tVoid,tMix), tZero)))), 0); - /* Same prototype as search, except it only has two arguments. */ ADD_EFUN("has_index",f_has_index, - tOr5(tFunc(tStr tStr tOr(tVoid,tInt), - tInt), - tFunc(tArr(tSetvar(0,tMix)) tVar(0) tOr(tVoid,tInt), - tInt), - tFunc(tMultiset, - tInt), - tFunc(tMap(tSetvar(1,tMix),tSetvar(2,tMix)) tVar(2) tOr(tVoid,tVar(1)), - tInt), - - tIfnot( - tFunc(tArr(tSetvar(0,tMix)) tVar(0) tOr(tVoid,tInt), - tInt), - tIfnot( - tFunc(tMap(tSetvar(1,tMix),tSetvar(2,tMix)) tVar(2) tOr(tVoid,tVar(1)), - tInt), - tFunc( tOr(tMapping,tArray) tMix tOr(tVoid,tMix), tZero)))), + tOr5(tFunc(tStr tIntPos, tInt), + tFunc(tArray tIntPos, tInt), + tFunc(tSet(tSetvar(0,tMix)) tVar(0), tInt), + tFunc(tMap(tSetvar(1,tMix),tMix) tVar(1), tInt), + tFunc(tObj tMix, tInt)), 0); - /* Same prototype as search, except it only has two arguments. */ ADD_EFUN("has_value",f_has_value, - tOr5(tFunc(tStr tStr tOr(tVoid,tInt), - tInt), - tFunc(tArr(tSetvar(0,tMix)) tVar(0) tOr(tVoid,tInt), - tInt), - tFunc(tMultiset, - tInt), - tFunc(tMap(tSetvar(1,tMix),tSetvar(2,tMix)) tVar(2) tOr(tVoid,tVar(1)), - tInt), - - tIfnot( - tFunc(tArr(tSetvar(0,tMix)) tVar(0) tOr(tVoid,tInt), - tInt), - tIfnot( - tFunc(tMap(tSetvar(1,tMix),tSetvar(2,tMix)) tVar(2) tOr(tVoid,tVar(1)), - tInt), - tFunc( tOr(tMapping,tArray) tMix tOr(tVoid,tMix), tZero)))), + tOr5(tFunc(tStr tStr, tInt), + tFunc(tArr(tSetvar(0,tMix)) tVar(0), tInt), + tFunc(tMultiset tInt, tInt), + tFunc(tMap(tMix,tSetvar(1,tMix)) tVar(1), tInt), + tFunc(tObj tMix, tInt)), 0); /* function(float|int,int|void:void) */ @@ -5877,7 +5853,7 @@ void init_builtin_efuns(void) /* function(mixed,void|object:string) */ ADD_EFUN("encode_value", f_encode_value, tFunc(tMix tOr(tVoid,tObj),tStr), OPT_TRY_OPTIMIZE); - + /* function(string,void|object:mixed) */ ADD_EFUN("decode_value", f_decode_value, tFunc(tStr tOr(tVoid,tObj),tMix), OPT_TRY_OPTIMIZE);