1cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom/* 2cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom * Copyright (C) 2013 The Android Open Source Project 3cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom * 4cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom * Licensed under the Apache License, Version 2.0 (the "License"); 5cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom * you may not use this file except in compliance with the License. 6cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom * You may obtain a copy of the License at 7cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom * 8cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom * http://www.apache.org/licenses/LICENSE-2.0 9cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom * 10cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom * Unless required by applicable law or agreed to in writing, software 11cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom * distributed under the License is distributed on an "AS IS" BASIS, 12cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom * See the License for the specific language governing permissions and 14cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom * limitations under the License. 15cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom */ 16cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom 170e480cad5d2cf0904b98b7b56e90280e9b97ba30Ian Rogers#ifndef ART_COMPILER_OUTPUT_STREAM_H_ 180e480cad5d2cf0904b98b7b56e90280e9b97ba30Ian Rogers#define ART_COMPILER_OUTPUT_STREAM_H_ 19cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom 20cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom#include <stdint.h> 21cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom 22cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom#include <string> 23cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom 24cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom#include "base/macros.h" 25cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom 26cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstromnamespace art { 27cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom 2849a0f158ed11974fa2cc12014c9f55a31dabd8dfBrian Carlstromenum Whence { 296f485c62b9cfce3ab71020c646ab9f48d9d29d6dBrian Carlstrom kSeekSet = SEEK_SET, 306f485c62b9cfce3ab71020c646ab9f48d9d29d6dBrian Carlstrom kSeekCurrent = SEEK_CUR, 316f485c62b9cfce3ab71020c646ab9f48d9d29d6dBrian Carlstrom kSeekEnd = SEEK_END, 3249a0f158ed11974fa2cc12014c9f55a31dabd8dfBrian Carlstrom}; 3349a0f158ed11974fa2cc12014c9f55a31dabd8dfBrian Carlstrom 34cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstromclass OutputStream { 35cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom public: 3693ba893c20532990a430741e0a97212900094e8cBrian Carlstrom explicit OutputStream(const std::string& location) : location_(location) {} 37cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom 3849a0f158ed11974fa2cc12014c9f55a31dabd8dfBrian Carlstrom virtual ~OutputStream() {} 39cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom 40cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom const std::string& GetLocation() const { 41cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom return location_; 42cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom } 43cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom 446f485c62b9cfce3ab71020c646ab9f48d9d29d6dBrian Carlstrom virtual bool WriteFully(const void* buffer, int64_t byte_count) = 0; 45cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom 466f485c62b9cfce3ab71020c646ab9f48d9d29d6dBrian Carlstrom virtual off_t Seek(off_t offset, Whence whence) = 0; 47cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom 48cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom private: 49cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom const std::string location_; 50cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom 51cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom DISALLOW_COPY_AND_ASSIGN(OutputStream); 52cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom}; 53cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom 54cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom} // namespace art 55cd60ac736bc7104785dc67671660d70fb434466fBrian Carlstrom 560e480cad5d2cf0904b98b7b56e90280e9b97ba30Ian Rogers#endif // ART_COMPILER_OUTPUT_STREAM_H_ 57