From 991fdf4044e7712389f8a87f1a990c3d128266cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net> Date: Thu, 25 May 2000 13:08:55 -0700 Subject: [PATCH] some more functions moved Rev: src/builtin.cmod:1.4 Rev: src/builtin_functions.c:1.278 --- src/builtin.cmod | 53 ++++++++++++++++++++++++++++ src/builtin_functions.c | 77 +---------------------------------------- 2 files changed, 54 insertions(+), 76 deletions(-) diff --git a/src/builtin.cmod b/src/builtin.cmod index cede3d048a..e66432331e 100644 --- a/src/builtin.cmod +++ b/src/builtin.cmod @@ -99,6 +99,59 @@ PIKEFUN mapping(1:2) mkmapping(array(1=mixed) a, array(2=mixed) b) RETURN mkmapping(a,b); } +PIKEFUN int string_count(string haystack, string needle) + errname String.count; + optflags OPT_TRY_OPTIMIZE; +{ + int c=0; + int i,j; + + switch (needle->len) + { + case 0: + switch (haystack->len) + { + case 0: c=1; break; /* "" appears one time in "" */ + case 1: c=0; break; /* "" doesn't appear in "x" */ + default: c=haystack->len-1; /* one time between each character */ + } + break; + case 1: + /* maybe optimize? */ + default: + for (i=0; i<haystack->len; i++) + { + j=string_search(haystack,needle,i); + if (j==-1) break; + i=j+needle->len-1; + c++; + } + break; + } + RETURN c; +} + +PIKEFUN int program_implements(program p, program p2) + errname Program.implements; + optflags OPT_TRY_OPTIMIZE; +{ + RETURN implements(p,p2); +} + +PIKEFUN int program_inherits(program p, program p2) + errname Program.inherits; + optflags OPT_TRY_OPTIMIZE; +{ + RETURN !!low_get_storage(p2,p); +} + +PIKEFUN int string_width(string s) + errname String.width; + optflags OPT_TRY_OPTIMIZE; +{ + RETURN 8 * (1 << s->size_shift); +} + void init_builtin(void) { INIT diff --git a/src/builtin_functions.c b/src/builtin_functions.c index b6a5d62a55..082bb88b84 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.277 2000/05/25 05:18:52 hubbe Exp $"); +RCSID("$Id: builtin_functions.c,v 1.278 2000/05/25 20:08:55 hubbe Exp $"); #include "interpret.h" #include "svalue.h" #include "pike_macros.h" @@ -5395,41 +5395,6 @@ void f_enumerate(INT32 args) } } -void f_string_count(INT32 args) -{ - struct pike_string * haystack=NULL; - struct pike_string * needle=NULL; - int c=0; - int i,j; - - get_all_args("String.count",args,"%W%W",&haystack,&needle); - - switch (needle->len) - { - case 0: - switch (haystack->len) - { - case 0: c=1; break; /* "" appears one time in "" */ - case 1: c=0; break; /* "" doesn't appear in "x" */ - default: c=haystack->len-1; /* one time between each character */ - } - break; - case 1: - /* maybe optimize? */ - default: - for (i=0; i<haystack->len; i++) - { - j=string_search(haystack,needle,i); - if (j==-1) break; - i=j+needle->len-1; - c++; - } - break; - } - pop_n_elems(args); - push_int(c); -} - void f_inherit_list(INT32 args) { struct program *p; @@ -5518,29 +5483,6 @@ void f_inherit_list(INT32 args) } -void f_program_implements(INT32 args) -{ - struct program *p,*p2; - int ret; - get_all_args("Program.implements",args,"%p%p",&p,&p2); - - ret=implements(p,p2); - pop_n_elems(args); - push_int(ret); -} - -void f_program_inherits(INT32 args) -{ - struct program *p,*p2; - struct svalue *arg,*arg2; - int ret; - get_all_args("Program.inherits",args,"%p%p",&p,&p2); - - ret=!!low_get_storage(p2,p); - pop_n_elems(args); - push_int(ret); -} - void f_program_defined(INT32 args) { struct program *p; @@ -5607,16 +5549,6 @@ void f_function_defined(INT32 args) } -void f_string_width(INT32 args) -{ - struct pike_string *s; - int ret; - get_all_args("String.width",args,"%W",&s); - ret=s->size_shift; - pop_n_elems(args); - push_int(8 * (1<<ret)); -} - void init_builtin_efuns(void) { struct program *pike___master_program; @@ -6086,8 +6018,6 @@ void init_builtin_efuns(void) ADD_FUNCTION("sort",f_sort, tFuncV(tArr(tSetvar(0, tMix)),tArr(tMix),tArr(tVar(0))), OPT_SIDE_EFFECT); - ADD_FUNCTION("string_count",f_string_count, - tFunc(tString tString,tInt),OPT_TRY_OPTIMIZE); #define tMapStuff(IN,SUB,OUTFUN,OUTSET,OUTPROG,OUTMIX,OUTARR,OUTMAP) \ tOr7( tFuncV(IN tFuncV(SUB,tMix,tSetvar(2,tAny)),tMix,OUTFUN), \ @@ -6163,15 +6093,10 @@ void init_builtin_efuns(void) OPT_TRY_OPTIMIZE); ADD_FUNCTION("inherit_list",f_inherit_list,tFunc(tProgram,tArr(tProgram)),0); - ADD_FUNCTION("program_implements",f_program_implements, - tFunc(tProgram tProgram,tInt),0); - ADD_FUNCTION("program_inherits",f_program_inherits, - tFunc(tProgram tProgram,tInt),0); ADD_FUNCTION("program_defined",f_program_defined, tFunc(tProgram,tString),0); ADD_FUNCTION("function_defined",f_function_defined, tFunc(tFunction,tString),0); - ADD_FUNCTION("string_width",f_string_width,tFunc(tString,tInt),0); #ifdef DEBUG_MALLOC -- GitLab