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>
5namespace generator
6{
7
10template<typename generator_t, typename = void>
12{
13 // Default case - provide a dummy type for types without generate() method
14 using type = void;
15};
16
17template<typename generator_t>
18struct 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
25template<typename primitive_t, typename = void>
27{
28 // Default case - provide a dummy type for types without edges() method
29 using type = void;
30};
31
32template<typename primitive_t>
33struct 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
40template<typename primitive_t, typename = void>
42{
43 // Default case - provide a dummy type for types without triangles() method
44 using type = void;
45};
46
47template<typename primitive_t>
48struct 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
55template<typename primitive_t, typename = void>
57{
58 // Default case - provide a dummy type for types without vertices() method
59 using type = void;
60};
61
62template<typename primitive_t>
63struct 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
69template<typename generator_t>
70int 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
int count(const generator_t &generator) noexcept
Counts the number of steps left in the generator.
Definition utils.hpp:70