USRP Hardware Driver and USRP Manual Version: 4.6.0.0
UHD and USRP Manual
 
Loading...
Searching...
No Matches
assert_has.ipp
Go to the documentation of this file.
1//
2// Copyright 2010-2011 Ettus Research LLC
3// Copyright 2018 Ettus Research, a National Instruments Company
4//
5// SPDX-License-Identifier: GPL-3.0-or-later
6//
7
8#pragma once
9
10#include <uhd/exception.hpp>
12#include <boost/format.hpp>
13#include <boost/lexical_cast.hpp>
14
15namespace uhd {
16
17template <typename T, typename Range>
18UHD_INLINE void assert_has(const Range& range, const T& value, const std::string& what)
19{
20 if (uhd::has(range, value))
21 return;
22 std::string possible_values = "";
23 size_t i = 0;
24 for (const T& v : range) {
25 if (i++ > 0)
26 possible_values += ", ";
27 possible_values += boost::lexical_cast<std::string>(v);
28 }
30 str(boost::format("assertion failed:\n"
31 " %s is not a valid %s.\n"
32 " possible values are: [%s].\n")
33 % boost::lexical_cast<std::string>(value) % what % possible_values));
34}
35
36} // namespace uhd
#define UHD_INLINE
Definition config.h:65
Definition build_info.hpp:12
UHD_INLINE bool has(const Range &range, const T &value)
Definition algorithm.hpp:68
void assert_has(const Range &range, const T &value, const std::string &what="unknown")
Definition assert_has.ipp:18
Definition exception.hpp:48