traversal_node.hpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: Copyright (c) 2024-2025, NVIDIA CORPORATION.
3  * SPDX-License-Identifier: Apache-2.0
4  */
5 #pragma once
6 #include <cstddef>
7 #include <exception>
8 #include <string>
9 
10 namespace ML {
11 namespace forest {
12 
14 struct parentless_node_exception : std::exception {
15  parentless_node_exception() : msg_{"Node does not track its parent"} {}
16  parentless_node_exception(std::string msg) : msg_{msg} {}
17  parentless_node_exception(char const* msg) : msg_{msg} {}
18  virtual char const* what() const noexcept { return msg_.c_str(); }
19 
20  private:
21  std::string msg_;
22 };
23 
24 template <typename id_t = std::size_t>
26  public:
27  using id_type = id_t;
28  virtual bool is_leaf() const = 0;
29  virtual id_type hot_child() const = 0;
30  virtual id_type distant_child() const = 0;
31  virtual id_type parent() const
32  {
34  return id_type{};
35  }
36 };
37 
38 } // namespace forest
39 } // namespace ML
Definition: dbscan.hpp:18
Definition: traversal_node.hpp:14
virtual char const * what() const noexcept
Definition: traversal_node.hpp:18
parentless_node_exception(std::string msg)
Definition: traversal_node.hpp:16
parentless_node_exception(char const *msg)
Definition: traversal_node.hpp:17
parentless_node_exception()
Definition: traversal_node.hpp:15
Definition: traversal_node.hpp:25
virtual bool is_leaf() const =0
virtual id_type parent() const
Definition: traversal_node.hpp:31
virtual id_type distant_child() const =0
id_t id_type
Definition: traversal_node.hpp:27
virtual id_type hot_child() const =0