package org.glassfish.pfl.dynamic.codegen.impl;
import java.io.PrintStream ;
import org.glassfish.pfl.basic.algorithm.Printer;
public class CodegenPrinter extends Printer {
static Attribute<Integer> lineNumberAttribute = new Attribute<Integer>(
Integer.class, "lineNumber", -1 ) ;
private int lineNumber ;
public CodegenPrinter( PrintStream ps ) {
this( ps, DEFAULT_INCREMENT, ' ' ) ;
}
public CodegenPrinter( PrintStream ps, int increment, char padChar ) {
super( ps, increment, padChar ) ;
this.lineNumber = 1 ;
}
public int lineNumber() {
return lineNumber ;
}
@Override
public CodegenPrinter p( String str ) {
super.p( str ) ;
return this ;
}
@Override
public CodegenPrinter p( Object obj ) {
super.p( obj ) ;
return this ;
}
@Override
public CodegenPrinter in() {
super.in() ;
return this ;
}
@Override
public CodegenPrinter out() {
super.out() ;
return this ;
}
@Override
public CodegenPrinter nl() {
super.nl() ;
return this ;
}
public CodegenPrinter nl( Node node ) {
lineNumber++ ;
if (node != null)
lineNumberAttribute.set( node, lineNumber ) ;
super.nl() ;
return this ;
}
}