entttree 0.1.0
Hierarchical entity management for EnTT
Loading...
Searching...
No Matches
defs.h File Reference

Common type aliases, enumerations, and utility functions used throughout entttree. More...

#include <cstddef>
#include <functional>
#include <optional>
#include <ranges>
#include <ankerl/unordered_dense.h>
#include <geomc/linalg/LinalgTypes.h>
#include <geomc/shape/ShapeTypes.h>
#include <geomc/Hash.h>
#include <geomc/SmallStorage.h>
#include <entt/entt.hpp>

Go to the source code of this file.

Typedefs

template<typename K , typename V , typename Hasher = std::hash<K>, typename KeyEqual = std::equal_to<K>>
using entttree::DenseMap = ankerl::unordered_dense::map< K, V, Hasher, KeyEqual >
 High-performance hash map backed by ankerl::unordered_dense.
 
template<typename T , typename Hasher = std::hash<T>, typename KeyEqual = std::equal_to<T>>
using entttree::DenseSet = ankerl::unordered_dense::set< T, Hasher, KeyEqual >
 High-performance hash set backed by ankerl::unordered_dense.
 

Enumerations

enum struct  entttree::DfsOrder { ShallowFirst , DeepFirst }
 Controls the visit order for depth-first traversal. More...
 
enum struct  entttree::SiblingOrder { Forward , Backward }
 Controls the iteration order of siblings within a parent. More...
 

Functions

template<typename K , typename V >
std::optional< Ventttree::get_or (const DenseMap< K, V > &m, const K &k)
 Look up a key in a DenseMap, returning an optional value.
 
template<typename K , typename V >
V entttree::get_or (const DenseMap< K, V > &m, const K &k, const V &v)
 Look up a key in a DenseMap, returning a default if not found.
 
template<typename K , typename V , typename Arg >
std::optional< Ventttree::exchange (DenseMap< K, V > &m, const K &k, Arg &&v)
 Insert or replace a value in a DenseMap.
 
template<typename K , typename V >
std::optional< Ventttree::remove_item (DenseMap< K, V > &m, const K &k)
 Remove a key from a DenseMap.
 

Detailed Description

Common type aliases, enumerations, and utility functions used throughout entttree.

Definition in file defs.h.

Typedef Documentation

◆ DenseMap

template<typename K , typename V , typename Hasher = std::hash<K>, typename KeyEqual = std::equal_to<K>>
using entttree::DenseMap = typedef ankerl::unordered_dense::map<K,V,Hasher,KeyEqual>

High-performance hash map backed by ankerl::unordered_dense.

Definition at line 28 of file defs.h.

◆ DenseSet

template<typename T , typename Hasher = std::hash<T>, typename KeyEqual = std::equal_to<T>>
using entttree::DenseSet = typedef ankerl::unordered_dense::set<T,Hasher,KeyEqual>

High-performance hash set backed by ankerl::unordered_dense.

Definition at line 32 of file defs.h.

Enumeration Type Documentation

◆ DfsOrder

enum struct entttree::DfsOrder
strong

Controls the visit order for depth-first traversal.

Enumerator
ShallowFirst 

Visit a node before its descendants (pre-order).

DeepFirst 

Visit a node after its descendants (post-order).

Definition at line 35 of file defs.h.

◆ SiblingOrder

enum struct entttree::SiblingOrder
strong

Controls the iteration order of siblings within a parent.

Enumerator
Forward 

Iterate siblings in ascending position order.

Backward 

Iterate siblings in descending position order.

Definition at line 43 of file defs.h.

Function Documentation

◆ exchange()

template<typename K , typename V , typename Arg >
std::optional< V > entttree::exchange ( DenseMap< K, V > &  m,
const K &  k,
Arg &&  v 
)

Insert or replace a value in a DenseMap.

Returns
The previous value associated with k, or std::nullopt if the key was new.

Definition at line 77 of file defs.h.

References entttree::exchange().

Referenced by entttree::exchange().

◆ get_or() [1/2]

template<typename K , typename V >
std::optional< V > entttree::get_or ( const DenseMap< K, V > &  m,
const K &  k 
)

Look up a key in a DenseMap, returning an optional value.

Returns
The value associated with k, or std::nullopt if not found.

Definition at line 56 of file defs.h.

References entttree::get_or().

Referenced by entttree::get_or(), and entttree::get_or().

◆ get_or() [2/2]

template<typename K , typename V >
V entttree::get_or ( const DenseMap< K, V > &  m,
const K &  k,
const V v 
)

Look up a key in a DenseMap, returning a default if not found.

Returns
The value associated with k, or v if not found.

Definition at line 67 of file defs.h.

References entttree::get_or().

◆ remove_item()

template<typename K , typename V >
std::optional< V > entttree::remove_item ( DenseMap< K, V > &  m,
const K &  k 
)

Remove a key from a DenseMap.

Returns
The removed value, or std::nullopt if the key was not present.

Definition at line 92 of file defs.h.

References entttree::remove_item().

Referenced by entttree::remove_item().