Chris@16: /* boost random/vector_io.hpp header file Chris@16: * Chris@16: * Copyright Steven Watanabe 2011 Chris@16: * Distributed under the Boost Software License, Version 1.0. (See Chris@16: * accompanying file LICENSE_1_0.txt or copy at Chris@16: * http://www.boost.org/LICENSE_1_0.txt) Chris@16: * Chris@16: * See http://www.boost.org for most recent version including documentation. Chris@16: * Chris@101: * $Id$ Chris@16: */ Chris@16: Chris@16: #ifndef BOOST_RANDOM_DETAIL_VECTOR_IO_HPP Chris@16: #define BOOST_RANDOM_DETAIL_VECTOR_IO_HPP Chris@16: Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: Chris@16: namespace boost { Chris@16: namespace random { Chris@16: namespace detail { Chris@16: Chris@16: template Chris@16: void print_vector(std::basic_ostream& os, Chris@16: const std::vector& vec) Chris@16: { Chris@16: typename std::vector::const_iterator Chris@16: iter = vec.begin(), Chris@16: end = vec.end(); Chris@16: os << os.widen('['); Chris@16: if(iter != end) { Chris@16: os << *iter; Chris@16: ++iter; Chris@16: for(; iter != end; ++iter) Chris@16: { Chris@16: os << os.widen(' ') << *iter; Chris@16: } Chris@16: } Chris@16: os << os.widen(']'); Chris@16: } Chris@16: Chris@16: template Chris@16: void read_vector(std::basic_istream& is, std::vector& vec) Chris@16: { Chris@16: CharT ch; Chris@16: if(!(is >> ch)) { Chris@16: return; Chris@16: } Chris@16: if(ch != is.widen('[')) { Chris@16: is.putback(ch); Chris@16: is.setstate(std::ios_base::failbit); Chris@16: return; Chris@16: } Chris@16: T val; Chris@16: while(is >> std::ws >> val) { Chris@16: vec.push_back(val); Chris@16: } Chris@16: if(is.fail()) { Chris@16: is.clear(); Chris@16: if(!(is >> ch)) { Chris@16: return; Chris@16: } Chris@16: if(ch != is.widen(']')) { Chris@16: is.putback(ch); Chris@16: is.setstate(std::ios_base::failbit); Chris@16: } Chris@16: } Chris@16: } Chris@16: Chris@16: } Chris@16: } Chris@16: } Chris@16: Chris@16: #endif // BOOST_RANDOM_DETAIL_VECTOR_IO_HPP