Bash++
Bash++ compiler internal documentation
EntityNode.h
Go to the documentation of this file.
1
6#pragma once
7#include "interval_tree.hpp"
8#include "tree_hooks.hpp"
9#include <cstdint>
10#include <memory>
11
12// Forward decl.
13namespace bpp {
14class bpp_entity;
15}
16
17using IntervalType = lib_interval_tree::interval<uint64_t, lib_interval_tree::closed>;
18
19struct EntityNode : lib_interval_tree::node<uint64_t, IntervalType, EntityNode> {
20 using base_type = lib_interval_tree::node<uint64_t, IntervalType, EntityNode>;
21 using interval_type = typename base_type::interval_type;
22
23 std::shared_ptr<bpp::bpp_entity> payload;
24
26 : base_type(parent, std::move(interval)) {}
27};
28
29struct EntityHooks : lib_interval_tree::hooks::regular {
31
32 template <typename IteratorT>
33 static inline bool on_find(IteratorT) noexcept { return true; }
34
35 template <typename IteratorT>
36 static inline bool on_overlap_find_all(
37 std::conditional<true,
38 lib_interval_tree::interval_tree<lib_interval_tree::interval<uint64_t,
39 lib_interval_tree::closed>,
41 const lib_interval_tree::interval_tree<lib_interval_tree::interval<uint64_t,
42 lib_interval_tree::closed>,
44 >::type&,
45 lib_interval_tree::interval_tree<lib_interval_tree::interval<uint64_t,
46 lib_interval_tree::closed>,
48 const lib_interval_tree::interval_tree<lib_interval_tree::interval<uint64_t,
49 lib_interval_tree::closed>,
50 EntityHooks>::interval_type&
51 ) noexcept { return true; }
52};
53
lib_interval_tree::interval< uint64_t, lib_interval_tree::closed > IntervalType
Definition EntityNode.h:17
Definition bash_case.cpp:8
Definition EntityNode.h:29
static bool on_overlap_find_all(std::conditional< true, lib_interval_tree::interval_tree< lib_interval_tree::interval< uint64_t, lib_interval_tree::closed >, EntityHooks >, const lib_interval_tree::interval_tree< lib_interval_tree::interval< uint64_t, lib_interval_tree::closed >, EntityHooks > >::type &, lib_interval_tree::interval_tree< lib_interval_tree::interval< uint64_t, lib_interval_tree::closed >, EntityHooks >::node_type *&, const lib_interval_tree::interval_tree< lib_interval_tree::interval< uint64_t, lib_interval_tree::closed >, EntityHooks >::interval_type &) noexcept
Definition EntityNode.h:36
EntityNode node_type
Definition EntityNode.h:30
static bool on_find(IteratorT) noexcept
Definition EntityNode.h:33
Definition EntityNode.h:19
EntityNode(EntityNode *parent, interval_type interval)
Definition EntityNode.h:25
typename base_type::interval_type interval_type
Definition EntityNode.h:21
lib_interval_tree::node< uint64_t, IntervalType, EntityNode > base_type
Definition EntityNode.h:20
std::shared_ptr< bpp::bpp_entity > payload
Definition EntityNode.h:23