fs/io/TextFile: add interface LineReader
This commit is contained in:
		
							
								
								
									
										33
									
								
								src/fs/io/LineReader.hxx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								src/fs/io/LineReader.hxx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | |||||||
|  | /* | ||||||
|  |  * Copyright 2003-2021 The Music Player Daemon Project | ||||||
|  |  * http://www.musicpd.org | ||||||
|  |  * | ||||||
|  |  * This program is free software; you can redistribute it and/or modify | ||||||
|  |  * it under the terms of the GNU General Public License as published by | ||||||
|  |  * the Free Software Foundation; either version 2 of the License, or | ||||||
|  |  * (at your option) any later version. | ||||||
|  |  * | ||||||
|  |  * This program is distributed in the hope that it will be useful, | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  * GNU General Public License for more details. | ||||||
|  |  * | ||||||
|  |  * You should have received a copy of the GNU General Public License along | ||||||
|  |  * with this program; if not, write to the Free Software Foundation, Inc., | ||||||
|  |  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #pragma once | ||||||
|  |  | ||||||
|  | class LineReader | ||||||
|  | { | ||||||
|  | public: | ||||||
|  | 	/** | ||||||
|  | 	 * Reads a line from the input file, and strips trailing | ||||||
|  | 	 * space.  There is a reasonable maximum line length, only to | ||||||
|  | 	 * prevent denial of service. | ||||||
|  | 	 * | ||||||
|  | 	 * @return a pointer to the line, or nullptr on end-of-file | ||||||
|  | 	 */ | ||||||
|  | 	virtual char *ReadLine() = 0; | ||||||
|  | }; | ||||||
| @@ -20,6 +20,7 @@ | |||||||
| #ifndef MPD_TEXT_FILE_HXX | #ifndef MPD_TEXT_FILE_HXX | ||||||
| #define MPD_TEXT_FILE_HXX | #define MPD_TEXT_FILE_HXX | ||||||
|  |  | ||||||
|  | #include "LineReader.hxx" | ||||||
| #include "config.h" | #include "config.h" | ||||||
|  |  | ||||||
| #include <memory> | #include <memory> | ||||||
| @@ -29,7 +30,7 @@ class FileReader; | |||||||
| class AutoGunzipReader; | class AutoGunzipReader; | ||||||
| class BufferedReader; | class BufferedReader; | ||||||
|  |  | ||||||
| class TextFile { | class TextFile final : public LineReader { | ||||||
| 	const std::unique_ptr<FileReader> file_reader; | 	const std::unique_ptr<FileReader> file_reader; | ||||||
|  |  | ||||||
| #ifdef ENABLE_ZLIB | #ifdef ENABLE_ZLIB | ||||||
| @@ -45,14 +46,8 @@ public: | |||||||
|  |  | ||||||
| 	~TextFile() noexcept; | 	~TextFile() noexcept; | ||||||
|  |  | ||||||
| 	/** | 	/* virtual methods from class LineReader */ | ||||||
| 	 * Reads a line from the input file, and strips trailing | 	char *ReadLine() override; | ||||||
| 	 * space.  There is a reasonable maximum line length, only to |  | ||||||
| 	 * prevent denial of service. |  | ||||||
| 	 * |  | ||||||
| 	 * @return a pointer to the line, or nullptr on end-of-file |  | ||||||
| 	 */ |  | ||||||
| 	char *ReadLine(); |  | ||||||
| }; | }; | ||||||
|  |  | ||||||
| #endif | #endif | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Max Kellermann
					Max Kellermann