Ariles
ariles_diagram.h
Go to the documentation of this file.
1 /**
2  @file
3  @author Alexander Sherikov
4 
5  @copyright 2020 Alexander Sherikov, Licensed under the Apache License, Version 2.0.
6  (see @ref LICENSE or http://www.apache.org/licenses/LICENSE-2.0)
7 
8  @brief
9 */
10 // cppcheck-suppress-file duplInheritedMember
11 
12 #pragma once
13 
14 
15 namespace ariles_tests
16 {
18  {
19  public:
20  std::string id_;
21  std::string url_;
22 
23 
24  public:
25  ArilesDependencyParameters(const std::string &id, const std::string &url) : id_(id), url_(url)
26  {
27  }
28 
30  const std::string & /*id*/,
31  const std::string & /*label*/) const
32  {
33  return (ariles2::graphviz::Parameters::NodeOptions(id_, url_, std::string("URL=\"") + url_ + "\""));
34  }
35  };
36 
37 
39  {
40  public:
42  const std::string &id,
43  const std::string &label) const
44  {
45  std::string url_name = label;
46  std::size_t pos = url_name.find("_");
47 
48  while (pos != std::string::npos)
49  {
50  url_name.replace(pos, 1, "__");
51  pos = url_name.find("_", pos + 2);
52  }
53 
55  id,
56  label,
57  std::string("URL=\"https://asherikov.github.io/ariles/2/group__") + url_name + ".html\""));
58  }
59  };
60 
61 
63  {
64 #define ARILES2_ENTRIES(v)
65 #include ARILES2_INITIALIZE
66 
67  public:
69 
70  public:
72  {
73  }
74 
75  ArilesDependency(const std::string &id, const std::string &url) : parameters_(id, url)
76  {
77  }
78 
80  {
81  }
82 
84  const ariles2::graphviz::Visitor & /*visitor*/) const override
85  {
86  return (parameters_);
87  }
88  };
89 
90 
92  {
93 #define ARILES2_ENTRIES(v) ARILES2_ENTRY_(v, dependencies)
94 #include ARILES2_INITIALIZE
95 
96  public:
97  std::vector<ArilesDependency> dependencies_;
98 
99  public:
100  virtual ~ArilesVisitor()
101  {
102  }
103 
105  const ariles2::graphviz::Visitor & /*visitor*/) const override
106  {
107  static const ArilesVisitorParameters parameters;
108  return (parameters);
109  }
110  };
111 
112 
114  {
115 #define ARILES2_DEFAULT_ID "ariles"
116 #define ARILES2_ENTRIES(v) ARILES2_ENTRY_(v, visitors)
117 #include ARILES2_INITIALIZE
118 
119  public:
120  std::map<std::string, ArilesVisitor> visitors_;
121 
122 
123  public:
125  {
126  ariles2::apply<ariles2::Defaults>(*this);
127  }
128 
129 
130  void arilesVisit(const ariles2::Defaults & /*visitor*/, const ariles2::Defaults::Parameters & /*param*/)
131  {
132  visitors_["namevalue"] = ArilesVisitor();
133  visitors_["graphviz"] = ArilesVisitor();
134  visitors_["octave"] = ArilesVisitor();
135 
136  visitors_["jsonnet"] = ArilesVisitor();
137  visitors_["jsonnet"].dependencies_.push_back(ArilesDependency("jsonnet", "https://jsonnet.org/"));
138 
139  visitors_["msgpack"] = ArilesVisitor();
140  visitors_["msgpack"].dependencies_.push_back(ArilesDependency("msgpack", "https://msgpack.org/"));
141 
142  visitors_["pugixml"] = ArilesVisitor();
143  visitors_["pugixml"].dependencies_.push_back(ArilesDependency("pugixml", "https://pugixml.org/"));
144 
145  visitors_["rapidjson"] = ArilesVisitor();
146  visitors_["rapidjson"].dependencies_.push_back(ArilesDependency("rapidjson", "https://rapidjson.org/"));
147 
148  visitors_["rosparam"] = ArilesVisitor();
149  visitors_["rosparam"].dependencies_.push_back(ArilesDependency("ros", "https://www.ros.org/"));
150 
151  visitors_["yaml_cpp"] = ArilesVisitor();
152  visitors_["yaml_cpp"].dependencies_.push_back(
153  ArilesDependency("yaml_cpp", "https://github.com/jbeder/yaml-cpp"));
154  }
155 
156  void randomize()
157  {
158  }
159  };
160 } // namespace ariles_tests
virtual ariles2::graphviz::Parameters::NodeOptions getArilesNodeOptions(const std::string &, const std::string &) const
ArilesDependencyParameters(const std::string &id, const std::string &url)
ArilesDependency(const std::string &id, const std::string &url)
const ariles2::graphviz::Parameters & arilesGetParameters(const ariles2::graphviz::Visitor &) const override
ArilesDependencyParameters parameters_
std::map< std::string, ArilesVisitor > visitors_
void arilesVisit(const ariles2::Defaults &, const ariles2::Defaults::Parameters &)
virtual ariles2::graphviz::Parameters::NodeOptions getArilesNodeOptions(const std::string &id, const std::string &label) const
const ariles2::graphviz::Parameters & arilesGetParameters(const ariles2::graphviz::Visitor &) const override
std::vector< ArilesDependency > dependencies_