pike.git / src / builtin_functions.c

version» Context lines:

pike.git/src/builtin_functions.c:5212:    types |= 1 << TYPEOF(ITEM(a)[e]);    }    a->type_field = types;       Pike_sp--;    dmalloc_touch_svalue(Pike_sp);    pop_n_elems(args);    push_array(a);   }    +  + /*! @decl int map_all_objects(function(object:void) cb) +  *! @belongs Debug +  *! +  *! Call cb for all objects that currently exist. The callback will +  *! not be called with destructed objects as it's argument. +  *! +  *! Objects might be missed if @[cb] creates new objects or destroys +  *! old ones. +  *! +  *! This function is only intended to be used for debug purposes. +  *! +  *! @returns +  *! The total number of objects +  *! +  *! @seealso +  *! @[next_object()] +  */ + static void f_map_all_objects( INT32 args ) + { +  struct object *o = first_object; +  INT32 total = 0; +  ASSERT_SECURITY_ROOT("_map_all_objects"); +  while( o ) +  { +  struct object *next = o->next; +  if( o->prog ) +  { +  ref_push_object( o ); +  safe_apply_svalue( Pike_sp-2, 1, 1 ); +  pop_stack(); +  } +  total++; +  o = next; +  } +  pop_stack(); +  push_int(total); + } +    /*! @decl void verify_internals()    *! @belongs Debug    *!    *! Perform sanity checks.    *!    *! This function goes through most of the internal Pike structures and    *! generates a fatal error if one of them is found to be out of order.    *! It is only used for debugging.    *!    *! @note
pike.git/src/builtin_functions.c:9923:    ADD_EFUN("set_weak_flag",f_set_weak_flag,    tFunc(tSetvar(1,tMix) tInt,tVar(1)),OPT_SIDE_EFFECT);       ADD_INT_CONSTANT("PIKE_WEAK_INDICES", PIKE_WEAK_INDICES, 0);    ADD_INT_CONSTANT("PIKE_WEAK_VALUES", PIKE_WEAK_VALUES, 0);      /* function(void|object:object) */    ADD_EFUN("next_object",f_next_object,    tFunc(tOr(tVoid,tObj),tObj),OPT_EXTERNAL_DEPEND);    +  ADD_EFUN("_map_all_objects",f_map_all_objects, +  tFunc(tFunction,tIntPos),OPT_EXTERNAL_DEPEND); +    /* function(string:string)|function(object:object)|function(mapping:mapping)|function(multiset:multiset)|function(program:program)|function(array:array) */    ADD_EFUN("_next",f__next,    tOr6(tFunc(tStr,tStr),    tFunc(tObj,tObj),    tFunc(tMapping,tMapping),    tFunc(tMultiset,tMultiset),    tFunc(tPrg(tObj),tPrg(tObj)),    tFunc(tArray,tArray)),OPT_EXTERNAL_DEPEND);      /* function(object:object)|function(mapping:mapping)|function(multiset:multiset)|function(program:program)|function(array:array) */