activemq-cpp-3.8.2
PushbackInputStream.h
Go to the documentation of this file.
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 #ifndef _DECAF_IO_PUSHBACKINPUTSTREAM_H_
19 #define _DECAF_IO_PUSHBACKINPUTSTREAM_H_
20 
21 #include <decaf/util/Config.h>
22 
23 #include <decaf/io/InputStream.h>
25 
26 namespace decaf {
27 namespace io {
28 
43  private:
44 
45  unsigned char* buffer;
46  int bufferSize;
47  int pos;
48 
49  private:
50 
52  PushbackInputStream& operator=(const PushbackInputStream&);
53 
54  public:
55 
65  PushbackInputStream(InputStream* stream, bool own = false);
66 
80  PushbackInputStream(InputStream* stream, int bufSize, bool own = false);
81 
82  virtual ~PushbackInputStream();
83 
94  void unread(unsigned char value);
95 
110  void unread(const unsigned char* buffer, int size);
111 
130  void unread(const unsigned char* buffer, int size, int offset, int length);
131 
138  virtual int available() const;
139 
147  virtual long long skip(long long num);
148 
154  virtual void mark(int readLimit);
155 
161  virtual void reset();
162 
168  virtual bool markSupported() const {
169  return false;
170  }
171 
172  protected:
173 
174  virtual int doReadByte();
175 
176  virtual int doReadArrayBounded(unsigned char* buffer, int size, int offset, int length);
177 
178  };
179 
180 }}
181 
182 #endif /* _DECAF_IO_PUSHBACKINPUTSTREAM_H_ */
bool own
Definition: FilterInputStream.h:45
void unread(unsigned char value)
Pushes back the given byte, the byte is copied to the front of the pushback buffer, future calls to read start reading from the beginning of these pushed back byte.
virtual int available() const
Indicates the number of bytes available.The default implementation of this methods returns 0...
A base class that must be implemented by all classes wishing to provide a class that reads in a strea...
Definition: InputStream.h:39
A PushbackInputStream adds functionality to another input stream, namely the ability to "push back" o...
Definition: PushbackInputStream.h:42
virtual void reset()
Does nothing except throw an IOException.
virtual void mark(int readLimit)
Does nothing except throw an IOException.
virtual bool markSupported() const
Does nothing except throw an IOException.
Definition: PushbackInputStream.h:168
A FilterInputStream contains some other input stream, which it uses as its basic source of data...
Definition: FilterInputStream.h:38
virtual int doReadArrayBounded(unsigned char *buffer, int size, int offset, int length)
Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements...
Definition: AprPool.h:25
virtual long long skip(long long num)
Skips over and discards n bytes of data from this input stream.The skip method may, for a variety of reasons, end up skipping over some smaller number of bytes, possibly 0. This may result from any of a number of conditions; reaching end of file before n bytes have been skipped is only one possibility. The actual number of bytes skipped is returned.The skip method of InputStream creates a byte array and then repeatedly reads into it until num bytes have been read or the end of the stream has been reached. Subclasses are encouraged to provide a more efficient implementation of this method.The number of bytes to skip.total bytes skippedif an I/O error occurs. if the concrete stream class does not support skipping bytes.