template<class Traits, class Partition>
eckit::BSPTreeX class

Base classes

template<class Traits, class NodeType>
class SPTree<Traits, BSPNode<Traits, Partition>>

Public types

using Alloc = typename Traits::Alloc
using Point = typename Traits::Point
using Payload = typename Traits::Payload
using Ptr = typename Alloc::Ptr
using ID = typename Alloc::Ptr
using Node = BSPNode<Traits, Partition>
using Metadata = SPMetadata<Traits>
using PointType = Point
using PayloadType = Payload
using NodeList = typename Node::NodeList
using NodeInfo = SPNodeInfo<Traits, BSPNode<Traits, Partition>>
using Value = typename Node::Value
using iterator = SPIterator<Traits, BSPNode<Traits, Partition>>
using value_type = std::pair<Point, Payload>

Constructors, destructors, conversion operators

BSPTreeX(Alloc& alloc)

Public functions

template<typename Container>
void build(Container& nodes)
void setMetadata(const Point& offset, const Point& scale)
auto nodeByID(ID id) -> NodeInfo
void getMetadata(Point& offset, Point& scale)
auto nearestNeighbour(const Point& p) -> NodeInfo
auto findInSphere(const Point& p, double radius) -> NodeList
auto kNearestNeighbours(const Point& p, size_t k) -> NodeList
auto nearestNeighbourBruteForce(const Point& p) -> NodeInfo
auto findInSphereBruteForce(const Point& p, double radius) -> NodeList
auto kNearestNeighboursBruteForce(const Point& p, size_t k) -> NodeList
void visit(Visitor& v)
void statsReset()
void statsPrint(std::ostream& o, bool fancy) const
void print(std::ostream& o) const
auto begin() -> iterator
auto end() -> iterator
auto empty() const -> bool
auto size() const -> size_t

Public variables

Alloc& alloc_
Ptr root_
Metadata meta_

Typedef documentation

template<class Traits, class Partition _2>
using eckit::BSPTreeX<Traits, _2>::Point = typename Traits::Point

template<class Traits, class Partition _2>
using eckit::BSPTreeX<Traits, _2>::Payload = typename Traits::Payload

template<class Traits, class Partition _2>
using eckit::BSPTreeX<Traits, _2>::Ptr = typename Alloc::Ptr

template<class Traits, class Partition _2>
using eckit::BSPTreeX<Traits, _2>::ID = typename Alloc::Ptr

template<class Traits, class Partition _2>
using eckit::BSPTreeX<Traits, _2>::Node = BSPNode<Traits, Partition>

template<class Traits, class Partition _2>
using eckit::BSPTreeX<Traits, _2>::Metadata = SPMetadata<Traits>

template<class Traits, class Partition _2>
using eckit::BSPTreeX<Traits, _2>::PointType = Point

template<class Traits, class Partition _2>
using eckit::BSPTreeX<Traits, _2>::PayloadType = Payload

template<class Traits, class Partition _2>
using eckit::BSPTreeX<Traits, _2>::NodeList = typename Node::NodeList

template<class Traits, class Partition _2>
using eckit::BSPTreeX<Traits, _2>::NodeInfo = SPNodeInfo<Traits, BSPNode<Traits, Partition>>

template<class Traits, class Partition _2>
using eckit::BSPTreeX<Traits, _2>::Value = typename Node::Value

template<class Traits, class Partition _2>
using eckit::BSPTreeX<Traits, _2>::iterator = SPIterator<Traits, BSPNode<Traits, Partition>>

template<class Traits, class Partition _2>
using eckit::BSPTreeX<Traits, _2>::value_type = std::pair<Point, Payload>

Function documentation

template<class Traits, class Partition _2> template<typename Container>
void eckit::BSPTreeX<Traits, _2>::build(Container& nodes)

Container must be a random access WARNING: container is changed (sorted)

template<class Traits, class Partition _2>
void eckit::BSPTreeX<Traits, _2>::setMetadata(const Point& offset, const Point& scale)

template<class Traits, class Partition _2>
NodeInfo eckit::BSPTreeX<Traits, _2>::nodeByID(ID id)

template<class Traits, class Partition _2>
void eckit::BSPTreeX<Traits, _2>::getMetadata(Point& offset, Point& scale)

template<class Traits, class Partition _2>
NodeInfo eckit::BSPTreeX<Traits, _2>::nearestNeighbour(const Point& p)

template<class Traits, class Partition _2>
NodeList eckit::BSPTreeX<Traits, _2>::findInSphere(const Point& p, double radius)

template<class Traits, class Partition _2>
NodeList eckit::BSPTreeX<Traits, _2>::kNearestNeighbours(const Point& p, size_t k)

template<class Traits, class Partition _2>
NodeInfo eckit::BSPTreeX<Traits, _2>::nearestNeighbourBruteForce(const Point& p)

template<class Traits, class Partition _2>
NodeList eckit::BSPTreeX<Traits, _2>::findInSphereBruteForce(const Point& p, double radius)

template<class Traits, class Partition _2>
NodeList eckit::BSPTreeX<Traits, _2>::kNearestNeighboursBruteForce(const Point& p, size_t k)

template<class Traits, class Partition _2>
void eckit::BSPTreeX<Traits, _2>::visit(Visitor& v)

template<class Traits, class Partition _2>
void eckit::BSPTreeX<Traits, _2>::statsReset()

template<class Traits, class Partition _2>
void eckit::BSPTreeX<Traits, _2>::statsPrint(std::ostream& o, bool fancy) const

template<class Traits, class Partition _2>
void eckit::BSPTreeX<Traits, _2>::print(std::ostream& o) const

template<class Traits, class Partition _2>
iterator eckit::BSPTreeX<Traits, _2>::begin()

template<class Traits, class Partition _2>
iterator eckit::BSPTreeX<Traits, _2>::end()

template<class Traits, class Partition _2>
bool eckit::BSPTreeX<Traits, _2>::empty() const

template<class Traits, class Partition _2>
size_t eckit::BSPTreeX<Traits, _2>::size() const

Variable documentation

template<class Traits, class Partition _2>
Alloc& eckit::BSPTreeX<Traits, _2>::alloc_

template<class Traits, class Partition _2>
Ptr eckit::BSPTreeX<Traits, _2>::root_

template<class Traits, class Partition _2>
Metadata eckit::BSPTreeX<Traits, _2>::meta_