## fpos

- Summary
- Data Type and Member Function Indexes
- Synopsis
- Description
- Interface
- Types
- Public Constructors
- Public Member Functions
- Valid Operations
- See Also
- Standards Conformance

### Summary

Maintains position information fort he iostream classes.

### Data Type and Member Function Indexes
(exclusive of constructors and destructors)

Data Types
state_type

Member Functions
good() long() offset() pos() state()

### Synopsis

    #include <rw/iotraits>
    template<class stateT = mbstate_t>
    class fpos

### Description

The template class fpos<stateT> is used by the iostream classes to maintain position information. It maintains three kinds of information: the absolute position, the conversion state and the validity of the stored position. Streams instantiated on tiny characters use streampos as their positioning type, whereas streams instantiated on wide characters use wstreampos, but both are defined as fpos<mbstate_t>.

### Interface

    template <class stateT = mbstate_t>
    class fpos {

     public:

      typedef stateT  state_type;

      fpos(long off = 0);
      fpos(state_type);

      bool good();
      operator long();

      long offset() cont;
      long offset(long);

      state_type   state(state_type);
      state_type   state () const;

      long pos() const;
      long pos(long);

    };

### Types

    state_type

The type `state_type` holds the conversion state, and is compatible with the function `locale::codecvt()`. By default it is defined as `mbstate_t`.

### Public Constructors

    fpos(long off =0);

Constructs an `fpos` object, initializing its position with `off` and its conversion state with the default `stateT` constructor. This function is not described in the C++ standard.

    fpos(state_type st);

Constructs an `fpos` object, initializing its conversion state with `st`, its position with the start position, and its status to `good`.

### Public Member Functions

    state_type
    state() const;

Returns the conversion state stored in the `fpos` object.

    state_type
    state(state_type st);

Stores `st` as the new conversion state in the `fpos` object and returns its previous value.

    bool good();

Returns the status of the `fpos` object. Offset(`-1`) indicates an invalid value and returns `false`.

    operator long();

Converts `fpos` object to absolute displacement. This operator is handy when used with functions such as `tellp()` or `tellg()` to get absolute displacement.

    long
    offset() const;

Returns the signed displacement in the fpos object.

    long
    offset(long off);

Stores `off` as the new signed displacement in the `fpos` object and returns its previous value.

    long
    pos() const;

Returns the absolute position in the fpos object.

    long
    offset(long pos);

Stores `pos` as the new absolute position in the `fpos` object and returns its previous value.

### Valid Operations

In the following,

- `P` refers to type `fpos<stateT>`

- `p` and `q` refer to a value of type `fpos<stateT>`

- `O` refers to the offset type (`streamoff`, `wstreamoff`, `long` )

- `o` refers to a value of the offset type

- `i` refers to a value of type `int`

Valid operations:

`P p( I );` | Constructs from `int`
`P p = i;` | Assigns from `int`
`P( o )` | Converts from offset
`O( p )` | Converts to offset
`p == q` | Tests for equality
`p != q` | Tests for inequality
`q = p + o` | Adds offset
`p += o` | Adds offset
`q = p -o` | Subtracts offset
`q -= o` | Subtracts offset
`o = p - q` | Returns offset

### See Also

iosfwd(3C++), char_traits(3C++)

Working Paper for Draft Proposed International Standard for Information Systems--Programming Language C++, Section 27.4.

Amendment 1 to the C Standard.

### Standards Conformance

ANSI X3J16/ISO WG21 Joint C++ Committee

Copyright (c) 1998, Rogue Wave Software, Inc.
Send mail to report errors or comment on the documentation.
OEM Release, June 1998