/**
 * @mainpage
 * Project Website: http://httpd.apache.org/apreq/
 *
 * @verbinclude README
 */

/**
 * @defgroup libapreq2 Apache Request Library
 * @brief libapreq2 Version @APREQ_DOTTED_VERSION@
 *
 * libapreq2 is a shared library based on the Apache
 * Portable Runtime libraries libapr and libaprutil.
 * @see https://apr.apache.org/
 *
 * @section apreq2_config Configuring libapreq2 Applications
 * This package includes <code>apreq2-config</code>,
 * a configuration script for building applications
 * with libapreq2.  Run <code>apreq2-config --help</code>
 * to display its options. XXX add examples here XXX
 */

/**
 * @defgroup apreq_module Modules
 * @brief apreq2 modules included in @PACKAGE@-@VERSION@.
 *
 * XXX
 */

/**
 * @defgroup apreq_lang Language Bindings
 * @brief libapreq2 APIs for programming languages other than C
 *
 * XXX
 */

/**
 * @page apreq_license LICENSE
 * @verbinclude LICENSE
 */

/**
 * @page apreq_notice NOTICE
 * @verbinclude NOTICE
 */

/**
 * @page apreq_install INSTALL
 * @verbinclude INSTALL
 */

/**
 * @defgroup apreq_xs Perl
 * @brief XS Modules
 * @ingroup apreq_lang
 */

/**
 * @defgroup apreq_xs_request Apache2::Request
 * @ingroup apreq_xs
 * @htmlinclude Apache2__Request.html
 */

/**
 * @defgroup apreq_xs_upload Apache2::Upload
 * @ingroup apreq_xs
 * @htmlinclude Apache2__Upload.html
 */

/**
 * @defgroup apreq_xs_cookie Apache2::Cookie
 * @ingroup apreq_xs
 * @htmlinclude Apache2__Cookie.html
 */

/**
 * @defgroup apreq_xs_apr_request APR::Request
 * @ingroup apreq_xs
 * @htmlinclude APR__Request.html
 */

/**
 * @defgroup apreq_xs_apr_request_cookie APR::Request::Cookie
 * @ingroup apreq_xs
 * @htmlinclude APR__Request__Cookie.html
 */

/**
 * @defgroup apreq_xs_apr_request_param APR::Request::Param
 * @ingroup apreq_xs
 * @htmlinclude APR__Request__Param.html
 */

/**
 * @defgroup apreq_xs_apr_request_error APR::Request::Error
 * @ingroup apreq_xs
 * @htmlinclude APR__Request__Error.html
 */

/**
 * @defgroup apreq_xs_apr_request_cgi APR::Request::CGI
 * @ingroup apreq_xs
 * @htmlinclude APR__Request__CGI.html
 */

/**
 * @defgroup apreq_xs_apr_request_apache2 APR::Request::Apache2
 * @ingroup apreq_xs
 * @htmlinclude APR__Request__Apache2.html
 */


/**
 * @page apreq_faq FAQ
 * @htmlinclude FAQ.html
 */
