pike.git / src / pike_types.c

version» Context lines:

pike.git/src/pike_types.c:1:   /*\   ||| This file a part of Pike, and is copyright by Fredrik Hubinette   ||| Pike is distributed as GPL (General Public License)   ||| See the files COPYING and DISCLAIMER for more information.   \*/   /**/   #include "global.h" - RCSID("$Id: pike_types.c,v 1.114 1999/12/29 17:59:33 grubba Exp $"); + RCSID("$Id: pike_types.c,v 1.115 1999/12/30 21:05:19 mast Exp $");   #include <ctype.h>   #include "svalue.h"   #include "pike_types.h"   #include "stralloc.h"   #include "stuff.h"   #include "array.h"   #include "program.h"   #include "constants.h"   #include "object.h"   #include "multiset.h"
pike.git/src/pike_types.c:3187:    ret=ID_FROM_INT(p,s->subtype)->type;    }    }    reference_shared_string(ret);    return ret;       case T_MULTISET:    case T_ARRAY:    {    struct pike_string *arg_type; - #if 0 +     struct array *a; -  int i; +        if (s->type == T_MULTISET) {    a = s->u.multiset->ind;    } else {    a = s->u.array;    } -  + #if 0 +  int i; +     /* FIXME: Circular structures? */    copy_shared_string(arg_type, zero_type_string);    for (i = 0; i < a->size; i++) {    struct pike_string *tmp1 = get_type_of_svalue(a->item+i);    struct pike_string *tmp2 = or_pike_types(arg_type, tmp1, 1);    free_string(arg_type);    free_string(tmp1);    arg_type = tmp2;    }   #else /* !0 */ -  +  if (a->size)    copy_shared_string(arg_type, mixed_type_string); -  +  else +  copy_shared_string(arg_type, zero_type_string);   #endif /* 0 */    type_stack_mark();    push_unfinished_type(arg_type->str);    free_string(arg_type);    push_type(s->type);    return pop_unfinished_type();    }          case T_MAPPING:    type_stack_mark(); -  +  if (s->u.mapping->size) {    push_type(T_MIXED);    push_type(T_MIXED); -  +  } +  else { +  push_type(T_ZERO); +  push_type(T_ZERO); +  }    push_type(T_MAPPING);    return pop_unfinished_type();       case T_OBJECT:    type_stack_mark();    if(s->u.object->prog)    {   #ifdef AUTO_BIGNUM    if(is_bignum_object(s->u.object))    {