continue; } if (t == null) { System.err.println("Null type for print statement " + exp.toString()); printedOK = false; continue;
    protected boolean printExp(JExpression expr) {        boolean oldStatementContext = statementContext;        statementContext = true;        List exps = splitForPrint(expr);        // for timing runs we want an easily recognized bit of code         // that can not be optimized away by gcc        // produced in an easliy recognisable comment.        if (ToCCommon.alternatePrintsForTiming) {            p.newline();            p.print("// TIMER_PRINT_CODE: ");            for (Iterator i = exps.iterator(); i.hasNext();) {                JExpression exp = ((JExpression)i.next());                p.print("__print_sink__ += (int)(");                exp.accept(this);                p.print("); ");            }            p.newline();        }                // now print for real...        boolean printedOK = true;        for (Iterator i = exps.iterator(); i.hasNext();) {            JExpression exp = ((JExpression)i.next());            CType t = null;            try {                t = exp.getType();            } catch (Exception e) {                System.err.println("Cannot get type for print statement");                printedOK = false;            }            String typeString = t.toString();            String printPrefix = (String)(printPrefixMap.get(typeString));            if (printPrefix == null) {                System.err.println("Print statement does not support type "                                   + t);                printedOK = false;            } else {                p.print(printPrefix);                exp.accept(this);                String printPostfix =                     (String)(printPostfixMap.get(typeString));                if (printPostfix == null) {                    printPostfix = "); ";                }                p.print(printPostfix);            }        }        statementContext = oldStatementContext;        return printedOK;    }