2#include <unordered_map>
14template<
class ResultImpl,
typename N = ResultImpl::node_type,util::HashFunction<N> Hash=std::hash<N>, fishnet::util::BiPredicate<N> Equal = std::equal_to<N>>
23 nodeStatus = std::unordered_map<N,NodeStatus,Hash,Equal>();
27 static_cast<ResultImpl *
>(
this)->
onOpen(node);
31 static_cast<ResultImpl *
>(
this)->
onClose(node);
34 void onEdge(
const N & from,
const N & to){
35 static_cast<ResultImpl *
>(
this)->
onEdge(from,to);
39 return static_cast<const ResultImpl *
>(
this)->
stop();
43 if (this->nodeStatus.contains(node))
44 return this->nodeStatus.at(node);
51 if (this->nodeStatus.contains(node)) {
63 if (this->nodeStatus.contains(node)){
CRTP Abstraction of Search Results.
Definition SearchResult.hpp:16
void onOpen(const N &node)
Definition SearchResult.hpp:26
SearchResult()
Definition SearchResult.hpp:22
void close(const N &node)
Definition SearchResult.hpp:60
bool stop() const
Definition SearchResult.hpp:38
bool isOpen(const N &node) const
Definition SearchResult.hpp:71
void onEdge(const N &from, const N &to)
Definition SearchResult.hpp:34
virtual ~SearchResult()=default
std::unordered_map< N, NodeStatus, Hash, Equal > nodeStatus
Definition SearchResult.hpp:18
NodeStatus getStatusOfNode(const N &node) const
Definition SearchResult.hpp:42
void onClose(const N &node)
Definition SearchResult.hpp:30
bool isClosed(const N &node) const
Definition SearchResult.hpp:75
void open(const N &node)
Definition SearchResult.hpp:48
bool isUnknown(const N &node) const
Definition SearchResult.hpp:79
N node_type
Definition SearchResult.hpp:20
Definition AdjacencyContainer.hpp:4
NodeStatus
Definition NodeStatus.hpp:3