# Boost.PropertyTree
#
# Copyright (c) 2006-2007 Matias Capeletto
#
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)


# Quickbook
# -----------------------------------------------------------------------------

import doxygen ;
import quickbook ;
doxygen autodoc
    :
        [ glob ../../../boost/property_tree/*.hpp ]
    :
        <doxygen:param>EXTRACT_ALL=YES
        <doxygen:param>"PREDEFINED=\"BOOST_PROPERTY_TREE_DOXYGEN_INVOKED\" \\
                                   \"BOOST_DEDUCED_TYPENAME=typename\""
        <doxygen:param>HIDE_UNDOC_MEMBERS=NO
        <doxygen:param>EXTRACT_PRIVATE=NO
        <doxygen:param>ENABLE_PREPROCESSING=YES
        <doxygen:param>MACRO_EXPANSION=YES
        <doxygen:param>EXPAND_ONLY_PREDEF=YES
        <doxygen:param>SEARCH_INCLUDES=YES
        <doxygen:param>INCLUDE_PATH=$(BOOST_ROOT)
        <doxygen:param>EXAMPLE_PATH=$(BOOST_ROOT)/libs/property_tree/examples
        <doxygen:param>BRIEF_MEMBER_DESC=YES
        <doxygen:param>REPEAT_BRIEF=YES
        <doxygen:param>ALWAYS_DETAILED_SEC=YES
        <doxygen:param>MULTILINE_CPP_IS_BRIEF=YES
    ;

xml property_tree : property_tree.qbk ;

boostbook standalone
    : property_tree
    : <xsl:param>boost.root=../../../..
      <xsl:param>toc.max.depth=3
      <xsl:param>toc.section.depth=2
      <xsl:param>chunk.section.depth=3
      <dependency>autodoc
      <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/functional/hash/doc/html
    ;

#install ../
#    : ../../../boost.png
#      ../../../next.png
#      ../../../prev.png
#    ;
