mirror of
https://github.com/bolero-MURAKAMI/Sprout.git
synced 2025-07-06 14:24:09 +00:00
fix net/endian.hpp
This commit is contained in:
parent
7f8a352783
commit
93e22a984d
10 changed files with 651 additions and 10 deletions
14
tools/sprig/algorithm/string/find.hpp
Normal file
14
tools/sprig/algorithm/string/find.hpp
Normal file
|
@ -0,0 +1,14 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2014 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
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)
|
||||
=============================================================================*/
|
||||
#ifndef TOOLS_SPRIG_ALGORITHM_STRING_FIND_HPP
|
||||
#define TOOLS_SPRIG_ALGORITHM_STRING_FIND_HPP
|
||||
|
||||
#include "./find_skip.hpp"
|
||||
#include "./find_between.hpp"
|
||||
|
||||
#endif // #ifndef TOOLS_SPRIG_ALGORITHM_STRING_FIND_HPP
|
51
tools/sprig/algorithm/string/find_between.hpp
Normal file
51
tools/sprig/algorithm/string/find_between.hpp
Normal file
|
@ -0,0 +1,51 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2014 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
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)
|
||||
=============================================================================*/
|
||||
#ifndef TOOLS_SPRIG_ALGORITHM_STRING_FIND_BETWEEN_HPP
|
||||
#define TOOLS_SPRIG_ALGORITHM_STRING_FIND_BETWEEN_HPP
|
||||
|
||||
#include <boost/range/functions.hpp>
|
||||
#include <boost/range/metafunctions.hpp>
|
||||
#include <boost/range/iterator_range.hpp>
|
||||
#include <boost/algorithm/string/find.hpp>
|
||||
|
||||
namespace sprig {
|
||||
//
|
||||
// between_finder
|
||||
//
|
||||
template<typename Finder1, typename Finder2>
|
||||
struct between_finderF {
|
||||
private:
|
||||
Finder1 finder1_;
|
||||
Finder2 finder2_;
|
||||
public:
|
||||
between_finderF(Finder1 const& finder1, Finder2 const& finder2)
|
||||
: finder1_(finder1), finder2_(finder2)
|
||||
{}
|
||||
template<typename ForwardIterator>
|
||||
boost::iterator_range<ForwardIterator>
|
||||
operator()(ForwardIterator first, ForwardIterator last) const {
|
||||
first = boost::end(finder1_(first, last));
|
||||
return boost::iterator_range<ForwardIterator>(first, boost::begin(finder2_(first, last)));
|
||||
}
|
||||
};
|
||||
template<typename Finder1, typename Finder2>
|
||||
inline sprig::between_finderF<Finder1, Finder2>
|
||||
between_finder(Finder1 const& finder1, Finder2 const& finder2) {
|
||||
return sprig::between_finderF<Finder1, Finder2>(finder1, finder2);
|
||||
}
|
||||
//
|
||||
// find_between
|
||||
//
|
||||
template<typename Range, typename Finder1, typename Finder2>
|
||||
inline boost::iterator_range<typename boost::range_iterator<Range>::type>
|
||||
find_between(Range& input, Finder1 const& finder1, Finder2 const& finder2) {
|
||||
return boost::algorithm::find(input, sprig::between_finder(finder1, finder2));
|
||||
}
|
||||
} // namespace sprig
|
||||
|
||||
#endif // #ifndef TOOLS_SPRIG_ALGORITHM_STRING_FIND_BETWEEN_HPP
|
80
tools/sprig/algorithm/string/find_skip.hpp
Normal file
80
tools/sprig/algorithm/string/find_skip.hpp
Normal file
|
@ -0,0 +1,80 @@
|
|||
/*=============================================================================
|
||||
Copyright (c) 2011-2014 Bolero MURAKAMI
|
||||
https://github.com/bolero-MURAKAMI/Sprout
|
||||
|
||||
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)
|
||||
=============================================================================*/
|
||||
#ifndef TOOLS_SPRIG_ALGORITHM_STRING_FIND_SKIP_HPP
|
||||
#define TOOLS_SPRIG_ALGORITHM_STRING_FIND_SKIP_HPP
|
||||
|
||||
#include <boost/range/functions.hpp>
|
||||
#include <boost/range/metafunctions.hpp>
|
||||
#include <boost/range/iterator_range.hpp>
|
||||
#include <boost/algorithm/string/find.hpp>
|
||||
|
||||
namespace sprig {
|
||||
//
|
||||
// skip_finder
|
||||
//
|
||||
template<typename Finder>
|
||||
struct skip_finderF {
|
||||
private:
|
||||
Finder finder_;
|
||||
public:
|
||||
explicit skip_finderF(Finder const& finder)
|
||||
: finder_(finder)
|
||||
{}
|
||||
template<typename ForwardIterator>
|
||||
boost::iterator_range<ForwardIterator>
|
||||
operator()(ForwardIterator first, ForwardIterator last) const {
|
||||
return boost::iterator_range<ForwardIterator>(boost::end(finder_(first, last)), last);
|
||||
}
|
||||
};
|
||||
template<typename Finder>
|
||||
inline sprig::skip_finderF<Finder>
|
||||
skip_finder(Finder const& finder) {
|
||||
return sprig::skip_finderF<Finder>(finder);
|
||||
}
|
||||
//
|
||||
// find_skip
|
||||
//
|
||||
template<typename Range, typename Finder>
|
||||
inline boost::iterator_range<typename boost::range_iterator<Range>::type>
|
||||
find_skip(Range& input, Finder const& finder) {
|
||||
return boost::algorithm::find(input, sprig::skip_finder(finder));
|
||||
}
|
||||
|
||||
//
|
||||
// skip_backward_finder
|
||||
//
|
||||
template<typename Finder>
|
||||
struct skip_backward_finderF {
|
||||
private:
|
||||
Finder finder_;
|
||||
public:
|
||||
explicit skip_backward_finderF(Finder const& finder)
|
||||
: finder_(finder)
|
||||
{}
|
||||
template<typename ForwardIterator>
|
||||
boost::iterator_range<ForwardIterator>
|
||||
operator()(ForwardIterator first, ForwardIterator last) const {
|
||||
return boost::iterator_range<ForwardIterator>(first, boost::begin(finder_(first, last)));
|
||||
}
|
||||
};
|
||||
template<typename Finder>
|
||||
inline sprig::skip_backward_finderF<Finder>
|
||||
skip_backward_finder(Finder const& finder) {
|
||||
return sprig::skip_backward_finderF<Finder>(finder);
|
||||
}
|
||||
//
|
||||
// find_skip_backward
|
||||
//
|
||||
template<typename Range, typename Finder>
|
||||
inline boost::iterator_range<typename boost::range_iterator<Range>::type>
|
||||
find_skip_backward(Range& input, Finder const& finder) {
|
||||
return boost::algorithm::find(input, sprig::skip_backward_finder(finder));
|
||||
}
|
||||
} // namespace sprig
|
||||
|
||||
#endif // #ifndef TOOLS_SPRIG_ALGORITHM_STRING_FIND_SKIP_HPP
|
Loading…
Add table
Add a link
Reference in a new issue