<< "' (" << getPosition(name, scope) << ")");
}
}
-
- /// @todo remove this when they'll be no longer used.
-
- /// @brief Returns an integer value with range checking
- ///
- /// This template should be instantied in parsers when useful
- ///
- /// @tparam int_type the integer type e.g. uint32_t
- /// @tparam out_of_range always @c isc::dhcp::DhcpConfigError
- /// @param name name of the parameter for error report
- /// @param value value of the parameter
- /// @return a value of int_type
- /// @throw isc::data::TypeError when the value is not an integer
- /// @throw out_of_range when the value does not fit in int_type
- template <typename int_type, class out_of_range> int_type
- extractInt(const std::string& name, ConstElementPtr value) const {
- int64_t val_int = value->intValue();
- if ((val_int < std::numeric_limits<int_type>::min()) ||
- (val_int > std::numeric_limits<int_type>::max())) {
- isc_throw(out_of_range, "out of range value (" << val_int
- << ") specified for parameter '" << name
- << "' (" << value->getPosition() << ")");
- }
- return (static_cast<int_type>(val_int));
- }
-
- /// @brief Returns a converted value
- ///
- /// This template should be instantied in parsers when useful
- ///
- /// @tparam target_type the type of the result
- /// @tparam convert the conversion function std::string -> target_type
- /// @tparam exception_type always @c isc::dhcp::DhcpConfigError
- /// @param name name of the parameter for error report
- /// @param type_name name of target_type for error report
- /// @param value value of the parameter
- /// @return a converted value of target_type
- /// @throw isc::data::TypeError when the value is not an integer
- /// @throw exception_type when the value cannot be converted
- template <typename target_type,
- target_type convert(const std::string&),
- class exception_type> target_type
- extractConvert(const std::string& name,
- const std::string& type_name,
- ConstElementPtr value) const {
- std::string str = value->stringValue();
- try {
- return (convert(str));
- } catch (const std::exception&) {
- isc_throw(exception_type, "invalid " << type_name << " (" << str
- << ") specified for parameter '" << name
- << "' (" << value->getPosition() << ")");
- }
- }
};
};