Added package diagram test case with C++20 module partitions dependencies

This commit is contained in:
Bartek Kryza
2023-12-24 16:47:19 +01:00
parent 453f265feb
commit 637112cea5
39 changed files with 545 additions and 62 deletions

35
src/common/model/path.cc Normal file
View File

@@ -0,0 +1,35 @@
/**
* @file src/common/model/path.cc
*
* Copyright (c) 2021-2023 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 "path.h"
namespace clanguml::common::model {
std::string to_string(const path_type pt)
{
switch (pt) {
case path_type::kModule:
return "module";
case path_type::kNamespace:
return "namespace";
case path_type::kFilesystem:
return "directory";
}
}
} // namespace clanguml::common::model

View File

@@ -37,6 +37,8 @@ enum class path_type {
kModule /*!< Module path */
};
std::string to_string(path_type pt);
/**
* @brief Diagram path
*
@@ -135,7 +137,8 @@ public:
return *this;
if (path_type_ != right.path_type_)
throw std::runtime_error("");
throw std::runtime_error(
"Cannot assign a path to a path with another path type.");
path_type_ = right.path_type_;
path_ = right.path_;
@@ -225,6 +228,7 @@ public:
path operator|(const path &right) const
{
path res{*this};
res.path_type_ = right.path_type_;
res.append(right);
return res;
}