#include "pp.h" void Param_assignment_List::genCarryPrefixAssign( Vertex* v,ofstream& strm,Param_decl_Commalist* inargs,Param_decl_Commalist* outargs ) { DEM_TRACE("Param_assignment_List","void Param_assignment_List::genCarryPrefixAssign(Vertex* v,ofstream& strm,Param_decl_Commalist* inargs,Param_decl_Commalist* outargs)"); // prefix class wrappers 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); } } // suffix class wrappers } void Param_assignment::genCarryPrefixAssign( ofstream& strm ) { DEM_TRACE("Param_assignment","void Param_assignment::genCarryPrefixAssign(ofstream& strm)"); // prefix class wrappers strm << " " << this->get_param()->get_name()->get_val() << " = "; this->get_proc_fragment()->printCode(strm); strm << ";\n"; // suffix class wrappers } void Param_assignment_List::genCarrySuffixAssign( Vertex* v,ofstream& strm,Param_decl_Commalist* inargs,Param_decl_Commalist* outargs ) { DEM_TRACE("Param_assignment_List","void Param_assignment_List::genCarrySuffixAssign(Vertex* v,ofstream& strm,Param_decl_Commalist* inargs,Param_decl_Commalist* outargs)"); // prefix class wrappers 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); } // suffix class wrappers } void Param_assignment::genCarrySuffixAssign( ofstream& strm ) { DEM_TRACE("Param_assignment","void Param_assignment::genCarrySuffixAssign(ofstream& strm)"); // prefix class wrappers strm << " " << this->get_param()->get_name()->get_val() << " = "; this->get_proc_fragment()->printCode(strm); strm << ";\n"; // suffix class wrappers } void Param_decl_Commalist::isCarryInorOut( int& in,int& out,Param_name* n ) { DEM_TRACE("Param_decl_Commalist","void Param_decl_Commalist::isCarryInorOut(int& in,int& out,Param_name* n)"); // prefix class wrappers 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; } } // suffix class wrappers } void Nonvoid_type_spec::isInorOut( int& in,int& out ) { DEM_TRACE("Nonvoid_type_spec","void Nonvoid_type_spec::isInorOut(int& in,int& out)"); // prefix class wrappers // suffix class wrappers } void Type_without_attribute::isInorOut( int& in,int& out ) { DEM_TRACE("Type_without_attribute","void Type_without_attribute::isInorOut(int& in,int& out)"); // prefix class wrappers // default is *in* in = 1; out = 0; // suffix class wrappers } void Type_with_attribute::isInorOut( int& in,int& out ) { DEM_TRACE("Type_with_attribute","void Type_with_attribute::isInorOut(int& in,int& out)"); // prefix class wrappers 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); // suffix class wrappers }