ret.append("= static_receive"); if (fp) ret.append("_f"); ret.append("();\n");
ret.append(");\n");
    public String getC(CType ctype) {	StringBuffer ret = new StringBuffer();	StringBuffer arrayAccess = new StringBuffer();	boolean fp = ctype.equals(CStdType.Float);	String dims[] = null; 		//true if the next node is a dup	boolean nextDup = false;	nextDup = (type == RECEIVE && next != null &&		   next.type == DUPLICATE);		if (ctype.isArrayType()) {	    dims = Util.makeString(((CArrayType)ctype).getDims());	    fp = ((CArrayType)ctype).getBaseType().equals(CStdType.Float);	}		if (ctype.isArrayType()) {	    //code to loop thru all of the array elements	    for (int i = 0; i < dims.length; i++) {		ret.append("for (" + TileCode.ARRAY_INDEX + i + " = 0; " +			   TileCode.ARRAY_INDEX + i + " < " + dims[i] + "; " + 			   TileCode.ARRAY_INDEX + i + "++)\n");	    }	    //the code for the indexed access to the array	    if (ctype.isArrayType()) {		for (int i = 0; i < dims.length; i++) {		    arrayAccess.append("[" + TileCode.ARRAY_INDEX + i + "]");		}	    }	}	ret.append("{\n");   	if (type == DUPLICATE) {	    ret.append(dupRecCode(arrayAccess));	}	else if (type == FIRE) {	    ret.append("static_send(__buffer" + buffer +		       "[__first" + buffer + "++]");	    ret.append(arrayAccess);	    ret.append(");\n");	    ret.append("}\n");	    ret.append("__first" + buffer + " = __first" + buffer + " & __MINUSONE__;\n");	    	}	else if (type == RECEIVE) { //receive	    if (nextDup) 		ret.append(DUPVAR);	    else 		ret.append("__buffer" + buffer + "[__last" + buffer + "++]");	    ret.append(arrayAccess);	    ret.append("= static_receive");	    if (fp)		ret.append("_f");	    ret.append("();\n");	    if (nextDup) {		ret.append(dupRecCode(arrayAccess));	    }	    else {		ret.append("}\n");		ret.append("__last" + buffer + " = __last" + buffer + " & __MINUSONE__;\n");	    }	}	else if (type == INITPATH){	    ret.append("__buffer" + buffer + "[__last" + buffer + "++]");	    ret.append(arrayAccess);	    ret.append("= initPath(" + 		       initPathIndex + ");\n");	    ret.append("}\n");	    ret.append("__last" + buffer + " = __last" + buffer + " & __MINUSONE__;\n");	}	return ret.toString();    }