pike.git / src / encode.c

version» Context lines:

pike.git/src/encode.c:18:   #include "error.h"   #include "operators.h"   #include "builtin_functions.h"   #include "module_support.h"   #include "fsort.h"   #include "threads.h"   #include "stuff.h"   #include "version.h"   #include "bignum.h"    - RCSID("$Id: encode.c,v 1.48 1999/12/10 22:40:33 grubba Exp $"); + RCSID("$Id: encode.c,v 1.49 1999/12/11 00:02:14 grubba Exp $");      /* #define ENCODE_DEBUG */      #ifdef ENCODE_DEBUG   #define EDB(X) X   #else   #define EDB(X)   #endif      #ifdef _AIX
pike.git/src/encode.c:329:    break;       case T_STRING:    adddata(val->u.string);    break;       case T_FLOAT:    {    if(val->u.float_number==0.0)    { -  code_entry(T_FLOAT,0,data); -  code_entry(T_FLOAT,0,data); +  /* Backward compatibility! */ +  code_entry(T_TYPE,0,data); +  code_entry(T_TYPE,0,data);    }else{    INT32 x;    int y;    double tmp;       tmp=FREXP((double)val->u.float_number, &y);    x=(INT32)((1<<30)*tmp);    y-=30;   #if 0    while(x && y && !(x&1))    {    x>>=1;    y++;    }   #endif -  code_entry(T_FLOAT,x,data); -  code_entry(T_FLOAT,y,data); +  /* Backward compatibility! */ +  code_entry(T_TYPE,x,data); +  code_entry(T_TYPE,y,data);    }    break;    }       case T_ARRAY:    code_entry(T_ARRAY, val->u.array->size, data);    for(i=0; i<val->u.array->size; i++)    encode_value2(ITEM(val->u.array)+i, data);    break;   
pike.git/src/encode.c:571:       for(d=0;d<NUM_LFUNS;d++)    code_number(p->lfuns[d], data);    }else{    code_entry(val->type, 0,data);    encode_value2(sp-1, data);    }    pop_stack();    break;    } +  case T_TYPE: +  error("Encoding of the type type not supported yet!"); +  break;    }   }      static void free_encode_data(struct encode_data *data)   {    toss_buffer(& data->buf);    free_mapping(data->encoded);   }      void f_encode_value(INT32 args)
pike.git/src/encode.c:824:    case '1':    case '2':    case '3':    case '4':    case '5':    case '6':    case '7':    case '8':    case '9':    case T_FLOAT: +  case T_TYPE:    case T_STRING:    case T_PROGRAM:    case T_MIXED:    case T_ZERO:    case T_VOID:    case T_UNKNOWN:    break;       case T_OBJECT:    {
pike.git/src/encode.c:918:    case T_STRING:    {    struct pike_string *str;    tmp=data->counter;    data->counter.u.integer++;    get_string_data(str, num, data);    push_string(str);    break;    }    +  case T_TYPE: +  /* Used to be T_FLOAT at this code (7). */ +  /* FALL_THROUGH */    case T_FLOAT:    {    INT32 num2=num;       tmp=data->counter;    data->counter.u.integer++;       DECODE("float");    push_float(LDEXP((double)num2, num));    break;
pike.git/src/encode.c:1470:   static void rec_restore_value(char **v, INT32 *l)   {    INT32 t,i;       i=extract_int(v,l);    t=extract_int(v,l);    switch(i)    {    case T_INT: push_int(t); return;    +  case T_TYPE: +  /* Backward compatibility! */ +  /* FALL_THROUGH */    case T_FLOAT:    if(sizeof(INT32) < sizeof(float)) /* FIXME FIXME FIXME FIXME */    error("Float architecture not supported.\n");    push_int(t); /* WARNING! */    sp[-1].type = T_FLOAT;    return;       case T_STRING:    if(t<0) error("Format error, length of string is negative.\n");    if(*l < t) error("Format error, string to short\n");