1/*
2 SPDX-FileCopyrightText: 2014 Vishesh Handa <me@vhanda.in>
3
4 SPDX-License-Identifier: LGPL-2.1-or-later
5*/
6
7#ifndef KFILEMETADATA_EXTRACTOR_H
8#define KFILEMETADATA_EXTRACTOR_H
9
10#include "kfilemetadata_export.h"
11#include <QStringList>
12#include <QVariantMap>
13
14#include <memory>
15
16namespace KFileMetaData {
17
18class ExtractionResult;
19class ExtractorCollection;
20class ExtractorPlugin;
21class ExtractorPrivate;
22
23/*!
24 * \class KFileMetaData::Extractor
25 * \inheaderfile KFileMetaData/Extractor
26 * \inmodule KFileMetaData
27 *
28 * \brief The Extractor class is used to extract data from a file.
29 */
30class KFILEMETADATA_EXPORT Extractor
31{
32 /*!
33 * \value AutoDeletePlugin
34 * \value DoNotDeletePlugin
35 */
36 enum ExtractorPluginOwnership {
37 AutoDeletePlugin,
38 DoNotDeletePlugin,
39 };
40
41public:
42 Extractor(Extractor&&);
43 virtual ~Extractor() noexcept;
44
45 /*!
46 *
47 */
48 void extract(ExtractionResult* result);
49
50 /*!
51 *
52 */
53 QStringList mimetypes() const;
54
55 /*!
56 *
57 */
58 QVariantMap extractorProperties() const;
59
60private:
61 KFILEMETADATA_NO_EXPORT Extractor();
62
63 Extractor(const Extractor&) = delete;
64 void operator =(const Extractor&) = delete;
65
66 KFILEMETADATA_NO_EXPORT void setExtractorPlugin(ExtractorPlugin *extractorPlugin);
67
68 KFILEMETADATA_NO_EXPORT void setAutoDeletePlugin(ExtractorPluginOwnership autoDelete);
69
70 KFILEMETADATA_NO_EXPORT void setMetaData(const QVariantMap &metaData);
71
72 friend class ExtractorCollection;
73 friend class ExtractorCollectionPrivate;
74 friend class ExtractorPrivate;
75 std::unique_ptr<ExtractorPrivate> d;
76};
77}
78
79#endif // KFILEMETADATA_EXTRACTOR_H
80

source code of kfilemetadata/src/extractor.h