/Src/Dependencies/Boost/boost/random/detail/vector_io.hpp
http://hadesmem.googlecode.com/ · C++ Header · 75 lines · 57 code · 7 blank · 11 comment · 12 complexity · 5c93caa9a182a33b42e531969396adcb MD5 · raw file
- /* boost random/vector_io.hpp header file
- *
- * Copyright Steven Watanabe 2011
- * Distributed under the Boost Software License, Version 1.0. (See
- * accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org for most recent version including documentation.
- *
- * $Id: vector_io.hpp 71018 2011-04-05 21:27:52Z steven_watanabe $
- */
- #ifndef BOOST_RANDOM_DETAIL_VECTOR_IO_HPP
- #define BOOST_RANDOM_DETAIL_VECTOR_IO_HPP
- #include <vector>
- #include <iosfwd>
- #include <istream>
- namespace boost {
- namespace random {
- namespace detail {
- template<class CharT, class Traits, class T>
- void print_vector(std::basic_ostream<CharT, Traits>& os,
- const std::vector<T>& vec)
- {
- typename std::vector<T>::const_iterator
- iter = vec.begin(),
- end = vec.end();
- os << os.widen('[');
- if(iter != end) {
- os << *iter;
- ++iter;
- for(; iter != end; ++iter)
- {
- os << os.widen(' ') << *iter;
- }
- }
- os << os.widen(']');
- }
- template<class CharT, class Traits, class T>
- void read_vector(std::basic_istream<CharT, Traits>& is, std::vector<T>& vec)
- {
- CharT ch;
- if(!(is >> ch)) {
- return;
- }
- if(ch != is.widen('[')) {
- is.putback(ch);
- is.setstate(std::ios_base::failbit);
- return;
- }
- T val;
- while(is >> std::ws >> val) {
- vec.push_back(val);
- }
- if(is.fail()) {
- is.clear();
- if(!(is >> ch)) {
- return;
- }
- if(ch != is.widen(']')) {
- is.putback(ch);
- is.setstate(std::ios_base::failbit);
- }
- }
- }
- }
- }
- }
- #endif // BOOST_RANDOM_DETAIL_VECTOR_IO_HPP