| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  | //  Boost string_algo library formatter.hpp header file  ---------------------------//
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-07-27 10:27:37 +00:00
										 |  |  | //  Copyright Pavol Droba 2002-2003.
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // 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)
 | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-07-27 10:27:37 +00:00
										 |  |  | //  See http://www.boost.org/ for updates, documentation, and revision history.
 | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #ifndef BOOST_STRING_FORMATTER_HPP
 | 
					
						
							|  |  |  | #define BOOST_STRING_FORMATTER_HPP
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-01-21 16:45:29 +00:00
										 |  |  | #include <boost/range/value_type.hpp>
 | 
					
						
							| 
									
										
										
										
											2013-09-17 20:37:20 +00:00
										 |  |  | #include <boost/range/iterator_range_core.hpp>
 | 
					
						
							| 
									
										
										
										
											2007-07-01 22:23:55 +00:00
										 |  |  | #include <boost/range/as_literal.hpp>
 | 
					
						
							| 
									
										
										
										
											2005-01-21 16:45:29 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  | #include <boost/algorithm/string/detail/formatter.hpp>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*! \file
 | 
					
						
							| 
									
										
										
										
											2004-07-15 21:48:25 +00:00
										 |  |  |     Defines Formatter generators. Formatter is a functor which formats | 
					
						
							|  |  |  |     a string according to given parameters. A Formatter works | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  |     in conjunction with a Finder. A Finder can provide additional information | 
					
						
							| 
									
										
										
										
											2004-07-15 21:48:25 +00:00
										 |  |  |     for a specific Formatter. An example of such a cooperation is regex_finder | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  |     and regex_formatter. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-07-15 21:48:25 +00:00
										 |  |  |     Formatters are used as pluggable components for replace facilities.  | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  |     This header contains generator functions for the Formatters provided in this library. | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace boost { | 
					
						
							|  |  |  |     namespace algorithm { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-01-21 16:45:29 +00:00
										 |  |  | // generic formatters  ---------------------------------------------------------------//
 | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         //! Constant formatter
 | 
					
						
							|  |  |  |         /*!
 | 
					
						
							| 
									
										
										
										
											2011-01-13 21:21:37 +00:00
										 |  |  |             Constructs a \c const_formatter. Const formatter always returns | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  |             the same value, regardless of the parameter. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-28 17:51:56 +00:00
										 |  |  |             \param Format A predefined value used as a result for formatting | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  |             \return An instance of the \c const_formatter object. | 
					
						
							|  |  |  |         */ | 
					
						
							| 
									
										
										
										
											2005-04-12 16:50:42 +00:00
										 |  |  |         template<typename RangeT> | 
					
						
							| 
									
										
										
										
											2007-07-01 22:23:55 +00:00
										 |  |  |         inline detail::const_formatF< | 
					
						
							|  |  |  |             iterator_range< | 
					
						
							|  |  |  |                 BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> > | 
					
						
							| 
									
										
										
										
											2005-04-12 16:50:42 +00:00
										 |  |  |         const_formatter(const RangeT& Format) | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2007-07-01 22:23:55 +00:00
										 |  |  |             return detail::const_formatF< | 
					
						
							|  |  |  |                 iterator_range< | 
					
						
							| 
									
										
										
										
											2009-08-05 20:01:10 +00:00
										 |  |  |                     BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >(::boost::as_literal(Format)); | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         //! Identity formatter
 | 
					
						
							|  |  |  |         /*!
 | 
					
						
							| 
									
										
										
										
											2011-01-13 21:21:37 +00:00
										 |  |  |             Constructs an \c identity_formatter. Identity formatter always returns | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  |             the parameter. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             \return An instance of the \c identity_formatter object. | 
					
						
							|  |  |  |         */ | 
					
						
							| 
									
										
										
										
											2005-04-12 16:50:42 +00:00
										 |  |  |         template<typename RangeT> | 
					
						
							| 
									
										
										
										
											2007-07-01 22:23:55 +00:00
										 |  |  |         inline detail::identity_formatF< | 
					
						
							|  |  |  |             iterator_range< | 
					
						
							|  |  |  |                 BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> > | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  |         identity_formatter() | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2007-07-01 22:23:55 +00:00
										 |  |  |             return detail::identity_formatF< | 
					
						
							|  |  |  |                 iterator_range< | 
					
						
							|  |  |  |                     BOOST_STRING_TYPENAME range_const_iterator<RangeT>::type> >(); | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         //! Empty formatter
 | 
					
						
							|  |  |  |         /*!
 | 
					
						
							| 
									
										
										
										
											2011-01-13 21:21:37 +00:00
										 |  |  |             Constructs an \c empty_formatter. Empty formatter always returns an empty | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  |             sequence.  | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             \param Input container used to select a correct value_type for the | 
					
						
							|  |  |  |                          resulting empty_container<>. | 
					
						
							|  |  |  |             \return An instance of the \c empty_formatter object. | 
					
						
							|  |  |  |         */ | 
					
						
							| 
									
										
										
										
											2005-04-12 16:50:42 +00:00
										 |  |  |         template<typename RangeT> | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  |         inline detail::empty_formatF<  | 
					
						
							| 
									
										
										
										
											2005-04-12 16:50:42 +00:00
										 |  |  |             BOOST_STRING_TYPENAME range_value<RangeT>::type> | 
					
						
							|  |  |  |         empty_formatter(const RangeT&) | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  |         { | 
					
						
							|  |  |  |             return detail::empty_formatF< | 
					
						
							| 
									
										
										
										
											2005-04-12 16:50:42 +00:00
										 |  |  |                 BOOST_STRING_TYPENAME range_value<RangeT>::type>(); | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-01-14 23:12:32 +00:00
										 |  |  |         //! Empty formatter
 | 
					
						
							|  |  |  |         /*!
 | 
					
						
							|  |  |  |             Constructs a \c dissect_formatter. Dissect formatter uses a specified finder | 
					
						
							|  |  |  |             to extract a portion of the formatted sequence. The first finder's match is returned  | 
					
						
							|  |  |  |             as a result | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-28 17:51:56 +00:00
										 |  |  |             \param Finder a finder used to select a portion of the formatted sequence | 
					
						
							| 
									
										
										
										
											2011-01-14 23:12:32 +00:00
										 |  |  |             \return An instance of the \c dissect_formatter object. | 
					
						
							|  |  |  |         */ | 
					
						
							|  |  |  |         template<typename FinderT> | 
					
						
							|  |  |  |         inline detail::dissect_formatF< FinderT > | 
					
						
							|  |  |  |         dissect_formatter(const FinderT& Finder) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             return detail::dissect_formatF<FinderT>(Finder); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-01-13 21:21:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     } // namespace algorithm
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // pull the names to the boost namespace
 | 
					
						
							|  |  |  |     using algorithm::const_formatter; | 
					
						
							|  |  |  |     using algorithm::identity_formatter; | 
					
						
							|  |  |  |     using algorithm::empty_formatter; | 
					
						
							| 
									
										
										
										
											2011-01-14 23:12:32 +00:00
										 |  |  |     using algorithm::dissect_formatter; | 
					
						
							| 
									
										
										
										
											2004-03-04 22:12:19 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | } // namespace boost
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif  // BOOST_FORMATTER_HPP
 |