1b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project/* 2b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * [The "BSD licence"] 3b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * Copyright (c) 2005-2008 Terence Parr 4b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * All rights reserved. 5b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * 6b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * Conversion to C#: 7b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * Copyright (c) 2008-2009 Sam Harwell, Pixel Mine, Inc. 8b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * All rights reserved. 9b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * 10b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * Redistribution and use in source and binary forms, with or without 11b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * modification, are permitted provided that the following conditions 12b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * are met: 13b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 14b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * notice, this list of conditions and the following disclaimer. 15b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 16b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 17b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * documentation and/or other materials provided with the distribution. 18b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * 3. The name of the author may not be used to endorse or promote products 19b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * derived from this software without specific prior written permission. 20b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * 21b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 22b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 23b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 24b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 25b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 26b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 30b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project */ 32b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project 33b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Projectnamespace Antlr.Runtime { 34b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project using Encoding = System.Text.Encoding; 35b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project using Stream = System.IO.Stream; 36b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project using StreamReader = System.IO.StreamReader; 37b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project 38b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project /** <summary> 39b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * A kind of ReaderStream that pulls from an InputStream. 40b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * Useful for reading from stdin and specifying file encodings etc... 41b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project * </summary> 42b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project */ 43b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project [System.Serializable] 44b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project public class ANTLRInputStream : ANTLRReaderStream { 45b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project public ANTLRInputStream(Stream input) 46b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project : this(input, null) { 47b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project } 48b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project 49b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project public ANTLRInputStream(Stream input, int size) 50b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project : this(input, size, null) { 51b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project } 52b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project 53b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project public ANTLRInputStream(Stream input, Encoding encoding) 54b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project : this(input, InitialBufferSize, encoding) { 55b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project } 56b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project 57b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project public ANTLRInputStream(Stream input, int size, Encoding encoding) 58b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project : this(input, size, ReadBufferSize, encoding) { 59b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project } 60b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project 61b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project public ANTLRInputStream(Stream input, int size, int readBufferSize, Encoding encoding) 62b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project : base(GetStreamReader(input, encoding), size, readBufferSize) { 63b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project } 64b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project 65b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project private static StreamReader GetStreamReader(Stream input, Encoding encoding) { 66b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project if (encoding != null) 67b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project return new StreamReader(input, encoding); 68b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project return new StreamReader(input); 69b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project } 70b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project } 71b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project} 72b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project