Beispiel #1
0
int main(void)
{
	Book array1[MAX];
	int *array2[MAX];
	int i;
	int id;
	int val;
	char name[10];
	Book res1;
	int *res2;

	for(i = 0; i < MAX; i++){
		printf("input info of book\n");
		scanf("%d", &id);
		scanf("%s", name);
		if(insert_struct(&(array1[i]), id, name) == -1)
			exit(1);

		printf("input int\n");
		scanf("%d", &val);
		if(insert_int(&(array2[i]), val) == -1)
			exit(1);
	}

	res1 = (Book)max((void **)array1, MAX, cmp_struct);
	res2 = (int *)max((void **)array2, MAX, cmp_int);

	printf("the max of books : %d, %s\n", res1->id, res1->name);
	printf("the max of int : %d\n", *res2);

	return 0;
}
Beispiel #2
0
static void register_shifters(void)
{
	char filename[256];
	struct token *token;
	char *name;
	int *val;

	snprintf(filename, sizeof(filename), "%s.bit_shifters", option_project_str);
	token = get_tokens_file(filename);
	if (!token)
		return;
	if (token_type(token) != TOKEN_STREAMBEGIN)
		return;
	token = token->next;
	while (token_type(token) != TOKEN_STREAMEND) {
		if (token_type(token) != TOKEN_IDENT)
			return;
		name = alloc_string(show_ident(token->ident));
		token = token->next;
		if (token_type(token) != TOKEN_NUMBER)
			return;
		val = malloc(sizeof(int));
		*val = atoi(token->number);
		insert_struct(shifters, name, val);
		token = token->next;
	}
	clear_token_alloc();
}
QStringList tabtoh::parse_and_convert_instr(QStringList &instr_desc){
    QString instr_name;
    QString instr_name_stripped;
    QString instr_name_quoted;
    QString mem_type_str;
    QString tempr_domain_str;
    QString volt_domain_str;
    QString freq_domain_str;
    QString num_of_operands;

    QStringList converted_instr;
    QStringList init_names;
    QStringList init_values;

    QString mem_sz_str;
    QString tempr_sz_str;
    QString volt_sz_str;
    QString freq_sz_str;
    QString num_of_ops_sz;

    instr_name = instr_desc.at(0).section("\t", 1, 1);
    instr_name_quoted = instr_name;
    instr_name_quoted.prepend("\"");
    instr_name_quoted.append("\"");
    instr_name_stripped = convert_dot_to_slash(instr_name);

    detect_domain_sizes(instr_desc, mem_sz_str, tempr_sz_str, volt_sz_str, freq_sz_str, num_of_ops_sz);

    insert_struct("const instruction_t", instr_name_stripped.toLatin1().data(), 0, converted_instr);
    insert_struct_field("instr_mnemonic", instr_name_quoted.toLatin1().data(), 1, converted_instr);
    insert_struct_field("num_of_mem_domains", mem_sz_str.toLatin1().data(), 1, converted_instr);
    insert_struct_field("num_of_tempr_domains", tempr_sz_str.toLatin1().data(), 1, converted_instr);
    insert_struct_field("num_of_volt_domains", volt_sz_str.toLatin1().data(), 1, converted_instr);
    insert_struct_field("num_of_freq_domains", freq_sz_str.toLatin1().data(), 1, converted_instr);
    insert_struct_field("num_of_operand_domains", num_of_ops_sz.toLatin1().data(), 1, converted_instr);
    insert_struct_struct_field("domains", 1, converted_instr);

    for(int i = 2; i < instr_desc.size(); i++){
        if(is_empty_line(instr_desc.at(i))){
            break;
        }

        mem_type_str = instr_desc.at(i).section('\t', 0, 0);
        tempr_domain_str = instr_desc.at(i).section('\t', 1, 1);
        volt_domain_str = instr_desc.at(i).section('\t', 2, 2);
        freq_domain_str = instr_desc.at(i).section('\t', 3, 3);
        num_of_operands = instr_desc.at(i).section('\t', 4, 4);

        init_names << "mem_addr";
        init_values << "0";
        init_names << "mem_type";
        init_values << mem_type_str;
        init_names << "tempr_domain";
        init_values << tempr_domain_str;
        init_names << "volt_domain";
        init_values << volt_domain_str;
        init_names << "freq_domain";
        init_values << freq_domain_str;
        init_names << "num_of_operands";
        init_values << num_of_operands;

        {
            QString energy_time, energy_current;
            energy_time = instr_desc.at(i).section('\t', 5, 5);
            init_names << "consumed_time";
            init_values << energy_time.section(',', 0, 0);
            init_names << "consumed_current";
            init_values << energy_time.section(',', 1, 1);
        }

        insert_struct_initializers(init_names, init_values, 2, converted_instr);

        init_names.clear();
        init_values.clear();
    }

    converted_instr << "\t}\r\n";
    converted_instr << "};\r\n\r\n";

    return converted_instr;
}