pike.git
/
src
/
operators.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/operators.c:1515:
return; } } } } switch(TYPEOF(sp[-args])) { case T_PROGRAM: case T_FUNCTION:
-
SIMPLE_
BAD_
ARG_ERROR("`+", 1,
+
SIMPLE_ARG_
TYPE_
ERROR("`+", 1,
"string|object|int|float|array|mapping|multiset"); } bad_arg_error("`+", sp-args, args, 1, "string|object|int|float|array|mapping|multiset", sp-args, "Incompatible types\n"); return; /* compiler hint */ case BIT_STRING: { struct pike_string *r;
pike.git/src/operators.c:2387:
sp[-2].u.string=ret; sp--; return; } /* FIXME: Support types? */ default: { int args = 2;
-
SIMPLE_
BAD_
ARG_ERROR("`-", 1,
+
SIMPLE_ARG_
TYPE_
ERROR("`-", 1,
"int|float|string|mapping|multiset|array|object"); } } } /*! @decl mixed `-(mixed arg1) *! @decl mixed `-(mixed arg1, mixed arg2, mixed ... extras) *! @decl mixed `-(object arg1, mixed arg2) *! @decl mixed `-(mixed arg1, object arg2) *! @decl int `-(int arg1, int arg2)
pike.git/src/operators.c:2547:
else if (((TYPEOF(sp[-1]) == T_TYPE) || (TYPEOF(sp[-1]) == T_PROGRAM) || (TYPEOF(sp[-1]) == T_FUNCTION)) && ((TYPEOF(sp[-2]) == T_TYPE) || (TYPEOF(sp[-2]) == T_PROGRAM) || (TYPEOF(sp[-2]) == T_FUNCTION))) { if (TYPEOF(sp[-2]) != T_TYPE) { struct program *p = program_from_svalue(sp - 2); if (!p) { int args = 2;
-
SIMPLE_
BAD_
ARG_ERROR("`&", 1, "type");
+
SIMPLE_ARG_
TYPE_
ERROR("`&", 1, "type");
} type_stack_mark(); push_object_type(0, p->id); free_svalue(sp - 2); SET_SVAL(sp[-2], T_TYPE, 0, type, pop_unfinished_type()); } if (TYPEOF(sp[-1]) != T_TYPE) { struct program *p = program_from_svalue(sp - 1); if (!p) { int args = 2;
-
SIMPLE_
BAD_
ARG_ERROR("`&", 2, "type");
+
SIMPLE_ARG_
TYPE_
ERROR("`&", 2, "type");
} type_stack_mark(); push_object_type(0, p->id); free_svalue(sp - 1); SET_SVAL(sp[-1], T_TYPE, 0, type, pop_unfinished_type()); } } else if (TYPEOF(sp[-2]) == T_MAPPING) switch (TYPEOF(sp[-1])) {
pike.git/src/operators.c:2605:
m=merge_mapping_array_ordered(sp[-2].u.mapping, sp[-1].u.array, PIKE_ARRAY_OP_AND); pop_n_elems(2); push_mapping(m); return; } default: { int args = 2;
-
SIMPLE_
BAD_
ARG_ERROR("`&", 2, "mapping");
+
SIMPLE_ARG_
TYPE_
ERROR("`&", 2, "mapping");
} } else { int args = 2;
-
SIMPLE_
BAD_
ARG_ERROR("`&", 2, get_name_of_type(TYPEOF(sp[-2])));
+
SIMPLE_ARG_
TYPE_
ERROR("`&", 2, get_name_of_type(TYPEOF(sp[-2])));
} } switch(TYPEOF(sp[-2])) { case T_OBJECT: CALL_OPERATOR(LFUN_AND,2); break; case T_INT:
pike.git/src/operators.c:2680:
case T_PROGRAM: { struct program *p; struct pike_type *a; struct pike_type *b; struct pike_type *t; p = program_from_svalue(sp - 2); if (!p) { int args = 2;
-
SIMPLE_
BAD_
ARG_ERROR("`&", 1, "type");
+
SIMPLE_ARG_
TYPE_
ERROR("`&", 1, "type");
} type_stack_mark(); push_object_type(0, p->id); a = pop_unfinished_type(); p = program_from_svalue(sp - 1); if (!p) { int args = 2;
-
SIMPLE_
BAD_
ARG_ERROR("`&", 2, "type");
+
SIMPLE_ARG_
TYPE_
ERROR("`&", 2, "type");
} type_stack_mark(); push_object_type(0, p->id); b = pop_unfinished_type(); t = and_pike_types(a, b); pop_n_elems(2); push_type_value(t); free_type(a);
pike.git/src/operators.c:2889:
if(call_lfun(LFUN_OR, LFUN_ROR)) { return; } else if (((TYPEOF(sp[-1]) == T_TYPE) || (TYPEOF(sp[-1]) == T_PROGRAM) || (TYPEOF(sp[-1]) == T_FUNCTION)) && ((TYPEOF(sp[-2]) == T_TYPE) || (TYPEOF(sp[-2]) == T_PROGRAM) || (TYPEOF(sp[-2]) == T_FUNCTION))) { if (TYPEOF(sp[-2]) != T_TYPE) { struct program *p = program_from_svalue(sp - 2); if (!p) { int args = 2;
-
SIMPLE_
BAD_
ARG_ERROR("`|", 1, "type");
+
SIMPLE_ARG_
TYPE_
ERROR("`|", 1, "type");
} type_stack_mark(); push_object_type(0, p->id); free_svalue(sp - 2); SET_SVAL(sp[-2], T_TYPE, 0, type, pop_unfinished_type()); } if (TYPEOF(sp[-1]) != T_TYPE) { struct program *p = program_from_svalue(sp - 1); if (!p) { int args = 2;
-
SIMPLE_
BAD_
ARG_ERROR("`|", 2, "type");
+
SIMPLE_ARG_
TYPE_
ERROR("`|", 2, "type");
} type_stack_mark(); push_object_type(0, p->id); free_svalue(sp - 1); SET_SVAL(sp[-1], T_TYPE, 0, type, pop_unfinished_type()); } } else { int args = 2;
-
SIMPLE_
BAD_
ARG_ERROR("`|", 2, get_name_of_type(TYPEOF(sp[-2])));
+
SIMPLE_ARG_
TYPE_
ERROR("`|", 2, get_name_of_type(TYPEOF(sp[-2])));
} } switch(TYPEOF(sp[-2])) { case T_OBJECT: CALL_OPERATOR(LFUN_OR,2); break; case T_INT:
pike.git/src/operators.c:2993:
case T_PROGRAM: { struct program *p; struct pike_type *a; struct pike_type *b; struct pike_type *t; p = program_from_svalue(sp - 2); if (!p) { int args = 2;
-
SIMPLE_
BAD_
ARG_ERROR("`|", 1, "type");
+
SIMPLE_ARG_
TYPE_
ERROR("`|", 1, "type");
} type_stack_mark(); push_object_type(0, p->id); a = pop_unfinished_type(); p = program_from_svalue(sp - 1); if (!p) { int args = 2;
-
SIMPLE_
BAD_
ARG_ERROR("`|", 2, "type");
+
SIMPLE_ARG_
TYPE_
ERROR("`|", 2, "type");
} type_stack_mark(); push_object_type(0, p->id); b = pop_unfinished_type(); t = or_pike_types(a, b, 0); pop_n_elems(2); push_type_value(t); free_type(a);
pike.git/src/operators.c:3145:
if(call_lfun(LFUN_XOR, LFUN_RXOR)) { return; } else if (((TYPEOF(sp[-1]) == T_TYPE) || (TYPEOF(sp[-1]) == T_PROGRAM) || (TYPEOF(sp[-1]) == T_FUNCTION)) && ((TYPEOF(sp[-2]) == T_TYPE) || (TYPEOF(sp[-2]) == T_PROGRAM) || (TYPEOF(sp[-2]) == T_FUNCTION))) { if (TYPEOF(sp[-2]) != T_TYPE) { struct program *p = program_from_svalue(sp - 2); if (!p) { int args = 2;
-
SIMPLE_
BAD_
ARG_ERROR("`^", 1, "type");
+
SIMPLE_ARG_
TYPE_
ERROR("`^", 1, "type");
} type_stack_mark(); push_object_type(0, p->id); free_svalue(sp - 2); SET_SVAL(sp[-2], T_TYPE, 0, type, pop_unfinished_type()); } if (TYPEOF(sp[-1]) != T_TYPE) { struct program *p = program_from_svalue(sp - 1); if (!p) { int args = 2;
-
SIMPLE_
BAD_
ARG_ERROR("`^", 2, "type");
+
SIMPLE_ARG_
TYPE_
ERROR("`^", 2, "type");
} type_stack_mark(); push_object_type(0, p->id); free_svalue(sp - 1); SET_SVAL(sp[-1], T_TYPE, 0, type, pop_unfinished_type()); } } else { int args = 2;
-
SIMPLE_
BAD_
ARG_ERROR("`^", 2, get_name_of_type(TYPEOF(sp[-2])));
+
SIMPLE_ARG_
TYPE_
ERROR("`^", 2, get_name_of_type(TYPEOF(sp[-2])));
} } switch(TYPEOF(sp[-2])) { case T_OBJECT: CALL_OPERATOR(LFUN_XOR,2); break; case T_INT:
pike.git/src/operators.c:3222:
} case T_FUNCTION: case T_PROGRAM: { struct program *p; p = program_from_svalue(sp - 1); if (!p) { int args = 2;
-
SIMPLE_
BAD_
ARG_ERROR("`^", 2, "type");
+
SIMPLE_ARG_
TYPE_
ERROR("`^", 2, "type");
} type_stack_mark(); push_object_type(0, p->id); pop_stack(); push_type_value(pop_unfinished_type()); stack_swap(); p = program_from_svalue(sp - 1); if (!p) { int args = 2; stack_swap();
-
SIMPLE_
BAD_
ARG_ERROR("`^", 1, "type");
+
SIMPLE_ARG_
TYPE_
ERROR("`^", 1, "type");
} type_stack_mark(); push_object_type(0, p->id); pop_stack(); push_type_value(pop_unfinished_type()); } /* FALL_THROUGH */ case T_TYPE: { /* a ^ b == (a&~b)|(~a&b) */
pike.git/src/operators.c:3383:
} PMOD_EXPORT void o_lsh(void) { int args = 2; if ((TYPEOF(sp[-2]) == T_OBJECT) || (TYPEOF(sp[-1]) == T_OBJECT)) goto call_lfun; if ((TYPEOF(sp[-1]) != T_INT) || (sp[-1].u.integer < 0)) {
-
SIMPLE_
BAD_
ARG_ERROR("`<<", 2, "int(0..)|object");
+
SIMPLE_ARG_
TYPE_
ERROR("`<<", 2, "int(0..)|object");
} switch(TYPEOF(sp[-2])) { case T_INT: if (!INT_TYPE_LSH_OVERFLOW(sp[-2].u.integer, sp[-1].u.integer)) break; convert_stack_top_to_bignum(); /* FALL_THROUGH */ case T_OBJECT: call_lfun: if(call_lfun(LFUN_LSH, LFUN_RLSH)) return; if(TYPEOF(sp[-2]) != T_INT)
-
SIMPLE_
BAD_
ARG_ERROR("`<<", 1, "int|float|object");
-
SIMPLE_
BAD_
ARG_ERROR("`<<", 2, "int(0..)|object");
+
SIMPLE_ARG_
TYPE_
ERROR("`<<", 1, "int|float|object");
+
SIMPLE_ARG_
TYPE_
ERROR("`<<", 2, "int(0..)|object");
break; case T_FLOAT: sp--; sp[-1].u.float_number = ldexp(sp[-1].u.float_number, sp->u.integer); return; default:
-
SIMPLE_
BAD_
ARG_ERROR("`<<", 1, "int|float|object");
+
SIMPLE_ARG_
TYPE_
ERROR("`<<", 1, "int|float|object");
break; } sp--; SET_SVAL(sp[-1], T_INT, NUMBER_NUMBER, integer, sp[-1].u.integer << sp->u.integer); } /*! @decl int `<<(int arg1, int(0..) arg2) *! @decl mixed `<<(object arg1, int(0..)|object arg2)
pike.git/src/operators.c:3474:
} PMOD_EXPORT void o_rsh(void) { int args = 2; if ((TYPEOF(sp[-2]) == T_OBJECT) || (TYPEOF(sp[-1]) == T_OBJECT)) { if(call_lfun(LFUN_RSH, LFUN_RRSH)) return; if(TYPEOF(sp[-2]) != T_INT)
-
SIMPLE_
BAD_
ARG_ERROR("`>>", 1, "int|object");
-
SIMPLE_
BAD_
ARG_ERROR("`>>", 2, "int(0..)|object");
+
SIMPLE_ARG_
TYPE_
ERROR("`>>", 1, "int|object");
+
SIMPLE_ARG_
TYPE_
ERROR("`>>", 2, "int(0..)|object");
} if ((TYPEOF(sp[-1]) != T_INT) || (sp[-1].u.integer < 0)) {
-
SIMPLE_
BAD_
ARG_ERROR("`>>", 2, "int(0..)|object");
+
SIMPLE_ARG_
TYPE_
ERROR("`>>", 2, "int(0..)|object");
} sp--; switch(TYPEOF(sp[-1])) { case T_INT: if( INT_TYPE_RSH_OVERFLOW(sp[-1].u.integer, sp->u.integer) ) { if (sp[-1].u.integer < 0) { SET_SVAL(sp[-1], T_INT, NUMBER_NUMBER, integer, -1); } else { SET_SVAL(sp[-1], T_INT, NUMBER_NUMBER, integer, 0); } return; } break; case T_FLOAT: sp[-1].u.float_number = ldexp(sp[-1].u.float_number, -sp->u.integer); return; default:
-
SIMPLE_
BAD_
ARG_ERROR("`>>", 1, "int|float|object");
+
SIMPLE_ARG_
TYPE_
ERROR("`>>", 1, "int|float|object");
break; } SET_SVAL(sp[-1], T_INT, NUMBER_NUMBER, integer, sp[-1].u.integer >> sp->u.integer); } /*! @decl int `>>(int arg1, int(0..) arg2) *! @decl mixed `>>(object arg1, int(0..)|object arg2) *! @decl mixed `>>(int arg1, object arg2)
pike.git/src/operators.c:3567:
{ int args = 2; switch(TWO_TYPES(TYPEOF(sp[-2]), TYPEOF(sp[-1]))) { case TWO_TYPES(T_ARRAY, T_INT): { struct array *ret; struct svalue *pos; INT32 e; if(sp[-1].u.integer < 0)
-
SIMPLE_
BAD_
ARG_ERROR("`*", 2, "int(0..)");
+
SIMPLE_ARG_
TYPE_
ERROR("`*", 2, "int(0..)");
ret=allocate_array(sp[-2].u.array->size * sp[-1].u.integer); pos=ret->item; for(e=0;e<sp[-1].u.integer;e++,pos+=sp[-2].u.array->size) assign_svalues_no_free(pos, sp[-2].u.array->item, sp[-2].u.array->size, sp[-2].u.array->type_field); ret->type_field=sp[-2].u.array->type_field; pop_n_elems(2); push_array(ret); return; } case TWO_TYPES(T_ARRAY, T_FLOAT): { struct array *src; struct array *ret; struct svalue *pos; ptrdiff_t asize, delta; if(sp[-1].u.float_number < 0)
-
SIMPLE_
BAD_
ARG_ERROR("`*", 2, "float(0..)");
+
SIMPLE_ARG_
TYPE_
ERROR("`*", 2, "float(0..)");
src = sp[-2].u.array; delta = src->size; asize = (ptrdiff_t)floor(delta * sp[-1].u.float_number + 0.5); ret = allocate_array(asize); pos = ret->item; if (asize > delta) { ret->type_field = src->type_field; assign_svalues_no_free(pos, src->item,
pike.git/src/operators.c:3632:
} case TWO_TYPES(T_STRING, T_FLOAT): { struct pike_string *src; struct pike_string *ret; char *pos; ptrdiff_t len, delta; if(sp[-1].u.float_number < 0)
-
SIMPLE_
BAD_
ARG_ERROR("`*", 2, "float(0..)");
+
SIMPLE_ARG_
TYPE_
ERROR("`*", 2, "float(0..)");
src = sp[-2].u.string; len = (ptrdiff_t)floor(src->len * sp[-1].u.float_number + 0.5); ret = begin_wide_shared_string(len, src->size_shift); len <<= src->size_shift; delta = src->len << src->size_shift; pos = ret->str; if (len > delta) { memcpy(pos, src->str, delta); pos += delta;
pike.git/src/operators.c:3669:
} case TWO_TYPES(T_STRING, T_INT): { struct pike_string *ret; char *pos; INT_TYPE e; ptrdiff_t len; if(sp[-1].u.integer < 0)
-
SIMPLE_
BAD_
ARG_ERROR("`*", 2, "int(0..)");
+
SIMPLE_ARG_
TYPE_
ERROR("`*", 2, "int(0..)");
ret=begin_wide_shared_string(sp[-2].u.string->len * sp[-1].u.integer, sp[-2].u.string->size_shift); pos=ret->str; len=sp[-2].u.string->len << sp[-2].u.string->size_shift; for(e=0;e<sp[-1].u.integer;e++,pos+=len) memcpy(pos,sp[-2].u.string->str,len); pop_n_elems(2); push_string(low_end_shared_string(ret)); return; }