Unravel Engine C++ Reference
Loading...
Searching...
No Matches
utils.hpp
Go to the documentation of this file.
1
#ifndef GENERATOR_UTILS_HPP
2
#define GENERATOR_UTILS_HPP
3
#include <utility>
4
#include <type_traits>
5
namespace
generator
6
{
7
10
template
<
typename
generator_t,
typename
=
void
>
11
struct
generated_type
12
{
13
// Default case - provide a dummy type for types without generate() method
14
using
type
= void;
15
};
16
17
template
<
typename
generator_t>
18
struct
generated_type
<generator_t,
std
::void_t<decltype(std::declval<const generator_t>().generate())>>
19
{
20
using
type
=
decltype
(std::declval<const generator_t>().generate());
21
};
22
25
template
<
typename
primitive_t,
typename
=
void
>
26
struct
edge_generator_type
27
{
28
// Default case - provide a dummy type for types without edges() method
29
using
type
= void;
30
};
31
32
template
<
typename
primitive_t>
33
struct
edge_generator_type
<primitive_t,
std
::void_t<decltype(std::declval<const primitive_t>().edges())>>
34
{
35
using
type
=
decltype
(std::declval<const primitive_t>().edges());
36
};
37
40
template
<
typename
primitive_t,
typename
=
void
>
41
struct
triangle_generator_type
42
{
43
// Default case - provide a dummy type for types without triangles() method
44
using
type
= void;
45
};
46
47
template
<
typename
primitive_t>
48
struct
triangle_generator_type
<primitive_t,
std
::void_t<decltype(std::declval<const primitive_t>().triangles())>>
49
{
50
using
type
=
decltype
(std::declval<const primitive_t>().triangles());
51
};
52
55
template
<
typename
primitive_t,
typename
=
void
>
56
struct
vertex_generator_type
57
{
58
// Default case - provide a dummy type for types without vertices() method
59
using
type
= void;
60
};
61
62
template
<
typename
primitive_t>
63
struct
vertex_generator_type
<primitive_t,
std
::void_t<decltype(std::declval<const primitive_t>().vertices())>>
64
{
65
using
type
=
decltype
(std::declval<const primitive_t>().vertices());
66
};
67
69
template
<
typename
generator_t>
70
int
count
(
const
generator_t&
generator
)
noexcept
71
{
72
generator_t temp{
generator
};
73
int
c = 0;
74
while
(!temp.done())
75
{
76
++c;
77
temp.next();
78
}
79
return
c;
80
}
81
}
// namespace generator
82
83
#endif
generator
Definition
any_generator.hpp:7
generator::count
int count(const generator_t &generator) noexcept
Counts the number of steps left in the generator.
Definition
utils.hpp:70
std
Definition
render_view_keys.h:37
generator::edge_generator_type< primitive_t, std::void_t< decltype(std::declval< const primitive_t >().edges())> >::type
decltype(std::declval< const primitive_t >().edges()) type
Definition
utils.hpp:35
generator::edge_generator_type
Definition
utils.hpp:27
generator::edge_generator_type::type
void type
Definition
utils.hpp:29
generator::generated_type< generator_t, std::void_t< decltype(std::declval< const generator_t >().generate())> >::type
decltype(std::declval< const generator_t >().generate()) type
Definition
utils.hpp:20
generator::generated_type
Definition
utils.hpp:12
generator::generated_type::type
void type
Definition
utils.hpp:14
generator::triangle_generator_type< primitive_t, std::void_t< decltype(std::declval< const primitive_t >().triangles())> >::type
decltype(std::declval< const primitive_t >().triangles()) type
Definition
utils.hpp:50
generator::triangle_generator_type
Definition
utils.hpp:42
generator::triangle_generator_type::type
void type
Definition
utils.hpp:44
generator::vertex_generator_type< primitive_t, std::void_t< decltype(std::declval< const primitive_t >().vertices())> >::type
decltype(std::declval< const primitive_t >().vertices()) type
Definition
utils.hpp:65
generator::vertex_generator_type
Definition
utils.hpp:57
generator::vertex_generator_type::type
void type
Definition
utils.hpp:59
UnravelEngine
UnravelEngine
engine
engine
rendering
generator
utils.hpp
Generated by
1.12.0