# Function Template `restrict`

Description
Headers
Reference

## Description

Given a Filter or Device that provides access to a single character sequence, we can construct a second Filter or Device which provides access to contiguous subsequence of the the original sequence. This second Filter or Device is called a restriction of the original device. Restrictions are represented by instances of the class template `restriction`. The function template `resrict` is an object generator which returns an appropriate instance of `resriction` when passed a Filter or Device and a pair of values indicating the endpoints of the restricted subsequence.

The mode of a `resriction` is the same as that of the underlying component. A `resriction` is Closable, Flushable, Localizable and OptimallyBuffered.

## Headers

`<boost/iostreams/restrict.hpp>`

## Reference

#### Synopsis

    namespace boost { namespace iostreams {

    template<typename Component>
    class restriction {
    public:
        typedef typename char_type_of<Component>::type  char_type;
        typedef implementation-defined                  mode;

        restriction( [const] Component& component,
                     stream_offset off,
                     stream_offset len = -1 );

        // Filter or Device member functions
    };

    template<typename Component>
    restriction<Component>
    restrict( [const] Component& component,
              stream_offset off,
              stream_offset len = -1 );

    } } // End namespace boost::io

## Class Template `restriction`

#### Template parameters

Component | - | A model of Filter or Device

#### `restriction::restriction`

        restriction( [const] Component& component,
                     stream_offset off,
                     stream_offset len = -1 );

Constructs an instance of `restriction` based on the given component and offsets. The parameters have the following interpretation:

component | - | The Filter or Device to be restricted. If `Component` is a stream or stream buffer type, the function parameter is a non-`const` reference; otherwise it is a `const` reference.
off | - | The offset of the beginning of the restricted character sequence.
len | - | The length of the restricted character sequence. A value of `-1` indicates that the end of the restricted sequence should be the same as that of the unrestricted sequence.

## Function Template `restrict`

    template<typename Component>
    restriction<Component>
    restrict( [const] Component& component,
              stream_offset off,
              stream_offset len = -1 );

#### Template parameters

Component | - | A model of Filter or Device

Constructs an instance of an appropriate specialization of `restriction` based on the given component and offsets. The parameters have the following interpretation:

component | - | The Filter or Device to be restricted. If `Component` is a stream or stream buffer type, the function parameter is a non-`const` reference; otherwise it is a `const` reference.
off | - | The offset of the beginning of the restricted character sequence.
len | - | The length of the restricted character sequence. A value of `-1` indicates that the end of the restricted sequence should be the same as that of the unrestricted sequence.

Revised 20 May, 2004

© Copyright Jonathan Turkanis, 2004

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)