示例#1
0
private:
    typedef typename token_range_detail::super_<Parser, ForwardRange, UserState>::type super_t;

public:
    explicit token_range(ForwardRange& r, UserState& us = null_state) :
        super_t(
            biscuit::make_token_iterator<Parser>(boost::begin(r), boost::end(r), us),
            biscuit::make_token_iterator<Parser>(boost::end(r),   boost::end(r), us)
        )
    { }
};


template< class Parser, class ForwardRange, class UserState > inline
token_range<Parser, ForwardRange, UserState> const
make_token_range(ForwardRange& r, UserState& us PSTADE_CONST_OVERLOADED(ForwardRange))
{
    return token_range<Parser, ForwardRange, UserState>(r, us);
}

    template< class Parser, class ForwardRange, class UserState > inline
    token_range<Parser, PSTADE_DEDUCED_CONST(ForwardRange), UserState> const
    make_token_range(ForwardRange const& r, UserState& us)
    {
        return token_range<Parser, PSTADE_DEDUCED_CONST(ForwardRange), UserState>(r, us);
    }


// no user-state
template< class Parser, class ForwardRange > inline
token_range<Parser, ForwardRange> const
示例#2
0
namespace pstade_oven_extension {


    template< >
    struct Range< WTL::CString >
    {
        template< class X >
        struct associate
        {
            typedef TCHAR *mutable_iterator;
            typedef TCHAR const *constant_iterator;
        };

        template< class Iterator, class X >
        Iterator begin(X& x PSTADE_CONST_OVERLOADED(X))
        {
            return x.GetBuffer(0);
        }

        template< class Iterator, class X >
        Iterator begin(X const& x)
        {
            return x;
        }

        template< class Iterator, class X >
        Iterator end(X& x)
        {
            return begin<Iterator>(x) + x.GetLength();
        }