mpd/src/archive/ArchivePlugin.hxx

47 lines
1009 B
C++
Raw Normal View History

// SPDX-License-Identifier: GPL-2.0-or-later
// Copyright The Music Player Daemon Project
2013-01-24 19:18:58 +01:00
#ifndef MPD_ARCHIVE_PLUGIN_HXX
#define MPD_ARCHIVE_PLUGIN_HXX
#include <memory>
2013-01-29 23:26:51 +01:00
class ArchiveFile;
2014-02-08 13:21:50 +01:00
class Path;
struct ArchivePlugin {
const char *name;
/**
2013-10-19 18:19:03 +02:00
* optional, set this to nullptr if the archive plugin doesn't
* have/need one this must false if there is an error and
* true otherwise
*/
bool (*init)();
/**
2013-10-19 18:19:03 +02:00
* optional, set this to nullptr if the archive plugin doesn't
* have/need one
*/
void (*finish)();
/**
* tryes to open archive file and associates handle with archive
* returns pointer to handle used is all operations with this archive
*
* Throws std::runtime_error on error.
*/
std::unique_ptr<ArchiveFile> (*open)(Path path_fs);
/**
* suffixes handled by this plugin.
2013-10-19 18:19:03 +02:00
* last element in these arrays must always be a nullptr
*/
const char *const*suffixes;
};
std::unique_ptr<ArchiveFile>
archive_file_open(const ArchivePlugin *plugin, Path path);
#endif