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