annotate knownplugins.h @ 4:6f891a9c6434

Make checker with hard-coded knowledge about various plugin types and paths; fix some process management problems
author Chris Cannam
date Wed, 13 Apr 2016 12:00:07 +0100
parents
children 74064d6f5e07
rev   line source
Chris@4 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@4 2
Chris@4 3 #ifndef KNOWN_PLUGINS_H
Chris@4 4 #define KNOWN_PLUGINS_H
Chris@4 5
Chris@4 6 #include "plugincandidates.h"
Chris@4 7
Chris@4 8 #include <string>
Chris@4 9 #include <map>
Chris@4 10 #include <vector>
Chris@4 11
Chris@4 12 class KnownPlugins
Chris@4 13 {
Chris@4 14 typedef std::vector<std::string> stringlist;
Chris@4 15
Chris@4 16 public:
Chris@4 17 enum PluginType {
Chris@4 18 VampPlugin,
Chris@4 19 LADSPAPlugin,
Chris@4 20 DSSIPlugin
Chris@4 21 };
Chris@4 22
Chris@4 23 KnownPlugins();
Chris@4 24
Chris@4 25 std::vector<PluginType> getKnownPluginTypes() const {
Chris@4 26 return { VampPlugin, LADSPAPlugin, DSSIPlugin };
Chris@4 27 };
Chris@4 28
Chris@4 29 std::string getTagFor(PluginType type) const {
Chris@4 30 return m_known.at(type).tag;
Chris@4 31 }
Chris@4 32
Chris@4 33 stringlist getCandidateLibrariesFor(PluginType type) const {
Chris@4 34 return m_candidates.getCandidateLibrariesFor(getTagFor(type));
Chris@4 35 }
Chris@4 36
Chris@4 37 std::string getFailureReport() const;
Chris@4 38
Chris@4 39 private:
Chris@4 40 struct TypeRec {
Chris@4 41 std::string tag;
Chris@4 42 stringlist path;
Chris@4 43 std::string descriptor;
Chris@4 44 };
Chris@4 45 std::map<PluginType, TypeRec> m_known;
Chris@4 46
Chris@4 47 stringlist expandConventionalPath(PluginType type, std::string var);
Chris@4 48 std::string getDefaultPath(PluginType type);
Chris@4 49
Chris@4 50 PluginCandidates m_candidates;
Chris@4 51 };
Chris@4 52
Chris@4 53 #endif