You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
158 lines
4.1 KiB
158 lines
4.1 KiB
/*
|
|
* Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.
|
|
* ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
|
*/
|
|
/*
|
|
* Copyright 1999-2004 The Apache Software Foundation.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
/*
|
|
* $Id: WriterToASCI.java,v 1.2.4.1 2005/09/15 08:15:31 suresh_emailid Exp $
|
|
*/
|
|
package com.sun.org.apache.xml.internal.serializer;
|
|
|
|
import java.io.IOException;
|
|
import java.io.OutputStream;
|
|
import java.io.Writer;
|
|
|
|
|
|
|
|
/**
|
|
* This class writes ASCII to a byte stream as quickly as possible. For the
|
|
* moment it does not do buffering, though I reserve the right to do some
|
|
* buffering down the line if I can prove that it will be faster even if the
|
|
* output stream is buffered.
|
|
*
|
|
* This class is only used internally within Xalan.
|
|
*
|
|
* @xsl.usage internal
|
|
*/
|
|
class WriterToASCI extends Writer implements WriterChain
|
|
{
|
|
|
|
/** The byte stream to write to. */
|
|
private final OutputStream m_os;
|
|
|
|
/**
|
|
* Create an unbuffered ASCII writer.
|
|
*
|
|
*
|
|
* @param os The byte stream to write to.
|
|
*/
|
|
public WriterToASCI(OutputStream os)
|
|
{
|
|
m_os = os;
|
|
}
|
|
|
|
/**
|
|
* Write a portion of an array of characters.
|
|
*
|
|
* @param chars Array of characters
|
|
* @param start Offset from which to start writing characters
|
|
* @param length Number of characters to write
|
|
*
|
|
* @exception IOException If an I/O error occurs
|
|
*
|
|
* @throws java.io.IOException
|
|
*/
|
|
public void write(char chars[], int start, int length)
|
|
throws java.io.IOException
|
|
{
|
|
|
|
int n = length+start;
|
|
|
|
for (int i = start; i < n; i++)
|
|
{
|
|
m_os.write(chars[i]);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Write a single character. The character to be written is contained in
|
|
* the 16 low-order bits of the given integer value; the 16 high-order bits
|
|
* are ignored.
|
|
*
|
|
* <p> Subclasses that intend to support efficient single-character output
|
|
* should override this method.
|
|
*
|
|
* @param c int specifying a character to be written.
|
|
* @exception IOException If an I/O error occurs
|
|
*/
|
|
public void write(int c) throws IOException
|
|
{
|
|
m_os.write(c);
|
|
}
|
|
|
|
/**
|
|
* Write a string.
|
|
*
|
|
* @param s String to be written
|
|
*
|
|
* @exception IOException If an I/O error occurs
|
|
*/
|
|
public void write(String s) throws IOException
|
|
{
|
|
int n = s.length();
|
|
for (int i = 0; i < n; i++)
|
|
{
|
|
m_os.write(s.charAt(i));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Flush the stream. If the stream has saved any characters from the
|
|
* various write() methods in a buffer, write them immediately to their
|
|
* intended destination. Then, if that destination is another character or
|
|
* byte stream, flush it. Thus one flush() invocation will flush all the
|
|
* buffers in a chain of Writers and OutputStreams.
|
|
*
|
|
* @exception IOException If an I/O error occurs
|
|
*/
|
|
public void flush() throws java.io.IOException
|
|
{
|
|
m_os.flush();
|
|
}
|
|
|
|
/**
|
|
* Close the stream, flushing it first. Once a stream has been closed,
|
|
* further write() or flush() invocations will cause an IOException to be
|
|
* thrown. Closing a previously-closed stream, however, has no effect.
|
|
*
|
|
* @exception IOException If an I/O error occurs
|
|
*/
|
|
public void close() throws java.io.IOException
|
|
{
|
|
m_os.close();
|
|
}
|
|
|
|
/**
|
|
* Get the output stream where the events will be serialized to.
|
|
*
|
|
* @return reference to the result stream, or null of only a writer was
|
|
* set.
|
|
*/
|
|
public OutputStream getOutputStream()
|
|
{
|
|
return m_os;
|
|
}
|
|
|
|
/**
|
|
* Get the writer that this writer directly chains to.
|
|
*/
|
|
public Writer getWriter()
|
|
{
|
|
return null;
|
|
}
|
|
}
|