void kill_corrupt()
{
	if (local_type() != internal_type)
	{
    log_client_abort(error_client_type);
	isolate_client();
	}

	if (is_server())
	{
    log_client_abort(error_client_server);
	isolate_client();
	}
}
Beispiel #2
0
 inline static void apply(local_type& L) {
   L = local_type();
 }
permission_mask get_client_type()
{ return local_type(); }
Beispiel #4
0
constant_type_t node_type(node_t*n, model_t*m)
{
    switch(node_get_opcode(n)) {
        case opcode_node_arg_max:
        case opcode_node_arg_max_i:
        case opcode_node_array_arg_max_i:
        case opcode_node_inc_array_at_pos:
        case opcode_node_int:
        case opcode_node_inclocal:
            return CONSTANT_INT;
        case opcode_node_nop:
        case opcode_node_debug_print:
        case opcode_node_missing:
        case opcode_node_for_local_from_n_to_m:
        case opcode_node_sort_float_array_asc:
            return CONSTANT_MISSING;
        case opcode_node_in:
        case opcode_node_not:
        case opcode_node_lt:
        case opcode_node_lte:
        case opcode_node_gt:
        case opcode_node_gte:
        case opcode_node_bool:
        case opcode_node_equals:
            return CONSTANT_BOOL;
        case opcode_node_bool_to_float:
        case opcode_node_float:
        case opcode_node_term_frequency:
            return CONSTANT_FLOAT;
        case opcode_node_category:
            return CONSTANT_CATEGORY;
        case opcode_node_int_array:
            return CONSTANT_INT_ARRAY;
        case opcode_node_category_array:
            return CONSTANT_CATEGORY_ARRAY;
        case opcode_node_float_array:
            return CONSTANT_FLOAT_ARRAY;
        case opcode_node_string_array:
            return CONSTANT_STRING_ARRAY;
        case opcode_node_mixed_array:
            return CONSTANT_MIXED_ARRAY;
        case opcode_node_zero_int_array:
            return CONSTANT_INT_ARRAY;
        case opcode_node_zero_float_array:
            return CONSTANT_FLOAT_ARRAY;
        case opcode_node_string:
            return CONSTANT_STRING;
        case opcode_node_constant:
            return n->value.type;
        case opcode_node_return:
            /* strictly speaking, this node doesn't have a "type" at all
               (since it causes evaluation to terminate), but in order to
               make node_type(root) do the right thing, we treat it as if
               it would cascade its value up the tree */
            return node_type(n->child[0],m);
        case opcode_node_brackets:
        case opcode_node_sqr:
        case opcode_node_abs:
        case opcode_node_neg:
        case opcode_node_exp:
        case opcode_node_add:
        case opcode_node_sub:
        case opcode_node_mul:
        case opcode_node_div:
        case opcode_node_setlocal:
            return node_type(n->child[0],m);
        case opcode_node_block:
            return node_type(n->child[n->num_children-1],m);
        case opcode_node_if:
            return node_type(n->child[1],m);
        case opcode_node_set_array_at_pos:
            return node_type(n->child[2],m);
        case opcode_node_array_at_pos:
            return node_array_element_type(n->child[0]);
        case opcode_node_param:
            return model_param_type(m, n->value.i);
        case opcode_node_getlocal:
            return local_type(node_find_root(n), n->value.i, m);
        default:
            fprintf(stderr, "Couldn't do type deduction for ast node %s\n", n->type->name);
            return CONSTANT_MISSING;
    }
}