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> { \ 56 FieldEntry<EnumClass>() { \ 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, out_changed);
94 auto unknown = dmlc::Parameter<Type>::InitAllowUnknown(kwargs);
106 #endif // XGBOOST_PARAMETER_H_ bool initialised_
Definition: parameter.h:86
Definition: parameter.h:84
Args UpdateAllowUnknown(Container const &kwargs, bool *out_changed=nullptr)
Definition: parameter.h:90
std::vector< std::pair< std::string, std::string > > Args
Definition: base.h:253
namespace of xgboost
Definition: base.h:102
defines configuration macros of xgboost.
bool GetInitialised() const
Definition: parameter.h:102