@Override public void write(char cbuf[]) throws ClosedChannelException { if(isClosed) throw new ClosedChannelException(); final int len = cbuf.length; if(len>0) { if(len==1) { write(cbuf[0]); } else { addSegment( TYPE_STRING, new String(cbuf), 0, len ); length += len; } } }
@Override public SegmentedWriter append(char c) throws ClosedChannelException { if(isClosed) throw new ClosedChannelException(); switch(c) { case '\n' : addSegment(TYPE_CHAR_NEWLINE, null, 0, 1); break; case '\'' : addSegment(TYPE_CHAR_APOS, null, 0, 1); break; case '"' : addSegment(TYPE_CHAR_QUOTE, null, 0, 1); break; default : addSegment(TYPE_CHAR_OTHER, Character.valueOf(c), 0, 1); } length++; return this; }
@Override public void write(int c) throws ClosedChannelException { if(isClosed) throw new ClosedChannelException(); char ch = (char)c; switch(ch) { case '\n' : addSegment(TYPE_CHAR_NEWLINE, null, 0, 1); break; case '\'' : addSegment(TYPE_CHAR_APOS, null, 0, 1); break; case '"' : addSegment(TYPE_CHAR_QUOTE, null, 0, 1); break; default : addSegment(TYPE_CHAR_OTHER, Character.valueOf(ch), 0, 1); } length++; }
@Override public void write(char cbuf[], int off, int len) throws ClosedChannelException { if(isClosed) throw new ClosedChannelException(); if(len>0) { if(len==1) { write(cbuf[off]); } else { addSegment( TYPE_STRING, new String(cbuf, off, len), 0, len ); length += len; } } }
@Override public void write(String str, int off, int len) throws ClosedChannelException { if(isClosed) throw new ClosedChannelException(); if(len>0) { if(len==1) { // Prefer character shortcuts switch(str.charAt(off)) { case '\n' : addSegment(TYPE_CHAR_NEWLINE, null, 0, 1); break; case '\'' : addSegment(TYPE_CHAR_APOS, null, 0, 1); break; case '"' : addSegment(TYPE_CHAR_QUOTE, null, 0, 1); break; default : addSegment(TYPE_STRING, str, off, 1); } } else { addSegment(TYPE_STRING, str, off, len); } length += len; } }
if(isClosed) throw new ClosedChannelException(); if(csq==null) { write("null"); } else { final int len = csq.length(); addSegment(TYPE_CHAR_NEWLINE, null, 0, 1); break; case '\'' : addSegment(TYPE_CHAR_APOS, null, 0, 1); break; case '"' : addSegment(TYPE_CHAR_QUOTE, null, 0, 1); break; default : addSegment(TYPE_STRING, csq.toString(), 0, 1); addSegment(TYPE_STRING, csq.toString(), 0, len);
@Override public void write(String str) throws ClosedChannelException { if(isClosed) throw new ClosedChannelException(); final int len = str.length(); if(len>0) { if(len==1) { // Prefer character shortcuts switch(str.charAt(0)) { case '\n' : addSegment(TYPE_CHAR_NEWLINE, null, 0, 1); break; case '\'' : addSegment(TYPE_CHAR_APOS, null, 0, 1); break; case '"' : addSegment(TYPE_CHAR_QUOTE, null, 0, 1); break; default : addSegment(TYPE_STRING, str, 0, 1); } } else { addSegment(TYPE_STRING, str, 0, len); } length += len; } }
if(isClosed) throw new ClosedChannelException(); if(csq==null) { write("null"); } else { final int len = end-start; switch(ch) { case '\n' : addSegment(TYPE_CHAR_NEWLINE, null, 0, 1); break; case '\'' : addSegment(TYPE_CHAR_APOS, null, 0, 1); break; case '"' : addSegment(TYPE_CHAR_QUOTE, null, 0, 1); break; default : || !(csq instanceof String) // Use Character for all non-Strings ) { addSegment( TYPE_CHAR_OTHER, Character.valueOf(ch), addSegment( TYPE_STRING, (String)csq, addSegment(