void build_dag(int st,int en,int level) { int i,a,b; struct four_expression t; init_dag(); for (i = st;i<=en;i++) { t = four_codes[i]; switch(t.type){ case four_add: case four_sub: case four_mul: case four_div: case four_big: case four_bige:case four_smo: case four_smoe: case four_eq: case four_neq: case four_getarr: case four_getadd: case four_bec: a = get_point_dag(t.src1); b = get_point_dag(t.src2); new_point_dag(t.type,a,b,t.des); break; case four_read: new_point_dag(t.type,0,0,t.des); break; case four_push: case four_write: a = get_point_dag(t.des); b = t.src1; new_point_dag(t.type,a,b,0); break; default: if (t.type == four_call || t.type == four_end || t.type == four_jz || t.type==four_jmp) { restore_all(level); init_dag(); } new_better(four_codes[i].type,four_codes[i].src1,four_codes[i].src2,four_codes[i].des,four_codes[i].level); break; } } restore_all(level); }
dag_network::dag_network(const char *s_dagid, rpl_debug *deb) { set_dagid(s_dagid); init_dag(); set_debug(deb); }
dag_network::dag_network(dagid_t n_dagid, rpl_debug *deb) { set_dagid(n_dagid); init_dag(); set_debug(deb); }