libcruft-util/parse.hpp

46 lines
1.1 KiB
C++
Raw Normal View History

/*
2018-08-04 15:14:06 +10:00
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* Copyright 2017 Danny Robson <danny@nerdcruft.net>
*/
#ifndef CRUFT_UTIL_PARSE_HPP
#define CRUFT_UTIL_PARSE_HPP
#include "view.hpp"
#include <cstring>
#include <string>
#include <iterator>
namespace cruft {
///////////////////////////////////////////////////////////////////////////
/// extracts an instance of a native type T from the string [first, last).
///
/// throws std::invalid_argument when the type cannot be parsed.
template <typename T>
T parse (cruft::view<const char *>);
//-------------------------------------------------------------------------
template <typename T>
T parse (const char *str)
{
return parse<T> (make_view (str));
}
//-------------------------------------------------------------------------
template <typename T>
T
parse (const std::string &str)
{
return parse<T> (make_view (str));
}
}
#endif