AI 24/25 Project Software
Documentation for the AI 24/25 course programming project software
Loading...
Searching...
No Matches
doc_printer.h
1#ifndef PLUGINS_DOC_PRINTER_H
2#define PLUGINS_DOC_PRINTER_H
3
4#include "registry.h"
5
6#include <iostream>
7#include <string>
8#include <vector>
9
10namespace downward::cli::plugins {
11class Feature;
12class Registry;
13
14class DocPrinter {
15 virtual void print_category(const FeatureType& type) const;
16 virtual void print_subcategory(
17 const std::string& subcategory_name,
18 const std::vector<const Feature*>& plugins) const;
19 virtual void print_feature(const Feature& plugin) const;
20
21protected:
22 std::ostream& os;
23 const Registry& registry;
24
25 virtual void print_synopsis(const Feature& plugin) const = 0;
26 virtual void print_usage(const Feature& plugin) const = 0;
27 virtual void print_arguments(const Feature& plugin) const = 0;
28 virtual void print_notes(const Feature& plugin) const = 0;
29 virtual void print_language_features(const Feature& plugin) const = 0;
30 virtual void print_properties(const Feature& plugin) const = 0;
31 virtual void
32 print_category_header(const std::string& category_name) const = 0;
33 virtual void print_category_synopsis(
34 const std::string& synopsis,
35 bool supports_variable_binding) const = 0;
36 virtual void print_category_footer() const = 0;
37
38public:
39 DocPrinter(std::ostream& out, Registry& registry);
40 virtual ~DocPrinter() = default;
41
42 void print_all() const;
43 void print_feature(const std::string& name) const;
44};
45
46class Txt2TagsPrinter : public DocPrinter {
47protected:
48 virtual void print_synopsis(const Feature& plugin) const override;
49 virtual void print_usage(const Feature& plugin) const override;
50 virtual void print_arguments(const Feature& plugin) const override;
51 virtual void print_notes(const Feature& plugin) const override;
52 virtual void print_language_features(const Feature& plugin) const override;
53 virtual void print_properties(const Feature& plugin) const override;
54 virtual void
55 print_category_header(const std::string& category_name) const override;
56 virtual void print_category_synopsis(
57 const std::string& synopsis,
58 bool supports_variable_binding) const override;
59 virtual void print_category_footer() const override;
60
61public:
62 Txt2TagsPrinter(std::ostream& out, Registry& registry);
63};
64
65class PlainPrinter : public DocPrinter {
66 // If this is false, notes, properties and language_features are omitted.
67 bool print_all;
68
69protected:
70 virtual void print_synopsis(const Feature& plugin) const override;
71 virtual void print_usage(const Feature& plugin) const override;
72 virtual void print_arguments(const Feature& plugin) const override;
73 virtual void print_notes(const Feature& plugin) const override;
74 virtual void print_language_features(const Feature& plugin) const override;
75 virtual void print_properties(const Feature& plugin) const override;
76 virtual void
77 print_category_header(const std::string& category_name) const override;
78 virtual void print_category_synopsis(
79 const std::string& synopsis,
80 bool supports_variable_binding) const override;
81 virtual void print_category_footer() const override;
82
83public:
84 PlainPrinter(std::ostream& out, Registry& registry, bool print_all = false);
85};
86} // namespace downward::cli::plugins
87
88#endif