32class TerminalParserRegistry
35 using Factory = std::function<std::unique_ptr<ITerminalOutputParser>()>;
36 using Matcher = std::function<bool(
const TerminalLaunchConfig&)>;
38 static TerminalParserRegistry&
Get();
48 void RegisterParser(
const std::string& name,
Factory factory, Matcher matcher = {});
51 void UnregisterParser(
const std::string& name);
58 std::unique_ptr<ITerminalOutputParser> CreateParserFor(
59 const TerminalLaunchConfig& cfg,
60 const std::string& forcedName = {});
63 std::unique_ptr<ITerminalOutputParser> CreateParserByName(
const std::string& name);
66 std::vector<std::string> GetRegisteredNames()
const;
69 std::string GetMatchingParserName(
const TerminalLaunchConfig& cfg)
const;
72 TerminalParserRegistry();
73 void RegisterBuiltins();
82 mutable std::mutex mMutex;
83 std::vector<Entry> mEntries;
84 std::string mDefaultName;