Treelite
base.h
Go to the documentation of this file.
1 
7 #ifndef TREELITE_BASE_H_
8 #define TREELITE_BASE_H_
9 
10 #include <cstdint>
11 #include <string>
12 #include <unordered_map>
13 #include <stdexcept>
14 
15 namespace treelite {
16 
18 typedef float tl_float;
20 enum class SplitFeatureType : int8_t {
21  kNone, kNumerical, kCategorical
22 };
24 enum class Operator : int8_t {
25  kNone,
26  kEQ,
27  kLT,
28  kLE,
29  kGT,
30  kGE,
31 };
33 extern const std::unordered_map<std::string, Operator> optable;
34 
40 inline std::string OpName(Operator op) {
41  switch (op) {
42  case Operator::kEQ: return "==";
43  case Operator::kLT: return "<";
44  case Operator::kLE: return "<=";
45  case Operator::kGT: return ">";
46  case Operator::kGE: return ">=";
47  default: return "";
48  }
49 }
50 
59 inline bool CompareWithOp(tl_float lhs, Operator op, tl_float rhs) {
60  switch (op) {
61  case Operator::kEQ: return lhs == rhs;
62  case Operator::kLT: return lhs < rhs;
63  case Operator::kLE: return lhs <= rhs;
64  case Operator::kGT: return lhs > rhs;
65  case Operator::kGE: return lhs >= rhs;
66  default:
67  throw std::runtime_error("operator undefined");
68  return false;
69  }
70 }
71 
72 } // namespace treelite
73 
74 #endif // TREELITE_BASE_H_
SplitFeatureType
feature split type
Definition: base.h:20
bool CompareWithOp(tl_float lhs, Operator op, tl_float rhs)
perform comparison between two float&#39;s using a comparsion operator The comparison will be in the form...
Definition: base.h:59
float tl_float
float type to be used internally
Definition: base.h:18
std::string OpName(Operator op)
get string representation of comparsion operator
Definition: base.h:40
const std::unordered_map< std::string, Operator > optable
conversion table from string to operator, defined in optable.cc
Definition: optable.cc:12
Operator
comparison operators
Definition: base.h:24