0.6.0
C++ to UML diagram generator based on Clang
Loading...
Searching...
No Matches
src
common
model
namespace.h
Go to the documentation of this file.
1
/**
2
* @file src/common/model/namespace.h
3
*
4
* Copyright (c) 2021-2025 Bartek Kryza <bkryza@gmail.com>
5
*
6
* Licensed under the Apache License, Version 2.0 (the "License");
7
* you may not use this file except in compliance with the License.
8
* You may obtain a copy of the License at
9
*
10
* http://www.apache.org/licenses/LICENSE-2.0
11
*
12
* Unless required by applicable law or agreed to in writing, software
13
* distributed under the License is distributed on an "AS IS" BASIS,
14
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
* See the License for the specific language governing permissions and
16
* limitations under the License.
17
*/
18
#pragma once
19
20
#include "
path.h
"
21
22
#include <optional>
23
#include <string>
24
#include <vector>
25
26
namespace
clanguml::common::model
{
27
28
struct
ns_path_separator
{
29
static
constexpr
std::string_view
value
=
"::"
;
30
};
31
32
using
namespace_
=
path
;
33
34
}
35
36
namespace
std
{
37
38
template
<>
struct
hash<
clanguml
::common::model::namespace_> {
39
std::size_t
operator()
(
const
clanguml::common::model::namespace_
&key)
const
40
{
41
using
clanguml::common::model::path
;
42
43
std::size_t seed = key.
size
();
44
for
(
const
auto
&ns : key) {
45
seed ^=
46
std::hash<std::string>{}(ns) +
clanguml::util::hash_seed
(seed);
47
}
48
49
return
seed;
50
}
51
};
52
53
}
// namespace std
Copyright © 2022-present
Bartek Kryza
Generated by
1.9.7