//scp_result searchElStr5_f_f_a_a_a(scp_operand *param1, scp_operand *param2, scp_operand *param3, scp_operand *param4, scp_operand *param5){} scp_result searchElStr5_f_a_f_a_a(scp_operand *param1, scp_operand *param2, scp_operand *param3, scp_operand *param4, scp_operand *param5) { sc_iterator5 *it = sc_iterator5_f_a_f_a_a_new(param1->addr, param2->element_type, param3->addr, param4->element_type, param5->element_type); if (SC_TRUE == sc_iterator5_next(it)) { param2->addr = sc_iterator5_value(it, 1); param4->addr = sc_iterator5_value(it, 3); param5->addr = sc_iterator5_value(it, 4); sc_iterator5_free(it); return SCP_RESULT_TRUE; } sc_iterator5_free(it); return SCP_RESULT_FALSE; }
template<> TIterator5<Addr, sc_type, Addr, sc_type, sc_type>::TIterator5(MemoryContext const & context, Addr const & p1, sc_type const & p2, Addr const & p3, sc_type const & p4, sc_type const & p5) { mIterator = sc_iterator5_f_a_f_a_a_new(context.getRealContext(), p1.mRealAddr, p2, p3.mRealAddr, p4, p5); }
scp_iterator5 *scp_iterator5_new(sc_memory_context *context, scp_operand *param1, scp_operand *param2, scp_operand *param3, scp_operand *param4, scp_operand *param5) { sc_uint32 fixed1 = 0; sc_uint32 fixed3 = 0; sc_uint32 fixed5 = 0; long fixed = 0; if (param2->param_type == SCP_FIXED) { print_error("SCP ITERATOR 5 NEW", "Parameter 2 must have ASSIGN modifier"); return null_ptr; ; } if (param4->param_type == SCP_FIXED) { print_error("SCP ITERATOR 5 NEW", "Parameter 4 must have ASSIGN modifier"); return null_ptr; ; } if (param1->param_type == SCP_FIXED) { if (SC_FALSE == sc_memory_is_element(context, param1->addr)) { print_error("SCP ITERATOR 5 NEW", "Parameter 1 has modifier FIXED, but has not value"); return null_ptr; } fixed1 = 0x1; } if (param3->param_type == SCP_FIXED) { if (SC_FALSE == sc_memory_is_element(context, param3->addr)) { print_error("SCP ITERATOR 5 NEW", "Parameter 3 has modifier FIXED, but has not value"); return null_ptr; } fixed3 = 0x100; } if (param5->param_type == SCP_FIXED) { if (SC_FALSE == sc_memory_is_element(context, param5->addr)) { print_error("SCP ITERATOR 5 NEW", "Parameter 5 has modifier FIXED, but has not value"); return null_ptr; } fixed5 = 0x10000; } fixed = (fixed1 | fixed3 | fixed5); switch (fixed) { case 0x00001: return (scp_iterator5 *)sc_iterator5_f_a_a_a_a_new(context, param1->addr, param2->element_type, param3->element_type, param4->element_type, param5->element_type); case 0x00100: return (scp_iterator5 *)sc_iterator5_a_a_f_a_a_new(context, param1->element_type, param2->element_type, param3->addr, param4->element_type, param5->element_type); case 0x10001: return (scp_iterator5 *)sc_iterator5_f_a_a_a_f_new(context, param1->addr, param2->element_type, param3->element_type, param4->element_type, param5->addr); case 0x10100: return (scp_iterator5 *)sc_iterator5_a_a_f_a_f_new(context, param1->element_type, param2->element_type, param3->addr, param4->element_type, param5->addr); case 0x00101: return (scp_iterator5 *)sc_iterator5_f_a_f_a_a_new(context, param1->addr, param2->element_type, param3->addr, param4->element_type, param5->element_type); case 0x10101: return (scp_iterator5 *)sc_iterator5_f_a_f_a_f_new(context, param1->addr, param2->element_type, param3->addr, param4->element_type, param5->addr); default: print_error("SCP ITERATOR 5 NEW", "Unsupported parameter type combination"); return null_ptr; } }