pike.git / src / pike_types.c

version» Context lines:

pike.git/src/pike_types.c:1383:    return *(Pike_compiler->type_stackp--);   }      /******/      static struct pike_string *internal_parse_type_string(const char **_s)   {    const unsigned char **s = (const unsigned char **)_s;    const unsigned char *p;    struct string_builder tmp; -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    if(**s != '\"') yyerror("Expected '\"'.");    else    ++*s;    init_string_builder(&tmp, 0);    p = *s;    while(1) {    int c;    do {    c = *p++;    } while ((c > '\\') || ((c != '\"') && (c != '\\') && (c != '\n')));
pike.git/src/pike_types.c:1422:    }    return finish_string_builder(&tmp);   }      static void internal_parse_typeA(const char **_s)   {    char buf[80];    unsigned int len;    const unsigned char **s = (const unsigned char **)_s;    -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;       for(len=0;isidchar(EXTRACT_UCHAR(s[0]+len));len++)    {    if(len>=sizeof(buf)-1) {    my_yyerror("Buffer overflow in parse_type(\"%s\") (limit %"PRINTSIZET"d).",    *s, sizeof(buf));    push_type(T_MIXED);    return;    }    buf[len] = s[0][len];
pike.git/src/pike_types.c:1446:       switch(buf[0])    {    case 'z':    if(!strcmp(buf,"zero")) { push_type(T_ZERO); break; }    goto bad_type;       case 'i':    if(!strcmp(buf,"int"))    { -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    if(**s=='(')    {    INT32 min,max;    ++*s; -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    if (**s != '.') {    min=STRTOL((const char *)*s,(char **)s,0); -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    } else {    min = MIN_INT32;    }    if(s[0][0]=='.' && s[0][1]=='.')    s[0]+=2;    else {    yyerror("Missing .. in integer type.");    }    -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    if (**s != ')') {    max=STRTOL((const char *)*s,(char **)s,0); -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    } else {    max = MAX_INT32;    }       if(**s != ')') yyerror("Missing ')' in integer range.");    else    ++*s;    push_int_type(min, max);    }else{    push_int_type(MIN_INT32, MAX_INT32);    }    break;    }    goto bad_type;       case 'f':    if(!strcmp(buf,"function"))    { -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    if(**s == '(')    {    int nargs = 0;    ++*s; -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    while(1)    {    if(**s == ':')    {    push_type(T_VOID);    break;    }    internal_parse_type(_s);    if(**s==',')    {    nargs++;    ++*s; -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    }    else if(s[0][0]=='.' && s[0][1]=='.' && s[0][2]=='.')    {    *s+=3; -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    if(**s != ':') {    yyerror("Missing ':' after ... in function type.");    --*s;    }    break;    } else {    nargs++;    }    }    /* Skip the colon. */
pike.git/src/pike_types.c:1548:    push_type(T_MANY);    }    break;    }    if(!strcmp(buf,"float")) { push_type(T_FLOAT); break; }    goto bad_type;       case 'o':    if(!strcmp(buf,"object"))    { -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    if(**s == '(') /* object({,is,implements} {id,this_program}) */    {    int is = 0, id;    ++*s; -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    if( **s != 'i' )    goto no_is_implements;    ++*s;    if( **s == 's' ) {    ++*s;    if (**s != ' ') {    goto bad_type;    }    is = 1;    ++*s;    } else {    if (strncmp((const char *)*s, "mplements ", 10)) {    goto bad_type;    }    *s += 10;    } -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    no_is_implements:    if( !**s )    goto bad_type;    if (!strncmp((const char *)*s, "this_program", 12)) {    id = Pike_compiler->new_program->id;    *s += 12;    } else {    id = atoi( (const char *)*s );    while( **s >= '0' && **s <= '9' )    ++*s;    } -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    if( !**s || **s != ')' )    goto bad_type;    ++*s;    push_object_type(is, id);    }    else    push_object_type(0, 0);    break;    }    goto bad_type;
pike.git/src/pike_types.c:1606:    if(!strcmp(buf,"program")) {    push_object_type(0, 0);    push_type(T_PROGRAM);    break;    }    goto bad_type;          case 's':    if(!strcmp(buf,"string")) { -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    if(**s == '(')    {    INT32 min,max;    ++*s; -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    if (**s != '.') {    min=STRTOL((const char *)*s,(char **)s,0); -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    } else {    min = MIN_INT32;    }    if(s[0][0]=='.' && s[0][1]=='.')    s[0]+=2;    else {    yyerror("Missing .. in integer type.");    }    -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    if (**s != ')') {    max=STRTOL((const char *)*s,(char **)s,0); -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    } else {    max = MAX_INT32;    }    if(**s != ')') yyerror("Missing ')' in string width.");    else    ++*s;    push_int_type(min, max);    } else {    push_finished_type(int_type_string);    }
pike.git/src/pike_types.c:1650:    }    goto bad_type;       case 'v':    if(!strcmp(buf,"void")) { push_type(T_VOID); break; }    goto bad_type;       case 't':    if (!strcmp(buf,"tuple"))    { -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    if(**s == '(')    {    ++*s;    internal_parse_type(_s);    if(**s != ',') yyerror("Expected ','.");    else    ++*s;    internal_parse_type(_s);    if(**s != ')') yyerror("Expected ')'.");    else
pike.git/src/pike_types.c:1677:    break;    }    /* FIXME: Handle type(T) */    if(!strcmp(buf,"type")) { push_type(T_MIXED); push_type(T_TYPE); break; }    goto bad_type;       case 'm':    if(!strcmp(buf,"mixed")) { push_type(T_MIXED); break; }    if(!strcmp(buf,"mapping"))    { -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    if(**s == '(')    {    ++*s;    internal_parse_type(_s);    if(**s != ':') yyerror("Expected ':'.");    else    ++*s;    internal_parse_type(_s);    if(**s != ')') yyerror("Expected ')'.");    else    ++*s;    }else{    push_type(T_MIXED);    push_type(T_MIXED);    }    push_reverse_type(T_MAPPING);    break;    }    if(!strcmp(buf,"multiset"))    { -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    if(**s == '(')    {    ++*s;    internal_parse_type(_s);    if(**s != ')') yyerror("Expected ')'.");    else    ++*s;    }else{    push_type(T_MIXED);    }
pike.git/src/pike_types.c:1721:    }    goto bad_type;       case 'u':    if(!strcmp(buf,"unknown")) { push_type(PIKE_T_UNKNOWN); break; }    goto bad_type;       case 'a':    if(!strcmp(buf,"array"))    { -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    if(**s == '(')    {    ++*s;    internal_parse_type(_s);    if(**s != ')') yyerror("Expected ')'.");    else    ++*s;    }else{    push_type(T_MIXED);    }    push_type(T_ARRAY);    break;    }    goto bad_type;       case '_':    if (!strcmp(buf, "__attribute__")) { -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    if(**s == '(')    {    struct pike_string *attr;    ++*s;    attr = internal_parse_type_string(_s); -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    if(**s != ',') yyerror("Expected ','.");    else    ++*s;    internal_parse_type(_s);    if(**s != ')') yyerror("Expected ')'.");    else    ++*s;    push_type_attribute(attr);    free_string(attr);    }else{    push_type(T_MIXED);    }    break;    } else if (!strcmp(buf, "__deprecated__")) {    struct pike_string *deprecated_string;    MAKE_CONST_STRING(deprecated_string, "deprecated"); -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    if(**s == '(')    {    ++*s;    internal_parse_type(_s);    if(**s != ')') yyerror("Expected ')'.");    else    ++*s;    }else{    push_type(T_MIXED);    }
pike.git/src/pike_types.c:1791:    case '2':    case '3':    case '4':    case '5':    case '6':    case '7':    case '8':    case '9':    if(atoi(buf)<10)    { -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;    if(**s=='=')    {    ++*s;    internal_parse_type(_s);    push_assign_type(buf[0]);    }else{    push_type(buf[0]);    }    break;    }       default:    bad_type:    push_type(T_MIXED);    my_yyerror("Couldn't parse type. (%s).", buf);    }    -  while(ISSPACE(**s)) ++*s; +  while(isspace(**s)) ++*s;   }         static void internal_parse_typeB(const char **s)   { -  while(ISSPACE(EXTRACT_UCHAR(*s))) ++*s; +  while(isspace(EXTRACT_UCHAR(*s))) ++*s;    switch(**s)    {    case '!':    ++*s;    internal_parse_typeB(s);    push_type(T_NOT);    break;       case '(':    ++*s;    internal_parse_type(s); -  while(ISSPACE(EXTRACT_UCHAR(*s))) ++*s; +  while(isspace(EXTRACT_UCHAR(*s))) ++*s;    if(**s != ')') {    yyerror("Expected ')' in type.");    }    ++*s;    break;       default:       internal_parse_typeA(s);    }   }      static void internal_parse_typeCC(const char **s)   {    internal_parse_typeB(s);    -  while(ISSPACE(EXTRACT_UCHAR(*s))) ++*s; +  while(isspace(EXTRACT_UCHAR(*s))) ++*s;       while(**s == '*')    {    ++*s; -  while(ISSPACE(EXTRACT_UCHAR(*s))) ++*s; +  while(isspace(EXTRACT_UCHAR(*s))) ++*s;    push_type(T_ARRAY);    }   }      static void internal_parse_typeC(const char **s)   {    internal_parse_typeCC(s);       if(**s == '&')    {