This commit is contained in:
Bartek Kryza
2022-07-18 23:41:37 +02:00
parent 88a87edc42
commit 8a7e89cb63
32 changed files with 491 additions and 648 deletions

View File

@@ -37,25 +37,25 @@ void generator::generate_relationships(
namespace plantuml_common = clanguml::common::generators::plantuml;
if (f.type() == common::model::source_file_t::kDirectory) {
util::for_each(f, [this, &ostr](const auto &file) {
generate_relationships(
dynamic_cast<const source_file &>(*file), ostr);
});
}
else {
util::for_each_if(
f.relationships(),
[this](const auto &r) {
return m_model.should_include(r.type()) &&
util::contains(m_generated_aliases, r.destination());
},
[&f, &ostr](const auto &r) {
ostr << f.alias() << " "
<< plantuml_common::to_plantuml(r.type(), r.style()) << " "
<< r.destination() << '\n';
});
}
// if (f.type() == common::model::source_file_t::kDirectory) {
// util::for_each(f, [this, &ostr](const auto &file) {
// generate_relationships(
// dynamic_cast<const source_file &>(*file), ostr);
// });
// }
// else {
// util::for_each_if(
// f.relationships(),
// [this](const auto &r) {
// return m_model.should_include(r.type()) &&
// util::contains(m_generated_aliases, r.destination());
// },
// [&f, &ostr](const auto &r) {
// ostr << f.alias() << " "
// << plantuml_common::to_plantuml(r.type(), r.style()) << " "
// << r.destination() << '\n';
// });
// }
}
void generator::generate(const source_file &f, std::ostream &ostr) const

View File

@@ -28,7 +28,7 @@ common::model::diagram_t diagram::type() const
return common::model::diagram_t::kInclude;
}
type_safe::optional_ref<const common::model::diagram_element> diagram::get(
common::optional_ref<common::model::diagram_element> diagram::get(
const std::string &full_name) const
{
return get_file(full_name);
@@ -63,7 +63,7 @@ void diagram::add_file(std::unique_ptr<common::model::source_file> &&f)
add_element(p, std::move(f));
}
type_safe::optional_ref<const common::model::source_file> diagram::get_file(
common::optional_ref<common::model::source_file> diagram::get_file(
const std::string &name) const
{
for (const auto &p : files_) {
@@ -72,7 +72,7 @@ type_safe::optional_ref<const common::model::source_file> diagram::get_file(
}
}
return type_safe::nullopt;
return {};
}
std::string diagram::to_alias(const std::string &full_name) const
@@ -94,8 +94,7 @@ std::string diagram::to_alias(const std::string &full_name) const
return source_file.value().alias();
}
const std::vector<
type_safe::object_ref<const common::model::source_file, false>> &
const common::reference_vector<const common::model::source_file> &
diagram::files() const
{
return files_;

View File

@@ -20,8 +20,7 @@
#include "common/model/diagram.h"
#include "common/model/package.h"
#include "common/model/source_file.h"
#include <type_safe/optional_ref.hpp>
#include "common/types.h"
#include <string>
#include <vector>
@@ -42,23 +41,21 @@ public:
common::model::diagram_t type() const override;
type_safe::optional_ref<const common::model::diagram_element> get(
common::optional_ref<common::model::diagram_element> get(
const std::string &full_name) const override;
void add_file(std::unique_ptr<common::model::source_file> &&f);
type_safe::optional_ref<const common::model::source_file> get_file(
common::optional_ref<common::model::source_file> get_file(
const std::string &name) const;
std::string to_alias(const std::string &full_name) const;
const std::vector<
type_safe::object_ref<const common::model::source_file, false>> &
const common::reference_vector<const common::model::source_file> &
files() const;
private:
std::vector<type_safe::object_ref<const common::model::source_file, false>>
files_;
common::reference_vector<const common::model::source_file> files_;
};
}

View File

@@ -1,43 +0,0 @@
/**
* src/include_diagram/model/visitor/element_visitor_context.cc
*
* Copyright (c) 2021-2022 Bartek Kryza <bkryza@gmail.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "element_visitor_context.h"
#include "translation_unit_context.h"
namespace clanguml::include_diagram::visitor {
template <typename T>
element_visitor_context<T>::element_visitor_context(
clanguml::include_diagram::model::diagram &diagram, T &element)
: element_{element}
, diagram_{diagram}
{
}
template <typename T> T &element_visitor_context<T>::element()
{
return element_;
}
template <typename T>
clanguml::include_diagram::model::diagram &element_visitor_context<T>::diagram()
{
return diagram_;
}
}

View File

@@ -1,63 +0,0 @@
/**
* src/include_diagram/visitor/translation_unit_context.cc
*
* Copyright (c) 2021-2022 Bartek Kryza <bkryza@gmail.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "translation_unit_context.h"
#include "cx/util.h"
namespace clanguml::include_diagram::visitor {
translation_unit_context::translation_unit_context(
cppast::cpp_entity_index &idx,
clanguml::include_diagram::model::diagram &diagram,
const clanguml::config::include_diagram &config)
: entity_index_{idx}
, diagram_{diagram}
, config_{config}
{
}
const cppast::cpp_entity_index &translation_unit_context::entity_index() const
{
return entity_index_;
}
const clanguml::config::include_diagram &
translation_unit_context::config() const
{
return config_;
}
clanguml::include_diagram::model::diagram &translation_unit_context::diagram()
{
return diagram_;
}
void translation_unit_context::set_current_file(
type_safe::optional_ref<common::model::source_file> f)
{
current_file_ = f;
}
type_safe::optional_ref<common::model::source_file>
translation_unit_context::get_current_file() const
{
return current_file_;
}
}