print(self.getOutputType() + " f) {\n");
if (self.getOutputType() == CStdType.Void) print("int f) {\n"); else print(self.getOutputType() + " f) {\n");
    public void visitFilter(SIRFilter self,			    SIRFilterIter iter) {	//       System.out.println(self.getName());		//Entry point of the visitor	//do not print the raw header if compiling	//for uniprocessor	if (!KjcOptions.standalone) 	    print("#include <raw.h>\n");	print("#include <stdlib.h>\n");	print("#include <math.h>\n\n");	//if we are number gathering and this is the sink, generate the dummy	//vars for the assignment of the print expression.	if (KjcOptions.numbers > 0 && NumberGathering.successful &&	    self == NumberGathering.sink.contents) {	    print ("int dummyInt;\n");	    print ("float dummyFloat;\n");	}		if (KjcOptions.altcodegen && !KjcOptions.decoupled){	    print("register float " + Util.CSTOFPVAR + " asm(\"$csto\");\n");	    print("register float " + Util.CSTIFPVAR + " asm(\"$csti\");\n");	    print("register int " + Util.CSTOINTVAR + " asm(\"$csto\");\n");	    print("register int " + Util.CSTIINTVAR + " asm(\"$csti\");\n");	}		if (KjcOptions.decoupled) {	    print("volatile float " + Util.CSTOFPVAR + ";\n");	    print("volatile float " + Util.CSTIFPVAR + ";\n");	    print("volatile int " + Util.CSTOINTVAR + ";\n");	    print("volatile int " + Util.CSTIINTVAR + ";\n");	}		if (RawBackend.FILTER_DEBUG_MODE &&	    self.getOutputType().isNumeric()) {	    print("void static_send_print(");	    print(self.getOutputType() + " f) {\n");	    if (self.getOutputType().isFloatingPoint()) 		print("print_float(f);\n");	    else 		print("print_int(f);\n");	    print("static_send(f);\n");	    print("}\n\n");	}		//if there are structures in the code, include	//the structure definition header files	if (RawBackend.structures.length > 0) 	    print("#include \"structs.h\"\n");	//print the extern for the function to init the 	//switch, do not do this if we are compiling for	//a uniprocessor	if (!KjcOptions.standalone) {	    print("void raw_init();\n");	    print("void raw_init2();\n");	}			//not used any more	//print("unsigned int " + FLOAT_HEADER_WORD + ";\n");	//print("unsigned int " + INT_HEADER_WORD + ";\n");       	//Visit fields declared in the filter class	JFieldDeclaration[] fields = self.getFields();	for (int i = 0; i < fields.length; i++)	   fields[i].accept(this);		//visit methods of filter, print the declaration first	declOnly = true;	JMethodDeclaration[] methods = self.getMethods();	for (int i =0; i < methods.length; i++)	    methods[i].accept(this);	//now print the functions with body	declOnly = false;	for (int i =0; i < methods.length; i++) {	    methods[i].accept(this);		}		//if we are generating raw code print the begin	//method for the simulator	if (!KjcOptions.standalone) {	    print("void begin(void) {\n");	}	else {	    //otherwise print a normal main()	    print("int main() {\n");	}	//not used at this time	//print(FLOAT_HEADER_WORD + 	//" = construct_dyn_hdr(3, 1, 0, 0, 0, 3, 0);\n");	//print(INT_HEADER_WORD + 	//" = construct_dyn_hdr(3, 1, 1, 0, 0, 3, 0);\n");		//if we are using the magic network, 	//use a magic instruction to initialize the magic fifos	if (KjcOptions.magic_net)	    print("  __asm__ volatile (\"magc $0, $0, 1\");\n");		//initialize the dummy network receive value	if (KjcOptions.decoupled) {	    if (self.getInputType().isFloatingPoint()) 		print("  " + Util.CSTIFPVAR + " = 1.0;\n");	    else 		print("  " + Util.CSTIINTVAR + " = 1;\n");	}	//call the raw_init() function for the static network	//only if we are not using a uniprocessor or the	//magic network	if (!KjcOptions.standalone && !KjcOptions.magic_net && !KjcOptions.decoupled) {	    print("  raw_init();\n");	    print("  raw_init2();\n");	}	//execute the raw main function	print(RawExecutionCode.rawMain + "();\n");	//return 0 if we are generating normal c code	if (KjcOptions.standalone) 	    print("  return 0;\n");	print("}\n");       	createFile();    }