Frames | No Frames |
1: /* Appendable.java -- Something to which characters can be appended 2: Copyright (C) 2004 Free Software Foundation 3: 4: This file is part of GNU Classpath. 5: 6: GNU Classpath is free software; you can redistribute it and/or modify 7: it under the terms of the GNU General Public License as published by 8: the Free Software Foundation; either version 2, or (at your option) 9: any later version. 10: 11: GNU Classpath is distributed in the hope that it will be useful, but 12: WITHOUT ANY WARRANTY; without even the implied warranty of 13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14: General Public License for more details. 15: 16: You should have received a copy of the GNU General Public License 17: along with GNU Classpath; see the file COPYING. If not, write to the 18: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19: 02110-1301 USA. 20: 21: Linking this library statically or dynamically with other modules is 22: making a combined work based on this library. Thus, the terms and 23: conditions of the GNU General Public License cover the whole 24: combination. 25: 26: As a special exception, the copyright holders of this library give you 27: permission to link this library with independent modules to produce an 28: executable, regardless of the license terms of these independent 29: modules, and to copy and distribute the resulting executable under 30: terms of your choice, provided that you also meet, for each linked 31: independent module, the terms and conditions of the license of that 32: module. An independent module is a module which is not derived from 33: or based on this library. If you modify this library, you may extend 34: this exception to your version of the library, but you are not 35: obligated to do so. If you do not wish to do so, delete this 36: exception statement from your version. */ 37: 38: package java.lang; 39: 40: import java.io.IOException; 41: 42: /** 43: * <p> 44: * An <code>Appendable</code> object is one to which a sequence of Unicode 45: * characters can be added. The appended characters must be valid Unicode 46: * characters, and may include supplementary characters, composed of multiple 47: * 16-bit <code>char</code> values. 48: * </p> 49: * <p> 50: * The behaviour of the <code>Appendable</code> object is heavily dependent 51: * on the particular implementation being used. Some implementations may be 52: * thread-safe, while others may not. Likewise, some implementing classes 53: * may produce errors which aren't propogated to the invoking class, due 54: * to differences in the error handling used. 55: * </p> 56: * <p> 57: * <strong>Note</strong>: implementation of this interface is required for 58: * any class that wishes to receive data from a <code>Formatter</code> 59: * instance. 60: * </p> 61: * 62: * @author Tom Tromey (tromey@redhat.com) 63: * @author Andrew John Hughes (gnu_andrew@member.fsf.org) 64: * @since 1.5 65: */ 66: public interface Appendable 67: { 68: 69: /** 70: * Appends the Unicode character, c, to this <code>Appendable</code> 71: * object. 72: * 73: * @param c the character to append. 74: * @return a reference to this object. 75: * @throws IOException if an I/O error occurs. 76: */ 77: Appendable append(char c) 78: throws IOException; 79: 80: /** 81: * Appends the specified sequence of Unicode characters to this 82: * <code>Appendable</code> object. The entire sequence may not 83: * be appended, if constrained by the underlying implementation. 84: * For example, a buffer may reach its size limit before the entire 85: * sequence is appended. 86: * 87: * @param seq the character sequence to append. If seq is null, 88: * then the string "null" (the string representation of null) 89: * is appended. 90: * @return a reference to this object. 91: * @throws IOException if an I/O error occurs. 92: */ 93: Appendable append(CharSequence seq) 94: throws IOException; 95: 96: /** 97: * Appends the specified subsequence of Unicode characters to this 98: * <code>Appendable</code> object, starting and ending at the specified 99: * positions within the sequence. The entire sequence may not 100: * be appended, if constrained by the underlying implementation. 101: * For example, a buffer may reach its size limit before the entire 102: * sequence is appended. The behaviour of this method matches the 103: * behaviour of <code>append(seq.subSequence(start,end))</code> when 104: * the sequence is not null. 105: * 106: * @param seq the character sequence to append. If seq is null, 107: * then the string "null" (the string representation of null) 108: * is appended. 109: * @param start the index of the first Unicode character to use from 110: * the sequence. 111: * @param end the index of the last Unicode character to use from the 112: * sequence. 113: * @return a reference to this object. 114: * @throws IOException if an I/O error occurs. 115: * @throws IndexOutOfBoundsException if either of the indices are negative, 116: * the start index occurs after the end index, or the end index is 117: * beyond the end of the sequence. 118: */ 119: Appendable append(CharSequence seq, int start, int end) 120: throws IOException; 121: 122: }