BVB Source Codes

mars Show trim.hpp Source code

Return Download mars: download trim.hpp Source code - Download mars Source code - Type:.hpp
  1. //  Boost string_algo library trim.hpp header file  ---------------------------//
  2.  
  3. //  Copyright Pavol Droba 2002-2003.
  4. //
  5. // Distributed under the Boost Software License, Version 1.0.
  6. //    (See accompanying file LICENSE_1_0.txt or copy at
  7. //          http://www.boost.org/LICENSE_1_0.txt)
  8.  
  9. //  See http://www.boost.org/ for updates, documentation, and revision history.
  10.  
  11. #ifndef BOOST_STRING_TRIM_DETAIL_HPP
  12. #define BOOST_STRING_TRIM_DETAIL_HPP
  13.  
  14. #include <boost/algorithm/string/config.hpp>
  15. #include <boost/detail/iterator.hpp>
  16.  
  17. namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost {
  18.     namespace algorithm {
  19.         namespace detail {
  20.  
  21. //  trim iterator helper -----------------------------------------------//
  22.  
  23.             template< typename ForwardIteratorT, typename PredicateT >
  24.             inline ForwardIteratorT trim_end_iter_select(
  25.                 ForwardIteratorT InBegin,
  26.                 ForwardIteratorT InEnd,
  27.                 PredicateT IsSpace,
  28.                 std::forward_iterator_tag )
  29.             {
  30.                 ForwardIteratorT TrimIt=InBegin;
  31.  
  32.                 for( ForwardIteratorT It=InBegin; It!=InEnd; ++It )
  33.                 {
  34.                     if ( !IsSpace(*It) )
  35.                     {
  36.                         TrimIt=It;
  37.                         ++TrimIt;
  38.                     }
  39.                 }
  40.  
  41.                 return TrimIt;
  42.             }
  43.  
  44.             template< typename ForwardIteratorT, typename PredicateT >
  45.             inline ForwardIteratorT trim_end_iter_select(
  46.                 ForwardIteratorT InBegin,
  47.                 ForwardIteratorT InEnd,
  48.                 PredicateT IsSpace,
  49.                 std::bidirectional_iterator_tag )
  50.             {
  51.                 for( ForwardIteratorT It=InEnd; It!=InBegin;  )
  52.                 {
  53.                     if ( !IsSpace(*(--It)) )
  54.                         return ++It;
  55.                 }
  56.  
  57.                 return InBegin;
  58.             }
  59.    // Search for first non matching character from the beginning of the sequence
  60.             template< typename ForwardIteratorT, typename PredicateT >
  61.             inline ForwardIteratorT trim_begin(
  62.                 ForwardIteratorT InBegin,
  63.                 ForwardIteratorT InEnd,
  64.                 PredicateT IsSpace )
  65.             {
  66.                 ForwardIteratorT It=InBegin;
  67.                 for(; It!=InEnd; ++It )
  68.                 {
  69.                     if (!IsSpace(*It))
  70.                         return It;
  71.                 }
  72.  
  73.                 return It;
  74.             }
  75.  
  76.             // Search for first non matching character from the end of the sequence
  77.             template< typename ForwardIteratorT, typename PredicateT >
  78.             inline ForwardIteratorT trim_end(
  79.                 ForwardIteratorT InBegin,
  80.                 ForwardIteratorT InEnd,
  81.                 PredicateT IsSpace )
  82.             {
  83.                 typedef BOOST_STRING_TYPENAME mars_boost::detail::
  84.                     iterator_traits<ForwardIteratorT>::iterator_category category;
  85.  
  86.                 return ::mars_boost::algorithm::detail::trim_end_iter_select( InBegin, InEnd, IsSpace, category() );
  87.             }
  88.  
  89.  
  90.         } // namespace detail
  91.     } // namespace algorithm
  92. } // namespace mars_boost
  93.  
  94.  
  95. #endif  // BOOST_STRING_TRIM_DETAIL_HPP
  96.  
downloadtrim.hpp Source code - Download mars Source code
Related Source Codes/Software:
Hero - Elegant transition library for iOS & tvOS 2017-06-09
deep-photo-styletransfer - Code and data for paper "Deep Photo Style Transfer... 2017-06-09
mastodon - A GNU Social-compatible microblogging server ... 2017-06-09
plyr - A simple HTML5, YouTube and Vimeo player ... 2017-06-08
prepack - Prepack is a partial evaluator for JavaScript. Pre... 2017-06-08
Public-APIs - 2017-06-09
lottie-ios - An iOS library to natively render After Effects ve... 2017-06-09
Awesome-Hacking - A collection of various awesome lists for hackers,... 2017-06-09
algorithms - Minimal examples of data structures and algorithms... 2017-06-10
lectures - Oxford Deep NLP 2017 course 2017-06-10
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top