pike.git / src / pike_types.cmod

version» Context lines:

pike.git/src/pike_types.cmod:299:    * INT min (int) max (int)    * OBJECT implements/is object id(int)    * OPERATOR type Depends on bit #15. Added in 8.1    * TRANSITIVE fun_type fun_type Added in 8.1    *    * Operator types:    * FIND_LFUN object type lfun (int) Added in 8.1    * GET_RETURN fun type - Added in 8.1    * SET_CAR type type Added in 8.1    * SET_CDR type type Added in 8.1 +  * APPLY fun type arg type Added in 8.1    *    * Note that the cdr of a FUNCTION is a valid FUNCTION for the rest of    * the arguments.    *    * Note also that functions that don't take any arguments, or just    * a many argument just have a MANY node, and no FUNCTION node.    *    * TRANSITIVE has a car with the current state, and a cdr with the    * function type to apply.    *
pike.git/src/pike_types.cmod:13878:      struct pike_type *apply_type_operator(enum PIKE_TYPE op,    struct pike_type *arg1,    struct pike_type *arg2)   {    struct pike_type *res = NULL;    switch(op) {    case PIKE_T_GET_RETURN:    res = new_get_return_type(arg1, 0);    break; +  case PIKE_T_APPLY: +  { +  struct call_state cs; +  INIT_CALL_STATE(cs); +  res = low_new_check_call(arg1, arg2, 0, &cs, NULL); +  FREE_CALL_STATE(cs); +  } +  break;    case PIKE_T_FIND_LFUN:    res = find_lfun_type(arg1, (ptrdiff_t)(void*)arg2);    break;    case PIKE_T_INT_OP_SUB:    case PIKE_T_INT_OP_AND:    case PIKE_T_INT_OP_XOR:    case PIKE_T_INT_OP_RANGE:    res = type_int_op(op, arg1, arg2);    break;    case PIKE_T_SET_CAR: