106460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski/* 206460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski * Copyright (C) 2017 The Android Open Source Project 306460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski * 406460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 506460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski * you may not use this file except in compliance with the License. 606460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski * You may obtain a copy of the License at 706460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski * 806460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 906460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski * 1006460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski * Unless required by applicable law or agreed to in writing, software 1106460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 1206460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1306460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski * See the License for the specific language governing permissions and 1406460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski * limitations under the License. 1506460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski */ 1606460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski 1706460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski#ifndef AAPT_IO_BIGBUFFEROUTPUTSTREAM_H 1806460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski#define AAPT_IO_BIGBUFFEROUTPUTSTREAM_H 1906460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski 2006460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski#include "io/Io.h" 2106460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski#include "util/BigBuffer.h" 2206460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski 2306460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinskinamespace aapt { 2406460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinskinamespace io { 2506460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski 2606460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinskiclass BigBufferOutputStream : public OutputStream { 2706460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski public: 2806460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski inline explicit BigBufferOutputStream(BigBuffer* buffer) : buffer_(buffer) {} 2906460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski virtual ~BigBufferOutputStream() = default; 3006460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski 3106460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski bool Next(void** data, size_t* size) override; 3206460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski 3306460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski void BackUp(size_t count) override; 3406460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski 3506460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski size_t ByteCount() const override; 3606460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski 3706460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski bool HadError() const override; 3806460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski 3906460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski private: 4006460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski DISALLOW_COPY_AND_ASSIGN(BigBufferOutputStream); 4106460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski 4206460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski BigBuffer* buffer_; 4306460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski}; 4406460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski 4506460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski} // namespace io 4606460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski} // namespace aapt 4706460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski 4806460ef0d7072114ea3280e1650f77f55e7223f4Adam Lesinski#endif // AAPT_IO_BIGBUFFEROUTPUTSTREAM_H 49