MPD: storage/MemoryDirectoryReader.hxx Source File

MPD 0.20.15

MemoryDirectoryReader.hxx
Go to the documentation of this file.
1 /*
2 * Copyright 2003-2017 The Music Player Daemon Project
3 * http://www.musicpd.org
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19
20 #ifndef MPD_STORAGE_MEMORY_DIRECTORY_READER_HXX
21 #define MPD_STORAGE_MEMORY_DIRECTORY_READER_HXX
22
23 #include "check.h"
24 #include "StorageInterface.hxx"
25 #include "FileInfo.hxx"
26
27 #include <string>
28 #include <forward_list>
29
34 class MemoryStorageDirectoryReader final : public StorageDirectoryReader {
35 public:
36 struct Entry {
37 std::string name;
38
39 StorageFileInfo info;
40
41 template<typename N>
42 explicit Entry(N &&_name):name(std::forward<N>(_name)) {}
43 };
44
45 typedef std::forward_list<Entry> List;
46
47 private:
48 List entries;
49
50 bool first;
51
52 public:
53 MemoryStorageDirectoryReader()
54 :first(true) {}
55
56 MemoryStorageDirectoryReader(MemoryStorageDirectoryReader &&src)
57 :entries(std::move(src.entries)), first(src.first) {}
58
59 MemoryStorageDirectoryReader(List &&_entries)
60 :entries(std::move(_entries)), first(true) {}
61
62 /* virtual methods from class StorageDirectoryReader */
63 const char *Read() override;
64 StorageFileInfo GetInfo(bool follow) override;
65 };
66
67 #endif
MemoryStorageDirectoryReader
A StorageDirectoryReader implementation that returns directory entries from a memory allocation...
Definition: MemoryDirectoryReader.hxx:34
check.h
MemoryStorageDirectoryReader::Entry
Definition: MemoryDirectoryReader.hxx:36
MemoryStorageDirectoryReader::MemoryStorageDirectoryReader
MemoryStorageDirectoryReader()
Definition: MemoryDirectoryReader.hxx:53
StorageFileInfo
Definition: FileInfo.hxx:28
MemoryStorageDirectoryReader::Entry::info
StorageFileInfo info
Definition: MemoryDirectoryReader.hxx:39
FileInfo.hxx
MemoryStorageDirectoryReader::MemoryStorageDirectoryReader
MemoryStorageDirectoryReader(List &&_entries)
Definition: MemoryDirectoryReader.hxx:59
MemoryStorageDirectoryReader::Entry::name
std::string name
Definition: MemoryDirectoryReader.hxx:37
StorageInterface.hxx
MemoryStorageDirectoryReader::MemoryStorageDirectoryReader
MemoryStorageDirectoryReader(MemoryStorageDirectoryReader &&src)
Definition: MemoryDirectoryReader.hxx:56
StorageDirectoryReader
Definition: StorageInterface.hxx:31
MemoryStorageDirectoryReader::GetInfo
StorageFileInfo GetInfo(bool follow) override
Throws #std::runtime_error on error.
MemoryStorageDirectoryReader::List
std::forward_list< Entry > List
Definition: MemoryDirectoryReader.hxx:45
MemoryStorageDirectoryReader::Entry::Entry
Entry(N &&_name)
Definition: MemoryDirectoryReader.hxx:42
MemoryStorageDirectoryReader::Read
const char * Read() override