BigBufferOutputStream.h revision 06460ef0d7072114ea3280e1650f77f55e7223f4
1ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu/*
2ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu * Copyright (C) 2017 The Android Open Source Project
3ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu *
4ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu * Licensed under the Apache License, Version 2.0 (the "License");
5ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu * you may not use this file except in compliance with the License.
6ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu * You may obtain a copy of the License at
7ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu *
8ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu *      http://www.apache.org/licenses/LICENSE-2.0
9ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu *
10ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu * Unless required by applicable law or agreed to in writing, software
11ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu * distributed under the License is distributed on an "AS IS" BASIS,
12ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu * See the License for the specific language governing permissions and
14ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu * limitations under the License.
15ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu */
16ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu
17ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu#ifndef AAPT_IO_BIGBUFFEROUTPUTSTREAM_H
18ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu#define AAPT_IO_BIGBUFFEROUTPUTSTREAM_H
19ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu
20ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu#include "io/Io.h"
21ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu#include "util/BigBuffer.h"
22ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu
23ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gunamespace aapt {
24ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gunamespace io {
25ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu
26ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Guclass BigBufferOutputStream : public OutputStream {
27ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu public:
28ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu  inline explicit BigBufferOutputStream(BigBuffer* buffer) : buffer_(buffer) {}
29ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu  virtual ~BigBufferOutputStream() = default;
30ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu
31ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu  bool Next(void** data, size_t* size) override;
32ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu
33ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu  void BackUp(size_t count) override;
34ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu
35ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu  size_t ByteCount() const override;
36ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu
37ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu  bool HadError() const override;
38ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu
39ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu private:
40ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu  DISALLOW_COPY_AND_ASSIGN(BigBufferOutputStream);
41ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu
42ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu  BigBuffer* buffer_;
43ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu};
44ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu
45fa0f278ff6c3ac316e12489a3cf0146766c168ceAlan Viverette}  // namespace io
46ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu}  // namespace aapt
47ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu
48ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu#endif  // AAPT_IO_BIGBUFFEROUTPUTSTREAM_H
49ae6b4cc8fd0872c64c4e1295e54e109222938d86Dake Gu