// // $Log: genAssign.pp,v $ // Revision 5.5.1.2 1994/09/16 13:57:06 demeter // *** empty log message *** // // Revision 5.5.1.1 1994/08/24 19:31:56 demeter // *** empty log message *** // // Revision 5.5 1994/08/24 19:31:55 demeter // *** empty log message *** // // Revision 5.4.1.2 1994/02/24 20:53:05 demeter // reimplement object transportation -- cun // // Revision 5.4.1.1 1994/02/20 19:52:59 demeter // *** empty log message *** // // Revision 5.4 1994/02/20 19:52:58 demeter // *** empty log message *** // // Revision 5.3.1.1 1994/01/26 20:07:39 demeter // *** empty log message *** // // Revision 5.3 1994/01/26 20:07:37 demeter // *** empty log message *** // // Revision 5.2.1.1 1994/01/25 17:25:10 demeter // *** empty log message *** // // Revision 5.2 1994/01/25 17:25:09 demeter // *** empty log message *** // // Revision 5.1.1.2 1993/11/16 23:29:46 demeter // take care of carry out assignments // // *operation* void genCarryPrefixAssign(Vertex *v, ofstream& strm, Param_decl_Commalist* inargs, Param_decl_Commalist* outargs) *wrapper* Param_assignment_List *prefix* (@ Param_assignment_list_iterator next(*this); Param_assignment* each; while (each = next()) { int in = 0; int out = 0; if (outargs) outargs->isCarryInorOut(in, out, each->get_param()); if (in) each->genCarryPrefixAssign(strm); else { in = out = 0; if (inargs) inargs->isCarryInorOut(in, out, each->get_param()); if (in && !out) each->genCarryPrefixAssign(strm); } } @) *operation* void genCarryPrefixAssign(ofstream& strm) *wrapper* Param_assignment *prefix* (@ strm << " " << this->get_param()->get_name()->get_val() << " = "; this->get_proc_fragment()->printCode(strm); strm << ";\n"; @) *operation* void genCarrySuffixAssign(Vertex *v, ofstream& strm, Param_decl_Commalist* inargs, Param_decl_Commalist* outargs) *wrapper* Param_assignment_List *prefix* (@ Param_assignment_list_iterator next(*this); Param_assignment* each; while (each = next()) { int in = 0; int out = 0; if (inargs) inargs->isCarryInorOut(in, out, each->get_param()); if (out) each->genCarrySuffixAssign(strm); } @) *operation* void genCarrySuffixAssign(ofstream& strm) *wrapper* Param_assignment *prefix* (@ strm << " " << this->get_param()->get_name()->get_val() << " = "; this->get_proc_fragment()->printCode(strm); strm << ";\n"; @) *operation* void isCarryInorOut(int& in, int& out, Param_name* n) *wrapper* Param_decl_Commalist *prefix* (@ Param_decl_list_iterator next(*this); Param_decl* each; while (each = next()) { if (each->get_param_name()->g_equal(n)) { each->get_param_type_spec()->isInorOut(in,out); return; } } @) *operation* void isInorOut(int& in,int& out) *wrapper* Nonvoid_type_spec *prefix* (@ @) *wrapper* Type_without_attribute *prefix* (@ // default is *in* in = 1; out = 0; @) *wrapper* Type_with_attribute *prefix* (@ static In* inobj = new In(); static Out* outobj = new Out(); static Inout* inoutobj = new Inout(); in = inobj->g_equal(param_attribute) || inoutobj->g_equal(param_attribute); out = outobj->g_equal(param_attribute) || inoutobj->g_equal(param_attribute); @)