001package io.jstach.jstachio.output;
002
003import io.jstach.jstachio.Output;
004
005/**
006 * An encoded output that forwards all calls to a delegate.
007 *
008 * @param <E> error throw on any append or write
009 */
010public abstract class ForwardingOutput<E extends Exception> implements Output<E> {
011
012        /**
013         * Do nothing constructor
014         */
015        protected ForwardingOutput() {
016        }
017
018        /**
019         * The output to forward to.
020         * @return output to forward to.
021         */
022        protected abstract Output<E> delegate();
023
024        @Override
025        public void append(CharSequence s) throws E {
026                delegate().append(s);
027        }
028
029        @Override
030        public void append(short s) throws E {
031                delegate().append(s);
032        }
033
034        @Override
035        public void append(int i) throws E {
036                delegate().append(i);
037        }
038
039        @Override
040        public void append(long l) throws E {
041                delegate().append(l);
042        }
043
044        @Override
045        public void append(double d) throws E {
046                delegate().append(d);
047        }
048
049        @Override
050        public void append(boolean b) throws E {
051                delegate().append(b);
052        }
053
054        @Override
055        public Appendable toAppendable() {
056                return delegate().toAppendable();
057        }
058
059        @Override
060        public void append(char c) throws E {
061                delegate().append(c);
062        }
063
064        @Override
065        public void append(String s) throws E {
066                delegate().append(s);
067        }
068
069        @Override
070        public void append(CharSequence csq, int start, int end) throws E {
071                delegate().append(csq, start, end);
072        }
073
074}