//
// bitio  --  bit-wise I/O wrapper classes
//
// Copyright (c) 2003 by Joergen Ibsen / Jibz
// All Rights Reserved
//
// http://www.ibsensoftware.com/
//

/// @file   bitio.hpp
/// @brief  Bit-wise I/O wrapper classes.
/// @author Jibz
/// @date   2003.08.02
///
/// This is the main include file. You should include this
/// instead of the specific implementation files.

#ifndef BITIO_HPP_INCLUDED
#define BITIO_HPP_INCLUDED

#ifdef DOXYGEN_BITIO_MAINPAGE

/// @mainpage bit-wise I/O wrapper classes
///
/// @section intro Introduction
///
/// The need to access data as a stream of bits arises in a number of
/// applications, with data compression as the most common. Since there is
/// little support for this in C/C++, most applications implement their own
/// functionality, resulting in a plethora of choices and characteristics.
///
/// The bitio wrapper classes are my addition to this confusion. They
/// represent the choices I found most appropriate for the uses I have. I am
/// releasing them in the hope that others will find them useful too.
///
/// The main design choice was to implement a hierarchy of classes, so
/// that the main functionality is implemented by, and available through,
/// the base classes. This makes it very easy to implement derived classes
/// for specific uses, while facilitating code independent of the type of
/// the underlying data.
///
/// Another choice was to implement mainly through lightweight wrappers,
/// which do not manage the underlying data, but rather add functionality
/// when needed.
///
/// @section license License
///
/// bitio -- bit-wise I/O wrapper classes.
///
/// Copyright &copy; 2003 by Joergen Ibsen / Jibz,<br>
/// All Rights Reserved.
///
/// <a href="http://www.ibsensoftware.com/">http://www.ibsensoftware.com/</a></p>
///
/// This software is provided 'as-is', without any express or implied
/// warranty. In no event will the authors be held liable for any damages
/// arising from the use of this software.
///
/// Permission is granted to anyone to use this software for any purpose,
/// including commercial applications, and to alter it and redistribute it
/// freely, subject to the following restrictions:
///
/// <ol>
///  <li>The origin of this software must not be misrepresented; you must
///  not claim that you wrote the original software. If you use this
///  software in a product, an acknowledgment in the product
///  documentation would be appreciated but is not required.</li>
///  <li>Altered source versions must be plainly marked as such, and must
///  not be misrepresented as being the original software.</li>
///  <li>This notice may not be removed or altered from any source
///  distribution.</li>
/// </ol>

#else // DOXYGEN_BITIO_MAINPAGE

/// @defgroup bitio bitio
///
/// The need to access data as a stream of bits arises in a number of
/// applications, with data compression as the most common. Since there is
/// little support for this in C/C++, most applications implement their own
/// functionality, resulting in a plethora of choices and characteristics.
///
/// The bitio wrapper classes are my addition to this confusion. They
/// represent the choices I found most appropriate for the uses I have. I am
/// releasing them in the hope that others will find them useful too.
///
/// The main design choice was to implement a hierarchy of classes, so
/// that the main functionality is implemented by, and available through,
/// the base classes. This makes it very easy to implement derived classes
/// for specific uses, while facilitating code independent of the type of
/// the underlying data.
///
/// Another choice was to implement mainly through lightweight wrappers,
/// which do not manage the underlying data, but rather add functionality
/// when needed.
///
/// @author Joergen Ibsen / Jibz
/// @date   2003.08.02

#endif // DOXYGEN_BITIO_MAINPAGE

// include base classes
#include "bitreader.hpp"
#include "bitwriter.hpp"

// include regular specializations
#include "bitreaders.hpp"
#include "bitwriters.hpp"

// include extra specializations
#include "file_bitreader.hpp"
#include "file_bitwriter.hpp"

#endif // BITIO_HPP_INCLUDED
