8 #ifndef XGBOOST_PARAMETER_H_
9 #define XGBOOST_PARAMETER_H_
11 #include <dmlc/parameter.h>
14 #include <type_traits>
50 #define DECLARE_FIELD_ENUM_CLASS(EnumClass) \
52 namespace parameter { \
54 class FieldEntry<EnumClass> : public FieldEntry<int> { \
58 std::is_same<int, typename std::underlying_type<EnumClass>::type>::value, \
59 "enum class must be backed by int"); \
62 using Super = FieldEntry<int>; \
63 void Set(void *head, const std::string &value) const override { \
64 Super::Set(head, value); \
66 inline FieldEntry<EnumClass>& add_enum(const std::string &key, EnumClass value) { \
67 Super::add_enum(key, static_cast<int>(value)); \
70 inline FieldEntry<EnumClass>& set_default(const EnumClass& default_value) { \
71 default_value_ = static_cast<int>(default_value); \
72 has_default_ = true; \
75 inline void Init(const std::string &key, void *head, EnumClass& ref) {
\
76 Super::Init(key, head, *reinterpret_cast<int*>(&ref)); \
83 template <
typename Type>
89 template <
typename Container>
92 return dmlc::Parameter<Type>::UpdateAllowUnknown(kwargs);
94 auto unknown = dmlc::Parameter<Type>::InitAllowUnknown(kwargs);
Defines configuration macros and basic types for xgboost.
Core data structure for multi-target trees.
Definition: base.h:87
std::vector< std::pair< std::string, std::string > > Args
Definition: base.h:310
Definition: parameter.h:84
bool initialised_
Definition: parameter.h:86
bool GetInitialised() const
Definition: parameter.h:99
Args UpdateAllowUnknown(Container const &kwargs)
Definition: parameter.h:90