1bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross/* 2bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross * Copyright (C) 2015 The Android Open Source Project 3bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross * 4bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross * Licensed under the Apache License, Version 2.0 (the "License"); 5bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross * you may not use this file except in compliance with the License. 6bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross * You may obtain a copy of the License at 7bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross * 8bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross * http://www.apache.org/licenses/LICENSE-2.0 9bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross * 10bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross * Unless required by applicable law or agreed to in writing, software 11bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross * distributed under the License is distributed on an "AS IS" BASIS, 12bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross * See the License for the specific language governing permissions and 14bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross * limitations under the License. 15bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross */ 16bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross 17bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross#ifndef _LIBMEMUNREACHABLE_LINE_BUFFER_H 18bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross#define _LIBMEMUNREACHABLE_LINE_BUFFER_H 19bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross 20bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross#include <stdint.h> 21bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross 22a9939e9a23ea21f4f8dc69cf1dae8e95debadcfbColin Crossnamespace android { 23a9939e9a23ea21f4f8dc69cf1dae8e95debadcfbColin Cross 24bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Crossclass LineBuffer { 25bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross public: 26bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross LineBuffer(int fd, char* buffer, size_t buffer_len); 27bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross 28bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross bool GetLine(char** line, size_t* line_len); 29bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross 30bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross private: 31bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross int fd_; 32bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross char* buffer_ = nullptr; 33bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross size_t buffer_len_ = 0; 34bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross size_t start_ = 0; 35bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross size_t bytes_ = 0; 36bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross}; 37bcb4ed3eaa92d23949d4ab33dbf1b2604bba8a18Colin Cross 38a9939e9a23ea21f4f8dc69cf1dae8e95debadcfbColin Cross} // namespace android 39a9939e9a23ea21f4f8dc69cf1dae8e95debadcfbColin Cross 40a83881e33ce29ee236c924d669cb41a9d816962dColin Cross#endif // _LIBMEMUNREACHABLE_LINE_BUFFER_H 41