pike.git / src / array.c

version» Context lines:

pike.git/src/array.c:517:    current_array_p = ITEM(v);    current_cmpfun = fun;    fsort((char *)current_order,    v->size,    sizeof(INT32),    (fsortfun)internal_cmpfun);       return current_order;   }    -  +    static int set_svalue_cmpfun(struct svalue *a, struct svalue *b)   {    INT32 tmp;    if(tmp=(a->type - b->type)) return tmp;    switch(a->type)    {    case T_FLOAT:    if(a->u.float_number < b->u.float_number) return -1;    if(a->u.float_number > b->u.float_number) return 1;    return 0;
pike.git/src/array.c:598:    if(a==b) return 0;    if(!a->u.array->size) return -1;    if(!b->u.array->size) return 1;    return alpha_svalue_cmpfun(ITEM(a->u.array), ITEM(b->u.array));       default:    return set_svalue_cmpfun(a,b);    }   }    + void sort_array_destructively(struct array *v) + { +  if(!v->size) return; +  fsort((char *)ITEM(v), +  v->size, +  sizeof(struct svalue), +  (fsortfun)alpha_svalue_cmpfun); + } +  +  +    /*    * return an 'order' suitable for making mappings, lists other sets    */   INT32 *get_set_order(struct array *a)   {    return get_order(a, set_svalue_cmpfun);   }      /*    * return an 'order' suitable for switches.
pike.git/src/array.c:1110:    }else{    node *ret=0;    for(e=0; e<a->size; e++)    ret=mknode(F_ARG_LIST,ret,mksvaluenode(ITEM(a)+e));    return mkefuncallnode("aggregate",ret);    }   }      void push_array_items(struct array *a)   { -  if(sp + a->size >= &evaluator_stack[EVALUATOR_STACK_SIZE]) -  error("Array does not fit on stack.\n"); +  check_stack(a->size);    check_array_for_destruct(a);    if(a->refs == 1)    {    MEMCPY(sp,ITEM(a),sizeof(struct svalue)*a->size);    sp += a->size;    a->size=0;    free_array(a); -  return; +     }else{    assign_svalues_no_free(sp, ITEM(a), a->size, a->type_field); -  } +     sp += a->size;    free_array(a);    } -  + }      void describe_array_low(struct array *a, struct processing *p, int indent)   {    INT32 e,d;    indent += 2;       for(e=0; e<a->size; e++)    {    if(e) my_strcat(",\n");    for(d=0; d<indent; d++) my_putchar(' ');
pike.git/src/array.c:1204:    a=allocate_array_no_init(args,0);    MEMCPY((char *)ITEM(a),(char *)(sp-args),args*sizeof(struct svalue));    a->type_field=BIT_MIXED;    sp-=args;    return a;   }      struct array *explode(struct lpc_string *str,    struct lpc_string *del)   { -  INT32 e,d; +  INT32 e;    struct array *ret;    char *s, *end, *tmp;       if(!del->len)    {    ret=allocate_array_no_init(str->len,0); -  ret->type_field |= BIT_STRING; +     for(e=0;e<str->len;e++)    {    ITEM(ret)[e].type=T_STRING;    ITEM(ret)[e].u.string=make_shared_binary_string(str->str+e,1);    }    }else{ -  +  struct mem_searcher searcher;       s=str->str;    end=s+str->len;    e=0;    -  while((s=MEMMEM(del->str, del->len, s, end-s))) -  { -  s+=del->len; -  e++; -  } +  init_memsearch(&searcher, del->str, del->len, str->len);    -  ret=allocate_array_no_init(e+1,0); -  ret->type_field |= BIT_STRING; -  -  s=str->str; -  for(d=0;d<e;d++) +  while(tmp=memory_search(&searcher, s, end-s))    { -  tmp=MEMMEM((char *)(del->str), del->len, (char *)s, end-s); -  ITEM(ret)[d].type=T_STRING; -  ITEM(ret)[d].u.string=make_shared_binary_string(s,tmp-s); +  check_stack(1); +  push_string(make_shared_binary_string(s, tmp-s));    s=tmp+del->len; -  +  e++;    } -  ITEM(ret)[d].type=T_STRING; -  ITEM(ret)[d].u.string=make_shared_binary_string(s,end-s); +  check_stack(1); +  push_string(make_shared_binary_string(s, end-s)); +  e++; +  ret=aggregate_array(e);    } -  +  ret->type_field=BIT_STRING;    return ret;   }      struct lpc_string *implode(struct array *a,struct lpc_string *del)   {    INT32 len,e, inited;    char *r;    struct lpc_string *ret,*tmp;       len=0;
pike.git/src/array.c:1307:       ret=allocate_array_no_init(a->size,0);    doing.pointer_b=(void *)ret;       copy_svalues_recursively_no_free(ITEM(ret),ITEM(a),a->size,&doing);    return ret;   }      void apply_array(struct array *a, INT32 args)   { -  struct svalue *argp; +     INT32 e;    struct array *ret; -  argp=sp-args; +  INT32 argp; +  +  argp=sp-args - evaluator_stack; +  +  check_stack(a->size + args + 1); +     for(e=0;e<a->size;e++)    { -  assign_svalues_no_free(sp,argp,args,BIT_MIXED); +  assign_svalues_no_free(sp,evaluator_stack+argp,args,BIT_MIXED);    sp+=args;    apply_svalue(ITEM(a)+e,args);    }    ret=aggregate_array(a->size);    pop_n_elems(args);    push_array(ret);   }      struct array *reverse_array(struct array *a)   {