# FBB::ImmapStream(3bobcat)

## std::istream using FBB::MmapBuf as streambuf
(libbobcat-dev_6.06.02)

## 2005-2024

## NAME

FBB::ImmapStream - Input Stream using mmap(2) through FBB::MmapBuf

## SYNOPSIS

#include <bobcat/immapstream>

Linking option: -lbobcat

## DESCRIPTION

FBB::ImmapStream objects are used to extract information from files which are made available in the virtual address space of the calling process. Using the virtual address space is handled by the class's privately inherited FBB::MmapBuf (std::streambuf class.

By mapping files in the process's virtual address space the time required for processing such files is usually dramatically reduced.

An std::exception is thrown, and an error message is written to cerr if the FBB::MmapBuf base class cannot determine the size of the specified file, or when the (un)mapping cannot be performed.

## NAMESPACE

FBB
All constructors, members, operators and manipulators, mentioned in this man-page, are defined in the namespace FBB.

## INHERITS FROM

std::istream, privately from FBB::MmapBuf.

## CONSTRUCTORS

- ImmapStream():
  The default constructor merely constructs an empty ImmapStream object. To change it to a usable object use move assignment;

- IOmmapStream(std::string const &fname, char const *bufSize = 0):
  The constructor initializes the ImmapStream object for a file named fname.

  By default bfImmapStream) uses a mapping buffer size of 10 times the standard page size, (cf. sysconf(3), and the member pageSize below). The size of the mapping buffer can also be specified using the bufSize parameter. To specify it use a value followed by K, M, or G, representing, resp. 1024, 1024 * 1024, and 1024 * 1024 * 1024 bytes. The final buffer size is at least equal to the standard page size. When a larger value is specified the used buffer size is set to specified / pageSize * pageSize. )

  The move constructor and move assignment operator are available.
  The copy constructor and copy assignment operator are not available.

  ## MEMBER FUNCTIONS

  All members of std::istream are available, as FBB::ImmapStream inherits from that class.
  - size_t bufSize() const:
    returns the used t(mmap) buffer size;

  - size_t fileSize() const:
    returns the size of the specified file.

  - size_t pageSize() const:
    returns the smallest page size used by t(mmap).

  ## EXAMPLE

  An example is provided in bobcat's source archive and gitlab repository at bobcat/immapstream/demo.

  ## FILES

  bobcat/immapstream - defines the class interface

  ## SEE ALSO

  bobcat(7), iommapstream(3bobcat), ommapstream(3bobcat), mmap(2), mmapbuf(3bobcat) sysconf(3)

  ## BUGS

  None Reported.

  ## BOBCAT PROJECT FILES

  - https://fbb-git.gitlab.io/bobcat/: gitlab project page;
  - bobcat_6.06.02-x.dsc: detached signature;
  - bobcat_6.06.02-x.tar.gz: source archive;
  - bobcat_6.06.02-x_i386.changes: change log;
  - libbobcat1_6.06.02-x_*.deb: debian package containing the libraries;
  - libbobcat1-dev_6.06.02-x_*.deb: debian package containing the libraries, headers and manual pages;

  ## BOBCAT

  Bobcat is an acronym of `Brokken's Own Base Classes And Templates'.

  ## COPYRIGHT

  This is free software, distributed under the terms of the GNU General Public License (GPL).

  ## AUTHOR

  Frank B. Brokken (f.b.brokken@rug.nl).