# FBB::level(3bobcat)

## Log-manipulator
(libbobcat-dev_5.07.03)

## 2005-2021

## NAME

FBB::level - Manipulator setting the log-level of FBB::Log objects

## SYNOPSIS

#include <bobcat/level>
Linking option: -lbobcat

## DESCRIPTION

An FBB::level object is used to specify insertion `forces' of information that is inserted into FBB::Log objects. When inserted into Log objects it defines the `force' of subsequent insertions (or write calls) into those Log objects.

Conversely, Log objects may specify insertion `resistances' through their setLevel members. If the level's `force' is equal to or exceeds the Log object's `resistance' then the insertion is performed, otherwise the insertion is ignored. A single insertion statement may contain multiple level calls. If so, then each level call updates the `force' of insertions following the level call.

By default insertions into Log objects not preceded by level insertions are completed.

When a level object is inserted into another kind of std::ostream object the level object performs no actions.

## NAMESPACE

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

## INHERITS FROM

-

## CONSTRUCTORS

- level(size_t force):
  This constructor is used in insertion statements, usually inserting it as anonymous object into an FBB::Log object.

Copy and move constructors (and assignment operators) are available.

## OVERLOADED OPERATOR

- std::ostream &::operator<<(std::ostream &ostr, FBB::level const &force):
  If the ostr can be downcasted to an FBB::Log object then subsequent insertions are performed if force exceeds the Log object's `resistance' as specified by its setLevel member. If ostr does not actually refer to a Log object then ostr is returned without any further action, and ostr handles subsequent insertions in its default way.

## EXAMPLE

    #include <iostream>
    #include <iomanip>

    #include <bobcat/log>
    #include <bobcat/level>

    using namespace std;
    using namespace FBB;

    int main()
    {
    //    Log &log = Log::initialize("&1"); // uses the static Log object
        Log log;                        // explicitly defining a Log object
        log.open("/tmp/out");           // or at once: Log log{ "/tmp/out" }

        log << "This message is written to cout" << nl <<
               setw(16) << ' ' << "occupying multiple lines\n";

        log.off();
        log << "This message is not shown\n";
        log << "This message is not shown\n";
        log << fnl;
        log << "This message is not shown\n";

        log.on(2);
        log << "This message is shown\n";

        log << level(0) << "not shown" << level(2) << "shown at level 2\n";
        log << level(3) << "at level(3)" << level(1) << "not shown" << fnl;

        log << "separate new line\n";

        log << level(2) << "in business again\n";
        log << "final line\n";
    }

## FILES

bobcat/level - defines the class interface.

## SEE ALSO

bobcat(7), log(3bobcat)

## BUGS

None Reported.

## BOBCAT PROJECT FILES

- https://fbb-git.gitlab.io/bobcat/: gitlab project page;
- bobcat_5.07.03-x.dsc: detached signature;
- bobcat_5.07.03-x.tar.gz: source archive;
- bobcat_5.07.03-x_i386.changes: change log;
- libbobcat1_5.07.03-x_*.deb: debian package containing the libraries;
- libbobcat1-dev_5.07.03-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).