summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortschoening <tschoening@13f79535-47bb-0310-9956-ffa450edef68>2014-01-12 12:44:37 +0000
committertschoening <tschoening@13f79535-47bb-0310-9956-ffa450edef68>2014-01-12 12:44:37 +0000
commit2f96562045e7d45ebfaf31db4472f375320486c7 (patch)
tree2f15f25d9c41a8a245e900ff35cea0910ec75a1c
parentd646e4c074ef37132797c22bd5fc13b63e446872 (diff)
downloadlog4cxx-2f96562045e7d45ebfaf31db4472f375320486c7.tar.gz
Merged changes needed to successfully create a project site with current contents and apidocs, but didn't change anything on the source code itself because it's no new release.latest_stable
git-svn-id: http://svn.apache.org/repos/asf/incubator/log4cxx/branches/latest_stable@1557524 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--DISCLAIMER1
-rw-r--r--build.xml3203
-rw-r--r--pom.xml634
-rw-r--r--src/changes/changes.xml694
-rw-r--r--src/changes/changes.xslt225
-rw-r--r--src/site/apt/building/maven.apt28
-rw-r--r--src/site/apt/index.apt56
-rw-r--r--src/site/doxy/DTDs/xhtml-lat1.ent196
-rw-r--r--src/site/doxy/DTDs/xhtml-special.ent80
-rw-r--r--src/site/doxy/DTDs/xhtml-symbol.ent237
-rw-r--r--src/site/doxy/DTDs/xhtml1-transitional.dtd1201
-rw-r--r--src/site/doxy/Doxyfile.in2518
-rw-r--r--src/site/doxy/Makefile.am4
-rw-r--r--src/site/doxy/license_notice_footer.txt2
-rwxr-xr-xsrc/site/doxy/mainpage.dox22
-rwxr-xr-xsrc/site/doxy/mainpage.dox.xsl72
-rw-r--r--src/site/maven-site.vm522
-rw-r--r--src/site/resources/css/colors.css35
-rw-r--r--src/site/resources/css/img.css21
-rw-r--r--src/site/resources/css/maven-base.css168
-rw-r--r--src/site/resources/css/site.css6
-rw-r--r--src/site/resources/css/styles.css25
-rw-r--r--src/site/resources/images/logos/egg-logo.pngbin0 -> 8626 bytes
-rw-r--r--src/site/resources/images/logos/ls-logo.jpgbin0 -> 41915 bytes
-rw-r--r--src/site/resources/images/logos/maven-feather.pngbin0 -> 3330 bytes
-rwxr-xr-xsrc/site/resources/images/ls-logo.jpgbin32725 -> 0 bytes
-rw-r--r--src/site/site.xml170
-rw-r--r--src/site/xdoc/building/index.xml187
-rw-r--r--src/site/xdoc/index.xml936
-rwxr-xr-xsrc/site/xdoc/stylesheets/project.xml43
-rw-r--r--src/site/xdoc/stylesheets/site.css156
-rwxr-xr-xsrc/site/xdoc/stylesheets/site.vsl357
-rw-r--r--src/site/xdoc/usage.xml1063
33 files changed, 8495 insertions, 4367 deletions
diff --git a/DISCLAIMER b/DISCLAIMER
new file mode 100644
index 0000000..3554e78
--- /dev/null
+++ b/DISCLAIMER
@@ -0,0 +1 @@
+Apache log4cxx is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by Apache Logging Services. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF. \ No newline at end of file
diff --git a/build.xml b/build.xml
index 2d318fa..41ec6f2 100644
--- a/build.xml
+++ b/build.xml
@@ -18,18 +18,48 @@
-->
<!DOCTYPE project [
<!ENTITY libsets '
- <libset libs="${apr-util.lib.prefix}${apr-util.lib.name}${apr-util.lib.suffix}" dir="${apr-util.lib.dir}" if="apr-util.lib.dir"/>
- <libset libs="${apr-util.lib.prefix}${apr-util.lib.name}${apr-util.lib.suffix}" unless="apr-util.lib.dir"/>
- <libset libs="${apr.lib.prefix}${apr.lib.name}${apr.lib.suffix}" dir="${apr.lib.dir}" if="apr.lib.dir"/>
- <libset libs="${apr.lib.prefix}${apr.lib.name}${apr.lib.suffix}" unless="apr.lib.dir"/>
- <libset libs="esmtp" dir="${esmtp.lib.dir}" if="esmtp.lib.dir"/>
- <libset libs="esmtp" if="has-libesmtp" unless="esmtp.lib.dir"/>
- <libset libs="${odbc.lib}" if="odbc.lib"/>
- <libset libs="${apr-util.dependencies}" if="apr-util.dependencies" unless="apr-util-includes-dependencies"/>
- <libset libs="pthread" if="is-unix"/>
- <syslibset libs="advapi32 mswsock ws2_32 shell32" if="is-windows"/>
- <syslibset libs="stdc++" if="is-gcc"/>
- <syslibset libs="cw32mt" if="is-bcc"/>
+ <libset libs="${apr-util.lib.prefix}${apr-util.lib.name}${apr-util.lib.suffix}"
+ dir="${apr-util.lib.dir}"
+ if="apr-util.lib.dir"
+ />
+ <libset libs="${apr-util.lib.prefix}${apr-util.lib.name}${apr-util.lib.suffix}"
+ unless="apr-util.lib.dir"
+ />
+ <libset libs="${apr.lib.prefix}${apr.lib.name}${apr.lib.suffix}"
+ dir="${apr.lib.dir}"
+ if="apr.lib.dir"
+ />
+ <libset libs="${apr.lib.prefix}${apr.lib.name}${apr.lib.suffix}"
+ unless="apr.lib.dir"
+ />
+ <libset libs="esmtp"
+ dir="${esmtp.lib.dir}"
+ if="esmtp.lib.dir"
+ />
+ <libset libs="esmtp"
+ if="has-libesmtp"
+ unless="esmtp.lib.dir"
+ />
+ <libset libs="${odbc.lib}"
+ if="odbc.lib"
+ />
+ <libset libs="${apr-util.dependencies}"
+ if="apr-util.dependencies"
+ unless="apr-util-includes-dependencies"
+ />
+ <libset libs="pthread"
+ if="is-unix"
+ />
+
+ <syslibset libs="advapi32 mswsock ws2_32 shell32"
+ if="is-windows"
+ />
+ <syslibset libs="stdc++"
+ if="is-gcc"
+ />
+ <syslibset libs="cw32mt"
+ if="is-bcc"
+ />
'>
<!ENTITY license '
Licensed to the Apache Software Foundation (ASF) under one or more
@@ -54,1198 +84,1965 @@
]>
<!--
-This file builds log4cxx using Apache Ant (http://ant.apache.org)
-and the C++ compilation tasks from http://ant-contrib.sourceforge.net.
-
-
+ This file builds log4cxx using Apache Ant (http://ant.apache.org)
+ and the C++ compilation tasks from http://ant-contrib.sourceforge.net.
-->
<project name="log4cxx" default="check">
-&common;
-&find-apr;
-&find-apr-util;
-&find-libesmtp;
-
-<property name="base.dir" location="."/>
-<property name="src.dir" location="${base.dir}/src/main/cpp"/>
-<property name="resources.dir" location="${base.dir}/src/main/resources"/>
-<property name="include.dir" location="${base.dir}/src/main/include"/>
-<property name="target.dir" location="${base.dir}/target"/>
-<property name="lib.dir" location="${target.dir}/lib"/>
-<property name="examples.dir" location="${base.dir}/src/examples/cpp"/>
-<property name="tests.dir" location="${base.dir}/src/test"/>
-<property name="tests.cpp.dir" location="${tests.dir}/cpp"/>
-<property name="tests.resources.dir" location="${tests.dir}/resources"/>
-<property name="tests.output.dir" location="${tests.resources.dir}/output"/>
-<property name="m2_repo" location="${user.home}/.m2/repository"/>
-<property name="log4j.version" value="1.2.14"/>
-<available property="log4j.jar"
- value="/usr/share/java/log4j-1.2.jar"
- file="/usr/share/java/log4j-1.2.jar"/>
-<property name="log4j.jar"
- location="${m2_repo}/log4j/log4j/${log4j.version}/log4j-${log4j.version}.jar"/>
-
-
-<property name="doxygen.exe" value="doxygen"/>
-
-<property name="lib.name" value="log4cxx"/>
-<property name="lib.prefix" value=""/>
-<property name="version" value="0.10.0"/>
-<property name="enable-char" value="1"/>
-<property name="enable-wchar_t" value="1"/>
-<property name="enable-unichar" value="0"/>
-<property name="enable-cfstring" value="0"/>
-<property name="with-charset" value="auto"/>
-<property name="with-SMTP" value="no"/>
-<property name="with-ODBC" value="no"/>
-
-
-<property name="svnsite.url" value="https://svn.apache.org/repos/asf/logging/site/trunk/docs/log4cxx"/>
-
-
-
-<target name="usage" description="Describes usage of the build script">
- <echo>
-Ant build file for log4cxx
-
-Common invocations:
-
-> ant
-
-will attempt to locate APR and APR-util in /usr, /usr/local/apr and ..
-
-Builds and tests log4cxx.
-
-> ant -Dwith-apr=APRPATH -Dwith-apr-util=APUPATH
-
-Builds and tests log4cxx using APR and APR-Util at specified location
-
-> ant -p
-
-Displays available targets
-
-> ant build-projects-vc6
-
-Builds Microsoft Visual Studio 6 projects.
--vc7, -vc8, -vc9 and -xcode for Visual Studio .NET, 2005, 2008 and Apple Xcode 2 and later.
-respectively.
-
-Command line options:
-
--Ddebug=[true|false]
--Doptimize=[speed|size|none]
--Dversion=n.n.n
--Denable-shared=[yes|no] (default yes)
--Denable-static=[yes|no] (default yes)
--Denable-char=[0, 1] (expose char* API, default 1)
--Denable-wchar_t=[0, 1] (expose wchar_t* API, default 1)
--Denable-unichar=[0, 1] (expose UniChar API, default 0)
--Denable-cfstring[0, 1] (expose CFString API, default 0)
--Dwith-charset=[auto|utf-8|iso-8859-1|usascii|ebcdic] (default auto)
--Dwith-logchar=[utf-8|wchar_t|unichar] (default=utf-8 on Unix, wchar_t on Windows)
--Dwith-apr=APRPATH
--Dwith-apr-util=PATH
--Dwith-SMTP=[libesmtp, no] (default no)
--Dwith-ODBC=[unixODBC, iODBC, Microsoft, no] (default no)
-
-</echo>
-</target>
-
-
-<target name="init" depends="common-init">
-
- <property name="log4cxx.lib.dir" value="${executable.dir}"/>
- <mkdir dir="${log4cxx.lib.dir}"/>
-
- <condition property="with-logchar" value="wchar_t">
- <isset property="is-windows"/>
- </condition>
- <property name="with-logchar" value="utf-8"/>
-
- <condition property="has-libesmtp" value="1">
- <equals arg1="${with-SMTP}" arg2="libesmtp"/>
- </condition>
-
- <condition property="odbc.lib" value="iodbc">
- <equals arg1="${with-ODBC}" arg2="iODBC"/>
- </condition>
-
- <condition property="odbc.lib" value="unixodbc">
- <equals arg1="${with-ODBC}" arg2="unixODBC"/>
- </condition>
-
- <condition property="odbc.lib" value="odbc32">
- <equals arg1="${with-ODBC}" arg2="Microsoft"/>
- </condition>
-
- <condition property="has-ODBC" value="1">
- <isset property="odbc.lib"/>
- </condition>
- <property name="has-ODBC" value="0"/>
-
- <condition property="force-ant" value="1">
- <equals arg1="${find}" arg2="false"/>
- </condition>
- <echo>force-ant: ${force-ant}</echo>
-
-</target>
-
-<target name="clean" depends="init" description="Removes built files">
- <delete dir="${target.dir}"/>
- <delete>
- <fileset dir="${include.dir}/log4cxx" includes="**/log4cxx.h"/>
- </delete>
-
-</target>
-
-<target name="unix-configure" if="is-unix">
- <copy tofile="${include.dir}/log4cxx/log4cxx.tmp"
- file="${include.dir}/log4cxx/log4cxx.h.in" overwrite="true"/>
- <copy tofile="${include.dir}/log4cxx/private/log4cxx_private.tmp"
- file="${include.dir}/log4cxx/private/log4cxx_private.h.in" overwrite="true"/>
-</target>
-
-<target name="win-configure" if="is-windows">
- <copy tofile="${include.dir}/log4cxx/log4cxx.tmp"
- file="${include.dir}/log4cxx/log4cxx.hw" overwrite="true"/>
- <copy tofile="${include.dir}/log4cxx/private/log4cxx_private.tmp"
- file="${include.dir}/log4cxx/private/log4cxx_private.hw" overwrite="true"/>
- <property name="odbc.lib" value="odbc32"/>
-</target>
-
-
-<target name="configure" depends="init,
- unix-configure,
- win-configure">
- <echo message="Configuring with-logchar=${with-logchar}" />
- <echo message="Configuring with-charset=${with-charset}" />
- <echo message="Configuring with-SMTP=${with-SMTP}" />
- <echo message="Configuring with-ODBC=${with-ODBC}" />
- <echo message="Configuring enable-char=${enable-char}"/>
- <echo message="Configuring enable-wchar_t=${enable-wchar_t}"/>
- <echo message="Configuring enable-unichar=${enable-unichar}"/>
- <echo message="Configuring enable-cfstring=${enable-cfstring}"/>
-
- <condition property="logchar_is_utf8" value="1">
- <equals arg1="${with-logchar}" arg2="utf-8"/>
- </condition>
- <property name="logchar_is_utf8" value="0"/>
-
- <condition property="logchar_is_unichar" value="1">
- <equals arg1="${with-logchar}" arg2="unichar"/>
- </condition>
- <property name="logchar_is_unichar" value="0"/>
-
- <condition property="logchar_is_wchar" value="1">
- <equals arg1="${with-logchar}" arg2="wchar_t"/>
- </condition>
- <property name="logchar_is_wchar" value="0"/>
-
- <replaceregexp file="${include.dir}/log4cxx/log4cxx.tmp"
- match="@LOGCHAR_IS_UNICHAR@"
- replace="${logchar_is_unichar}"/>
-
- <replaceregexp file="${include.dir}/log4cxx/log4cxx.tmp"
- match="@LOGCHAR_IS_UTF8@"
- replace="${logchar_is_utf8}"/>
-
- <replaceregexp file="${include.dir}/log4cxx/log4cxx.tmp"
- match="@LOGCHAR_IS_WCHAR@"
- replace="${logchar_is_wchar}"/>
-
- <condition property="charset_is_utf8" value="1">
- <equals arg1="${with-charset}" arg2="utf-8"/>
- </condition>
- <property name="charset_is_utf8" value="0"/>
-
- <condition property="charset_is_iso-8859-1" value="1">
- <equals arg1="${with-charset}" arg2="iso-8859-1"/>
- </condition>
- <property name="charset_is_iso-8859-1" value="0"/>
-
- <condition property="charset_is_usascii" value="1">
- <equals arg1="${with-charset}" arg2="usascii"/>
- </condition>
- <property name="charset_is_usascii" value="0"/>
-
- <condition property="charset_is_ebcdic" value="1">
- <equals arg1="${with-charset}" arg2="ebcdic"/>
- </condition>
- <property name="charset_is_ebcdic" value="0"/>
-
- <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
- match="@CHARSET_UTF8@"
- replace="${charset_is_utf8}"/>
-
- <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
- match="@CHARSET_ISO88591@"
- replace="${charset_is_iso-8859-1}"/>
- <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
- match="@CHARSET_USASCII@"
- replace="${charset_is_usascii}"/>
- <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
- match="@CHARSET_EBCDIC@"
- replace="${charset_is_ebcdic}"/>
-
- <replaceregexp file="${include.dir}/log4cxx/log4cxx.tmp"
- match="@CHAR_API@"
- replace="${enable-char}"/>
-
- <replaceregexp file="${include.dir}/log4cxx/log4cxx.tmp"
- match="@WCHAR_T_API@"
- replace="${enable-wchar_t}"/>
-
- <replaceregexp file="${include.dir}/log4cxx/log4cxx.tmp"
- match="@UNICHAR_API@"
- replace="${enable-unichar}"/>
-
- <replaceregexp file="${include.dir}/log4cxx/log4cxx.tmp"
- match="@CFSTRING_API@"
- replace="${enable-cfstring}"/>
-
-
- <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
- match="@HAS_SYSLOG@"
- replace="1"/>
- <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
- match="@HAS_STD_LOCALE@"
- replace="1"/>
- <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
- match="@HAS_MBSRTOWCS@"
- replace="1"/>
- <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
- match="@HAS_WCSTOMBS@"
- replace="1"/>
- <condition property="has-fwide" value="0">
- <isset property="is-cygwin"/>
- </condition>
- <property name="has-fwide" value="1"/>
- <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
- match="@HAS_FWIDE@"
- replace="${has-fwide}"/>
-
- <condition property="has-libesmtp-value" value="1">
- <isset property="has-libesmtp"/>
- </condition>
- <property name="has-libesmtp-value" value="0"/>
- <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
- match="LOG4CXX_HAVE_LIBESMTP 0"
- replace="LOG4CXX_HAVE_LIBESMTP ${has-libesmtp-value}"/>
- <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
- match="@HAS_LIBESMTP@"
- replace="${has-libesmtp-value}"/>
-
- <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
- match="@HAS_ODBC@"
- replace="${has-ODBC}"/>
-
- <antcall target="copy-if-changed">
- <param name="tofile" value="${include.dir}/log4cxx/log4cxx.h"/>
- <param name="file" value="${include.dir}/log4cxx/log4cxx.tmp"/>
- </antcall>
- <delete file="${include.dir}/log4cxx/log4cxx.tmp"/>
- <antcall target="copy-if-changed">
- <param name="tofile" value="${include.dir}/log4cxx/private/log4cxx_private.h"/>
- <param name="file" value="${include.dir}/log4cxx/private/log4cxx_private.tmp"/>
- </antcall>
- <delete file="${include.dir}/log4cxx/private/log4cxx_private.tmp"/>
-
-</target>
-
-
-<target name="build-apr" depends="find-apr" unless="apr.lib.file">
- <fail unless="apr.src.dir">Could not locate apr library or source.</fail>
- <property name="apr.lib.type" value="static"/>
- <property name="apr.lib.prefix" value=""/>
- <property name="apr.lib.suffix" value=""/>
- <property name="project.type" value="msvc6"/>
- <ant antfile="src/ant/apr-build.xml" target="build" inheritAll="false">
- <property name="basedir" value="${apr.src.dir}"/>
- <property name="target.dir" value="${target.dir}"/>
- <property name="debug" value="${debug}"/>
- <property name="lib.prefix" value="${apr.lib.prefix}"/>
- <property name="lib.suffix" value="${apr.lib.suffix}"/>
- <property name="compiler" value="${compiler}"/>
- <property name="runtime" value="${runtime}"/>
- <property name="lib.type" value="${apr.lib.type}"/>
- <property name="project.type" value="${project.type}"/>
- <property name="projects.dir" value="${projects.dir}"/>
- <property name="project.if.value" value="${project.if}"/>
- <property name="use-pic" value="${use-pic}"/>
- <property name="os.family" value="${os.family}"/>
- </ant>
- <condition property="apr.lib.dir" value="${target.dir}/${debug.release}/shared">
- <equals arg1="${apr.lib.type}" arg2="shared"/>
- </condition>
- <property name="apr.lib.dir" location="${target.dir}/${debug.release}/static"/>
- <property name="apr.project.file" location="${projects.dir}/apr"/>
-</target>
-
-
-<target name="build-apr-util" depends="build-apr, find-apr-util" unless="apr-util.lib.file">
- <fail unless="apr-util.src.dir">Could not locate apr-util library or source.</fail>
- <property name="apr-util.lib.type" value="${apr.lib.type}"/>
- <property name="apr-util.lib.prefix" value=""/>
- <property name="apr-util.lib.suffix" value=""/>
- <property name="project.type" value="msvc6"/>
- <!-- built this way, apr-util will include expat and doesn't need an external reference -->
- <property name="apr-util-includes-dependencies" value="1"/>
-
- <ant antfile="src/ant/apr-util-build.xml" target="build" inheritAll="false">
- <property name="target.dir" value="${target.dir}"/>
- <property name="basedir" value="${apr-util.src.dir}"/>
- <property name="debug" value="${debug}"/>
- <property name="lib.prefix" value="${apr-util.lib.prefix}"/>
- <property name="lib.suffix" value="${apr-util.lib.suffix}"/>
- <property name="compiler" value="${compiler}"/>
- <property name="runtime" value="${runtime}"/>
- <property name="apr.include.dir" value="${apr.include.dir}"/>
- <property name="apr.lib.dir" value="${apr.lib.dir}"/>
- <property name="apr.lib.type" value="${apr.lib.type}"/>
- <property name="lib.type" value="${apr-util.lib.type}"/>
- <property name="project.type" value="${project.type}"/>
- <property name="projects.dir" value="${projects.dir}"/>
- <property name="project.if.value" value="${project.if}"/>
- <property name="use-pic" value="${use-pic}"/>
- <property name="os.family" value="${os.family}"/>
- </ant>
-
- <condition property="apr-util.lib.dir" value="${target.dir}/${debug.release}/shared">
- <equals arg1="${apr-util.lib.type}" arg2="shared"/>
- </condition>
- <property name="apr-util.lib.dir" location="${target.dir}/${debug.release}/static"/>
- <property name="apr-util.project.file" location="${projects.dir}/apr-util"/>
-</target>
-
-<target name="build-libesmtp" depends="find-esmtp" if="has-libesmtp" unless="esmtp.lib.file">
- <fail unless="esmtp.src.dir">Could not locate libesmtp library or source.</fail>
- <property name="esmtp.lib.type" value="static"/>
- <property name="esmtp.lib.prefix" value=""/>
- <property name="esmtp.lib.suffix" value=""/>
- <property name="project.type" value="msvc6"/>
- <condition property="esmtp.compiler" value="gcc">
- <equals arg1="${compiler}" arg2="g++"/>
- </condition>
- <property name="esmtp.compiler" value="${compiler}"/>
-
- <ant antfile="src/ant/esmtp-build.xml" target="build" inheritAll="false">
- <property name="target.dir" value="${target.dir}"/>
- <property name="basedir" value="${esmtp.src.dir}"/>
- <property name="debug" value="${debug}"/>
- <property name="lib.prefix" value="${esmtp.lib.prefix}"/>
- <property name="lib.suffix" value="${esmtp.lib.suffix}"/>
- <property name="compiler" value="${esmtp.compiler}"/>
- <property name="runtime" value="${runtime}"/>
- <property name="lib.type" value="${esmtp.lib.type}"/>
- <property name="project.type" value="${project.type}"/>
- <property name="projects.dir" value="${projects.dir}"/>
- <property name="project.if.value" value="${project.if}"/>
- <property name="use-pic" value="${use-pic}"/>
- <property name="os.family" value="${os.family}"/>
- </ant>
-
- <condition property="esmtp.lib.dir" value="${target.dir}/${debug.release}/shared">
- <equals arg1="${esmtp.lib.type}" arg2="shared"/>
- </condition>
- <property name="esmtp.lib.dir" location="${target.dir}/${debug.release}/static"/>
- <property name="esmtp.project.file" location="${projects.dir}/libesmtp"/>
-</target>
-
-
-<target name="make-header-check">
- <echo file="${header}.cpp" append="false">
-#include "${header}"
-#include "${header}"
-</echo>
-</target>
-
-
-<target name="header-check" depends="build-apr-util, configure"
- description="Checks headers against Effective C++ guidelines">
- <fail unless="is-gcc">Requires GCC compiler</fail>
- <taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
- <delete dir="${target.dir}/header-check"/>
- <mkdir dir="${target.dir}/header-check"/>
- <copy todir="${target.dir}/header-check" overwrite="true">
- <fileset dir="${include.dir}" includes="**/*.h">
- <!-- obsolete header with #error directive to eliminate its use -->
- <exclude name="**/tchar.h"/>
- <!-- excluded due to conflict between log4cxx/rfa.h and log4cxx/rolling/rfa.h -->
- <exclude name="log4cxx/rollingfileappender.h"/>
- </fileset>
- </copy>
- <foreach target="make-header-check" param="header">
- <path><fileset dir="${target.dir}/header-check" includes="**/*.h"/></path>
- </foreach>
- <property name="project.type" value="msvc6"/>
- <cc objdir="${target.dir}/header-check"
- name="gcc"
- exceptions="true"
- subsystem="gui"
- optimize="none"
- multithreaded="true"
- relentless="true"
- debug="${debug}"
- projectsOnly="${projectsOnly}">
- <compilerarg value="-Weffc++"/>
- <compilerarg value="-Wall"/>
- <compilerarg value="${pic-option}" if="pic-option"/>
- <fileset dir="${target.dir}/header-check"
- includes="**/*.cpp"
- excludes="log4cxx/private/*.cpp **/aprinitializer.h.cpp"/>
- <includepath path="${include.dir}"/>
- <project outfile="${projects.dir}/header-check"
- type="${project.type}" if="project.if"/>
- </cc>
-</target>
-
-<target name="build-lib" depends="build-apr-util, build-libesmtp, configure" description="Build log4cxx library">
- <mkdir dir="${log4cxx.lib.dir}/log4cxx_obj"/>
-
- <condition property="apr-static" value="1">
- <equals arg1="${apr.lib.type}" arg2="static"/>
- </condition>
-
- <condition property="apr-util-static" value="1">
- <equals arg1="${apr-util.lib.type}" arg2="static"/>
- </condition>
-
- <condition property="apr-libs-match" value="1">
- <equals arg1="${apr.lib.type}" arg2="${apr-util.lib.type}"/>
- </condition>
-
- <fail unless="apr-libs-match">apr is ${apr.lib.type} and apr-util is ${apr-util.lib.type}, must be same type.</fail>
- <property name="lib.name" value="log4cxx"/>
- <property name="lib.prefix" value=""/>
- <property name="lib.suffix" value=""/>
-
- <condition property="apr-util.dependencies" value="expat iconv">
- <equals arg1="${apr-util.lib.type}" arg2="static"/>
- </condition>
-
-
- <property name="project.compiler" value="${compiler}"/>
- <property name="project.type" value="msvc6"/>
-
- <condition property="resource.compiler" value="windres">
- <isset property="is-gcc"/>
- </condition>
- <condition property="resource.compiler" value="brc">
- <isset property="is-bcc"/>
- </condition>
- <property name="resource.compiler" value="msrc"/>
-
- <cc name="${project.compiler}"
- exceptions="true"
- outfile="${log4cxx.lib.dir}/${lib.prefix}${lib.name}${lib.suffix}"
- outputfileproperty="log4cxx.lib.file"
- subsystem="console"
- multithreaded="true"
- runtime="${runtime}"
- outtype="${lib.type}"
- objdir="${log4cxx.lib.dir}/log4cxx_obj"
- debug="${debug}"
- projectsOnly="${projectsOnly}">
- <compiler name="${resource.compiler}" if="is-windows">
- <includepath path="${resources.dir}"/>
- <fileset dir="${resources.dir}" includes="*.rc"/>
- </compiler>
- <fileset dir="${src.dir}" includes="*.cpp"/>
- <fileset dir="${include.dir}" includes="**/*.h"/>
- <includepath path="${include.dir}"/>
- <includepath path="${apr.include.dir}" if="apr.include.dir"/>
- <includepath path="${apr-util.include.dir}" if="apr-util.include.dir"/>
- <includepath path="${esmtp.include.dir}" if="esmtp.include.dir"/>
- <defineset define="_USRDLL DLL_EXPORTS" if="is-windows"/>
- <defineset define="LOG4CXX"/>
- <defineset define="LOG4CXX_STATIC" if="is-static"/>
- <defineset define="APR_DECLARE_STATIC" if="apr-static"/>
- <defineset define="APU_DECLARE_STATIC" if="apr-util-static"/>
- <defineset define="WIN32" if="is-windows"/>
- <compilerarg value="${pic-option}" if="pic-option"/>
- &libsets;
- <project type="${project.type}" outfile="${projects.dir}/${lib.name}" if="project.if">
- <comment>&license;</comment>
- <dependency file="${projects.dir}/apr"/>
- <dependency file="${projects.dir}/xml"/>
- <dependency file="${projects.dir}/aprutil" depends="apr,xml"/>
- <dependency name="${projects.dir}/libesmtp"/>
- </project>
- </cc>
-
- <!-- copy liblog4cxx.so to log4cxx.dll for MinGW and Cygwin -->
- <condition property="copy.log4cxx" value="${log4cxx.lib.dir}/${lib.prefix}${lib.name}${lib.suffix}.dll">
- <and>
- <os family="windows"/>
- <isset property="is-gcc"/>
- <equals arg1="${lib.type}" arg2="shared"/>
- <isset property="log4cxx.lib.file"/>
- </and>
- </condition>
-</target>
-
-<target name="build" depends="build-lib" if="copy.log4cxx">
- <copy file="${log4cxx.lib.file}" tofile="${copy.log4cxx}"
- overwrite="true" preservelastmodified="true"/>
-</target>
-
-<target name="build-example">
- <mkdir dir="${log4cxx.lib.dir}/${example.name}_obj"/>
- <property name="project.compiler" value="${compiler}"/>
- <property name="project.type" value="msvc6"/>
- <property name="example.include.dir" value="${example.src.dir}"/>
- <cc name="${project.compiler}"
- exceptions="true"
- outfile="${log4cxx.lib.dir}/${example.name}"
- subsystem="console"
- multithreaded="true"
- runtime="${runtime}"
- outtype="executable"
- objdir="${log4cxx.lib.dir}/${example.name}_obj"
- debug="${debug}"
- projectsOnly="${projectsOnly}">
- <fileset dir="${example.src.dir}" includes="${example.includes}"/>
- <includepath path="${include.dir}"/>
- <includepath path="${example.include.dir}"/>
- <includepath path="${apr.include.dir}" if="apr.include.dir"/>
-
- <defineset define="WIN32" if="is-windows"/>
- <defineset define="LOG4CXX_STATIC" if="is-static"/>
- <defineset define="APR_DECLARE_STATIC" if="apr-static"/>
-
- <compilerarg value="${pic-option}" if="pic-option"/>
-
- <libset libs="${lib.prefix}${lib.name}${lib.suffix}" dir="${log4cxx.lib.dir}"/>
- &libsets;
-
- <project outfile="${projects.dir}/${example.name}" type="${project.type}" if="project.if">
- <comment>&license;</comment>
- <dependency file="${projects.dir}/apr"/>
- <dependency file="${projects.dir}/xml"/>
- <dependency name="${projects.dir}/aprutil" depends="apr,xml"/>
- <dependency name="${projects.dir}/libesmtp"/>
- <dependency file="${projects.dir}/log4cxx" depends="apr,aprutil,xml"/>
- </project>
-
- </cc>
-</target>
-
-<target name="run-example">
- <!-- remove any stray configuration files -->
- <delete>
- <fileset dir="${log4cxx.lib.dir}" includes="log4*.properties log4*.xml"/>
- </delete>
- <exec executable="${log4cxx.lib.dir}/${example.name}"
- dir="${log4cxx.lib.dir}"
- failonerror="true">
- <env key="DYLD_LIBRARY_PATH"
- value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.DYLD_LIBRARY_PATH}"/>
- <env key="LD_LIBRARY_PATH"
- value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.LD_LIBRARY_PATH}"/>
- <env key="Path" value="${env.Path}"/>
- </exec>
-</target>
-
-
-<target name="build-delayedloop" depends="build">
- <antcall target="build-example">
- <param name="example.src.dir" value="${examples.dir}"/>
- <param name="example.name" value="delayedloop"/>
- <param name="example.includes" value="delayedloop.cpp"/>
- </antcall>
-</target>
-
-<target name="build-trivial" depends="build">
- <antcall target="build-example">
- <param name="example.src.dir" value="${examples.dir}"/>
- <param name="example.name" value="trivial"/>
- <param name="example.includes" value="trivial.cpp"/>
- </antcall>
-</target>
-
-<target name="build-console" depends="build">
- <antcall target="build-example">
- <param name="example.src.dir" value="${examples.dir}"/>
- <param name="example.name" value="console"/>
- <param name="example.includes" value="console.cpp"/>
- </antcall>
-</target>
-
-<target name="build-stream" depends="build">
- <antcall target="build-example">
- <param name="example.src.dir" value="${examples.dir}"/>
- <param name="example.name" value="stream"/>
- <param name="example.includes" value="stream.cpp"/>
- </antcall>
-</target>
-
-<target name="build-examples"
- depends="build-delayedloop, build-trivial, build-stream, build-console"
- description="Builds example programs"/>
-
-
-
-<target name="build-unittest" depends="build"
- description="Builds unit test app">
- <mkdir dir="${log4cxx.lib.dir}/testsuite_obj"/>
-
- <property name="project.compiler" value="${compiler}"/>
- <property name="project.type" value="msvc6"/>
- <cc name="${project.compiler}"
- exceptions="true"
- outfile="${log4cxx.lib.dir}/testsuite"
- subsystem="console"
- multithreaded="true"
- runtime="${runtime}"
- outputfileproperty="testsuite.exe"
- outtype="executable"
- objdir="${log4cxx.lib.dir}/testsuite_obj"
- debug="${debug}"
- projectsOnly="${projectsOnly}">
- <fileset dir="${tests.cpp.dir}" includes="**/*.cpp **/*.c **/*.h"/>
- <includepath path="${include.dir}"/>
- <includepath path="${apr.include.dir}" if="apr.include.dir"/>
- <includepath path="${apr-util.include.dir}" if="apr-util.include.dir"/>
- <defineset define="LOG4CXX_STATIC" if="is-static"/>
- <defineset define="APR_DECLARE_STATIC" if="apr-static"/>
- <defineset define="APU_DECLARE_STATIC" if="apr-util-static"/>
- <defineset define="WIN32" if="is-windows"/>
- <compilerarg value="${pic-option}" if="pic-option"/>
-
- <libset libs="${lib.prefix}${lib.name}${lib.suffix}" dir="${log4cxx.lib.dir}"/>
- &libsets;
-
- <project outfile="${projects.dir}/testsuite" type="${project.type}" if="project.if">
- <comment>&license;</comment>
- <dependency file="${projects.dir}/apr"/>
- <dependency file="${projects.dir}/xml"/>
- <dependency file="${projects.dir}/aprutil" depends="apr,xml"/>
- <dependency name="${projects.dir}/libesmtp"/>
- <dependency file="${projects.dir}/log4cxx" depends="apr,aprutil,libesmtp"/>
- </project>
- </cc>
-</target>
-
-
-
-
-<target name="build-standalone-unittest"
- description="Builds a unit tests + log4cxx executable"
- depends="build-apr-util, build-libesmtp, configure">
- <mkdir dir="${executable.dir}/static/testsuite-standalone_obj"/>
- <property name="project.compiler" value="${compiler}"/>
- <property name="project.type" value="msvc6"/>
- <condition property="resource.compiler" value="windres">
- <isset property="is-gcc"/>
- </condition>
- <property name="resource.compiler" value="msrc"/>
-
- <cc name="${project.compiler}"
- exceptions="true"
- outfile="${executable.dir}/static/testsuite-standalone"
- subsystem="console"
- multithreaded="true"
- runtime="${runtime}"
- outputfileproperty="testsuite-standalone.exe"
- outtype="executable"
- objdir="${executable.dir}/static/testsuite-standalone_obj"
- debug="${debug}"
- projectsOnly="${projectsOnly}">
- <compiler name="${resource.compiler}" if="is-windows">
- <includepath path="${resources.dir}"/>
- <fileset dir="${resources.dir}" includes="*.rc"/>
- </compiler>
- <fileset dir="${src.dir}" includes="*.cpp" excludes="**/iconv_module.cpp"/>
- <fileset dir="${include.dir}" includes="**/*.h"/>
- <fileset dir="${tests.cpp.dir}" includes="**/*.cpp **/*.c **/*.h"/>
- <includepath path="${include.dir}"/>
- <includepath path="${apr.include.dir}" if="apr.include.dir"/>
- <includepath path="${apr-util.include.dir}" if="apr-util.include.dir"/>
- <includepath path="${esmtp.include.dir}" if="esmtp.include.dir"/>
- <defineset define="LOG4CXX"/>
- <defineset define="APR_DECLARE_STATIC" if="apr-static"/>
- <defineset define="APU_DECLARE_STATIC" if="apr-util-static"/>
- <defineset define="WIN32" if="is-windows"/>
- <compilerarg value="${pic-option}" if="pic-option"/>
-
- &libsets;
-
- <includepath path="${include.dir}"/>
- <includepath path="${apr.include.dir}"/>
- <defineset define="LOG4CXX"/>
- <libset libs="cw32mt" if="is-bcc"/>
-
-
- <project outfile="${projects.dir}/testsuite-standalone"
- type="${project.type}"
- if="project.if">
- <comment>&license;</comment>
- <dependency file="${projects.dir}/apr"/>
- <dependency file="${projects.dir}/xml"/>
- <dependency file="${projects.dir}/aprutil" depends="apr,xml"/>
- <dependency name="${projects.dir}/libesmtp"/>
- </project>
- </cc>
-</target>
-
-<target name="build-all" depends="build-examples, build-unittest"
- description="Builds all artifacts"/>
-
-<target name="clean-output" depends="init">
- <delete>
- <fileset dir="${tests.dir}" includes="output/*"/>
- </delete>
-</target>
-
-<target name="run-defaultinit-unittest" depends="build-unittest">
- <antcall target="run-defaultinit-log4X">
- <param name="config" value="log4j"/>
- </antcall>
- <antcall target="run-defaultinit-log4X">
- <param name="config" value="log4cxx"/>
- </antcall>
-</target>
-
-<target name="run-defaultinit-log4X">
- <mkdir dir="${tests.output.dir}"/>
-
-
- <!-- test of log4j.properties -->
- <delete>
- <fileset dir="${log4cxx.lib.dir}" includes="*.properties *.xml"/>
- </delete>
- <exec executable="${testsuite.exe}" dir="${log4cxx.lib.dir}"
- failonerror="true">
- <arg value="-v"/>
- <arg value="testcase1"/>
- <env key="DYLD_LIBRARY_PATH"
- value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.DYLD_LIBRARY_PATH}"/>
- <env key="LD_LIBRARY_PATH"
- value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.LD_LIBRARY_PATH}"/>
- </exec>
-
- <copy tofile="${log4cxx.lib.dir}/${config}.xml"
- file="${tests.resources.dir}/input/xml/defaultInit.xml" overwrite="true"/>
- <exec executable="${testsuite.exe}" dir="${log4cxx.lib.dir}"
- failonerror="true">
- <arg value="-v"/>
- <arg value="testcase2"/>
- <env key="DYLD_LIBRARY_PATH"
- value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.DYLD_LIBRARY_PATH}"/>
- <env key="LD_LIBRARY_PATH"
- value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.LD_LIBRARY_PATH}"/>
- </exec>
- <delete>
- <fileset dir="${log4cxx.lib.dir}" includes="*.properties *.xml"/>
- </delete>
-
-
- <copy tofile="${log4cxx.lib.dir}/${config}.properties"
- file="${tests.resources.dir}/input/defaultInit3.properties" overwrite="true"/>
- <exec executable="${testsuite.exe}" dir="${log4cxx.lib.dir}"
- failonerror="true">
- <arg value="-v"/>
- <arg value="testcase3"/>
- <env key="DYLD_LIBRARY_PATH"
- value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.DYLD_LIBRARY_PATH}"/>
- <env key="LD_LIBRARY_PATH"
- value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.LD_LIBRARY_PATH}"/>
- </exec>
- <delete>
- <fileset dir="${log4cxx.lib.dir}" includes="*.properties *.xml"/>
- </delete>
-
-
- <copy file="${tests.resources.dir}/input/xml/defaultInit.xml" tofile="${log4cxx.lib.dir}/${config}.xml"/>
- <copy file="${tests.resources.dir}/input/defaultInit3.properties" tofile="${log4cxx.lib.dir}/${config}.properties"/>
- <exec executable="${testsuite.exe}" dir="${log4cxx.lib.dir}"
- failonerror="true">
- <arg value="-v"/>
- <arg value="testcase4"/>
- <env key="LD_LIBRARY_PATH"
- value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.LD_LIBRARY_PATH}"/>
- <env key="DYLD_LIBRARY_PATH"
- value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.DYLD_LIBRARY_PATH}"/>
- </exec>
- <delete>
- <fileset dir="${log4cxx.lib.dir}" includes="*.properties *.xml"/>
- </delete>
-
-
-</target>
-
-<target name="run-unittest" depends="build-unittest, run-defaultinit-unittest, clean-output"
- description="Runs unit test">
- <property environment="env"/>
- <mkdir dir="${tests.output.dir}"/>
- <delete>
- <fileset dir="${tests.output.dir}" includes="*"/>
- </delete>
- <exec executable="${testsuite.exe}" dir="${tests.resources.dir}"
- failonerror="true">
- <arg value="-v"/>
- <env key="TOTO" value="wonderful"/>
- <env key="key1" value="value1"/>
- <env key="key2" value="value2"/>
- <env key="LD_LIBRARY_PATH"
- value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.LD_LIBRARY_PATH}"/>
- <env key="DYLD_LIBRARY_PATH"
- value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.DYLD_LIBRARY_PATH}"/>
- <env key="Path"
- value="${log4cxx.lib.dir};${env.Path}"/>
- </exec>
- <available property="dom3-status" value="" file="src/test/resources/output/dom&#xB3;"/>
- <available property="dom4-status" value="" file="src/test/resources/output/dom&#x3195;"/>
- <property name="dom3-status" value="NOT"/>
- <property name="dom4-status" value="NOT"/>
- <echo>output/dom&#xB3; was ${dom3-status} created in DOMTestCase::test3</echo>
- <echo>output/dom&#x3195; was ${dom4-status} created in DOMTestCase::test4</echo>
-</target>
-
-<target name="run-standalone-unittest"
- depends="build-standalone-unittest, clean-output"
- description="Runs standalone unit test">
- <property environment="env"/>
- <mkdir dir="${tests.output.dir}"/>
- <delete>
- <fileset dir="${tests.output.dir}" includes="*"/>
- </delete>
- <exec executable="${log4cxx-standalone-test.exe}" dir="${tests.resources.dir}"
- failonerror="true">
- <arg value="-v"/>
- <env key="TOTO" value="wonderful"/>
- <env key="key1" value="value1"/>
- <env key="key2" value="value2"/>
- <env key="DYLD_LIBRARY_PATH"
- value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.DYLD_LIBRARY_PATH}"/>
- <env key="LD_LIBRARY_PATH"
- value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.LD_LIBRARY_PATH}"/>
- <env key="Path"
- value="${log4cxx.lib.dir};${env.Path}"/>
- </exec>
- <available property="dom3-status" value="" file="src/test/resources/output/dom&#xB3;"/>
- <available property="dom4-status" value="" file="src/test/resources/output/dom&#x3195;"/>
- <property name="dom3-status" value="NOT"/>
- <property name="dom4-status" value="NOT"/>
- <echo>output/dom&#xB3; was ${dom3-status} created in DOMTestCase::test3</echo>
- <echo>output/dom&#x3195; was ${dom4-status} created in DOMTestCase::test4</echo>
-</target>
-
-<target name="run-socketserver" depends="build-unittest, clean-output"
- description="Runs SocketServer test">
- <property environment="env"/>
- <mkdir dir="${tests.output.dir}"/>
- <delete>
- <fileset dir="${tests.output.dir}" includes="*"/>
- </delete>
- <mkdir dir="target/test-classes"/>
- <javac srcdir="src/test/java"
- includes="org/apache/log4j/net/ShortSocketServer.java"
- destdir="target/test-classes"
- classpath="${log4j.jar}"/>
- <parallel>
- <java classname="org.apache.log4j.net.ShortSocketServer"
- fork="yes" dir="src/test/resources" classpath="target/test-classes:${log4j.jar}">
- <arg value="8"/>
- <arg value="input/socketServer"/>
- </java>
- <sequential>
- <sleep seconds="2"/>
- <exec executable="${testsuite.exe}" dir="${tests.resources.dir}"
- failonerror="true">
- <arg value="-v"/>
- <arg value="socketservertestcase"/>
- <env key="LD_LIBRARY_PATH"
- value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.LD_LIBRARY_PATH}"/>
- <env key="DYLD_LIBRARY_PATH"
- value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.DYLD_LIBRARY_PATH}"/>
- <env key="Path"
- value="${log4cxx.lib.dir};${env.Path}"/>
- </exec>
- </sequential>
- </parallel>
-
-</target>
-
-<target name="build-projects">
- <mkdir dir="${projects.dir}"/>
- <property name="project.type" value="msvc6"/>
- <antcall target="build-unittest">
- <param name="project.if" value="true"/>
- <param name="project.type" value="${project.type}"/>
- <param name="project.compiler" value="${project.compiler}"/>
- <param name="debug" value="${debug}"/>
- <param name="projectsOnly" value="true"/>
- <param name="os.family" value="${os.family}"/>
- <param name="find" value="${find}"/>
- </antcall>
- <antcall target="build-standalone-unittest">
- <param name="project.if" value="true"/>
- <param name="project.type" value="${project.type}"/>
- <param name="project.compiler" value="${project.compiler}"/>
- <param name="debug" value="${debug}"/>
- <param name="projectsOnly" value="true"/>
- <param name="os.family" value="${os.family}"/>
- <param name="find" value="${find}"/>
- </antcall>
- <antcall target="build-examples">
- <param name="project.if" value="true"/>
- <param name="project.type" value="${project.type}"/>
- <param name="project.compiler" value="${project.compiler}"/>
- <param name="debug" value="${debug}"/>
- <param name="projectsOnly" value="true"/>
- <param name="os.family" value="${os.family}"/>
- <param name="find" value="${find}"/>
- </antcall>
-</target>
-
-<target name="build-projects-vc6" depends="init"
- description="Builds project files for Microsoft Visual C++ 6">
- <antcall target="build-projects">
- <param name="project.type" value="msvc6"/>
- <param name="project.compiler" value="msvc"/>
- <param name="os.family" value="windows"/>
- <param name="debug" value="${debug}"/>
- <param name="find" value="${find}"/>
- </antcall>
-</target>
-
-<target name="build-projects-vc7" depends="init"
- description="Builds project files for Microsoft Visual Studio .NET">
- <antcall target="build-projects">
- <param name="project.type" value="msvc7"/>
- <param name="project.compiler" value="msvc"/>
- <param name="os.family" value="windows"/>
- <param name="debug" value="${debug}"/>
- <param name="find" value="${find}"/>
- </antcall>
-</target>
-
-<target name="build-projects-vc8" depends="init"
- description="Builds project files for Microsoft Visual C++ 2005">
- <antcall target="build-projects">
- <param name="project.type" value="msvc8"/>
- <param name="project.compiler" value="msvc"/>
- <param name="os.family" value="windows"/>
- <param name="debug" value="${debug}"/>
- <param name="find" value="${find}"/>
- </antcall>
-</target>
-
-
-<target name="build-projects-vc9" depends="init"
- description="Builds project files for Microsoft Visual C++ 2008">
- <antcall target="build-projects">
- <param name="project.type" value="msvc9"/>
- <param name="project.compiler" value="msvc"/>
- <param name="os.family" value="windows"/>
- <param name="debug" value="${debug}"/>
- <param name="find" value="${find}"/>
- </antcall>
-</target>
-
- <target name="build-projects-xcode" depends="init"
- description="Builds project files for Apple Xcode">
- <antcall target="build-projects">
- <param name="project.type" value="xcode"/>
- <param name="project.compiler" value="gcc"/>
- <param name="os.family" value="mac"/>
- <param name="debug" value="${debug}"/>
- <param name="find" value="${find}"/>
- </antcall>
-</target>
-
-
-<target name="test-compile" depends="build-unittest, build-examples"/>
-
-
-<target name="check" depends="run-unittest, build-examples"
- description="Runs all diagnostic tests">
- <antcall target="run-example">
- <param name="example.name" value="trivial"/>
- </antcall>
- <antcall target="run-example">
- <param name="example.name" value="stream"/>
- </antcall>
-</target>
-
-
-
-<target name="apidocs" depends="init" description="Build log4cxx manual">
- <copy file="src/site/doxy/Doxyfile.in" tofile="${target.dir}/Doxyfile"
- overwrite="true"/>
- <replace file="${target.dir}/Doxyfile">
- <replacefilter token="@VERSION@" value="${version}"/>
- <replacefilter token="@base_dir@" value="${base.dir}"/>
- <replacefilter token="@manual_dest@" value="${base.dir}/target/site/apidocs"/>
- </replace>
- <mkdir dir="target/site/apidocs"/>
- <exec executable="${doxygen.exe}" dir="${target.dir}"/>
-
- <!-- doxygen.css is GPL'd, looks better with it, but not intolerable without it -->
- <echo file="${target.dir}/site/apidocs/doxygen.css">
-/*
-&license;
-*/
-/* Minimal replacement for GPL'd doxygen.css */
-</echo>
- <echo file="${target.dir}/site/apidocs/tabs.css">
-/*
-&license;
-*/
-/* Minimal replacement for GPL'd tabs.css */
-DIV.tabs {
- display : none ;
-}
-</echo>
- <!-- fix for issue http://jira.codehaus.org/browse/MSKINS-2 -->
- <replace file="${target.dir}/site/css/maven-theme.css"
- token="font-size: normal;"
- value="font-size: medium;"/>
-
-</target>
-
-
-<target name="site" depends="apidocs">
- <!-- generate Visual Studio and XCode project files -->
- <antcall target="build-projects-vc6">
- <param name="find" value="false"/>
- </antcall>
- <antcall target="build-projects-xcode">
- </antcall>
-
- <replaceregexp flags="ig"
- match="ADD LINK32 .*/NOLOGO"
- replace="ADD LINK32 ADVAPI32.LIB WS2_32.LIB MSWSOCK.LIB SHELL32.LIB ODBC32.LIB /NOLOGO">
- <fileset dir="${target.dir}" includes="**/*.dsp"/>
- </replaceregexp>
- <replaceregexp flags="g"
- match=".\\apr.dsp"
- replace="..\\\\..\\\\apr\\\\apr.dsp">
- <fileset dir="${target.dir}" includes="**/*.dsw"/>
- </replaceregexp>
- <replaceregexp flags="g"
- match=".\\aprutil.dsp"
- replace="..\\\\..\\\\apr-util\\\\aprutil.dsp">
- <fileset dir="${target.dir}" includes="**/*.dsw"/>
- </replaceregexp>
- <replaceregexp flags="g"
- match=".\\xml.dsp"
- replace="..\\\\..\\\\apr-util\\\\xml\\\\expat\\\\lib\\\\xml.dsp">
- <fileset dir="${target.dir}" includes="**/*.dsw"/>
- </replaceregexp>
- <!-- drop library search path -->
- <replaceregexp flags="g"
- match="&lt;string&gt;[\./]*/usr/lib&lt;/string&gt;"
- replace="">
- <fileset dir="${target.dir}" includes="**/*.pbxproj"/>
- </replaceregexp>
- <replace dir="${target.dir}" includes="**/*.pbxproj"
- token="/usr/include/apr-1.0"
- value="/usr/include/apr-1"/>
- <replace dir="${target.dir}" includes="**/*.pbxproj"
- token="MacOSX10.4u.sdk"
- value="MacOSX10.5.sdk"/>
- <replace dir="${target.dir}/site" includes="**/*.html">
- <replacetoken>&lt;html</replacetoken>
- <replacevalue>&lt;!--
-&license;
---&gt;&lt;html</replacevalue>
- </replace>
- <replace dir="${target.dir}/site/css" includes="maven*.css">
- <replacetoken>body {</replacetoken>
- <replacevalue>/*
-&license;
-*/
-body {</replacevalue>
- </replace>
- <replace dir="${target.dir}/site/css" includes="print.css">
- <replacetoken>#banner</replacetoken>
- <replacevalue>/*
-&license;
-*/
-#banner</replacevalue>
- </replace>
-
-</target>
-
-<target name="gump" depends="check, header-check"/>
-
-<target name="fixcrlf" depends="init" description="repair end-of-line sequences">
- <fixcrlf srcDir="${base.dir}" tab="remove" tablength="3"
- eof="remove" fixlast="true" eol="unix" includes="*.xml **/*.cpp **/*.h" excludes="lib/**/*"/>
-</target>
-
- <target name="prepare-changes" description="Prepares changes.xml from a JIRA issues list">
- <xslt style="src/changes/changes.xslt"
- in="issues.xml"
- out="src/changes/changes.xml"/>
- </target>
-
- <target name="checkout-site" unless="svn-available">
- <exec executable="svn">
- <arg value="co"/>
- <arg value="${svnsite.url}"/>
- <arg value="target/site-deploy"/>
- </exec>
- </target>
-
- <target name="update-site" if="svn-available">
- <exec executable="svn" dir="target/site-deploy" failonerror="true">
- <arg value="update"/>
- </exec>
- </target>
-
- <target name="post-site" depends="checkout-site, update-site"/>
-
-
- <target name="mime=html">
- <exec executable="svn">
- <arg value="propset"/>
- <arg value="svn:mime-type"/>
- <arg value="text/html"/>
- <arg value="${src.html}"/>
- </exec>
- </target>
-
- <target name="mime=css">
- <exec executable="svn">
- <arg value="propset"/>
- <arg value="svn:mime-type"/>
- <arg value="text/css"/>
- <arg value="${src.css}"/>
- </exec>
- </target>
-
-
- <target name="site-deploy">
- <!-- Add any new files (and generate innocuous warnings for the existing content) -->
- <delete file="target/site-deploy/svn-commit.tmp~"/>
- <exec executable="bash" dir="target/site-deploy" failonerror="true">
- <arg line='-c "svn add --force *"'/>
- </exec>
- <taskdef name="foreach" classname="net.sf.antcontrib.logic.ForEach" />
- <foreach target="mime=html" param="src.html">
- <path>
- <fileset dir="target/site-deploy" includes="**/*.html"/>
- </path>
- </foreach>
- <foreach target="mime=css" param="src.css">
- <path>
- <fileset dir="target/site-deploy" includes="**/*.css"/>
- </path>
- </foreach>
- <!-- requires that SVN_EDITOR, VISUAL or EDITOR being set to edit commit description -->
- <exec executable="svn" dir="target/site-deploy" failonerror="true">
- <arg value="commit"/>
- </exec>
- </target>
-
- <target name="autogen" depends="init" if="is-unix">
- <exec executable="sh">
- <arg value="autogen.sh"/>
- </exec>
- </target>
-
-
+ &common;
+ &find-apr;
+ &find-apr-util;
+ &find-libesmtp;
+
+ <property name="base.dir"
+ location="."
+ />
+ <property name="src.dir"
+ location="${base.dir}/src/main/cpp"
+ />
+ <property name="resources.dir"
+ location="${base.dir}/src/main/resources"
+ />
+ <property name="include.dir"
+ location="${base.dir}/src/main/include"
+ />
+ <property name="target.dir"
+ location="${base.dir}/target"
+ />
+ <property name="lib.dir"
+ location="${target.dir}/lib"
+ />
+ <property name="examples.dir"
+ location="${base.dir}/src/examples/cpp"
+ />
+ <property name="tests.dir"
+ location="${base.dir}/src/test"
+ />
+ <property name="tests.cpp.dir"
+ location="${tests.dir}/cpp"
+ />
+ <property name="tests.resources.dir"
+ location="${tests.dir}/resources"
+ />
+ <property name="tests.output.dir"
+ location="${tests.resources.dir}/output"
+ />
+ <property name="m2_repo"
+ location="${user.home}/.m2/repository"
+ />
+ <property name="log4j.version"
+ value="1.2.14"
+ />
+ <available property="log4j.jar"
+ value="/usr/share/java/log4j-1.2.jar"
+ file="/usr/share/java/log4j-1.2.jar"
+ />
+ <property name="log4j.jar"
+ location="${m2_repo}/log4j/log4j/${log4j.version}/log4j-${log4j.version}.jar"
+ />
+ <property name="doxygen.exe"
+ value="doxygen"
+ />
+ <property name="lib.name"
+ value="log4cxx"
+ />
+ <property name="lib.prefix"
+ value=""
+ />
+ <property name="version"
+ value="0.10.0"
+ />
+ <property name="enable-char"
+ value="1"
+ />
+ <property name="enable-wchar_t"
+ value="1"
+ />
+ <property name="enable-unichar"
+ value="0"
+ />
+ <property name="enable-cfstring"
+ value="0"
+ />
+ <property name="with-charset"
+ value="auto"
+ />
+ <property name="with-SMTP"
+ value="no"
+ />
+ <property name="with-ODBC"
+ value="no"
+ />
+ <property name="svnsite.url"
+ value="https://svn.apache.org/repos/asf/logging/site/trunk/docs/log4cxx"
+ />
+
+ <target name="usage"
+ description="Describes usage of the build script">
+ <echo>
+ Ant build file for log4cxx
+
+ Common invocations:
+
+ > ant
+
+ will attempt to locate APR and APR-util in /usr, /usr/local/apr and ..
+
+ Builds and tests log4cxx.
+
+ > ant -Dwith-apr=APRPATH -Dwith-apr-util=APUPATH
+
+ Builds and tests log4cxx using APR and APR-Util at specified location
+
+ > ant -p
+
+ Displays available targets
+
+ > ant build-projects-vc6
+
+ Builds Microsoft Visual Studio 6 projects.
+ -vc7, -vc8, -vc9 and -xcode for Visual Studio .NET, 2005, 2008 and Apple Xcode 2 and later.
+ respectively.
+
+ Command line options:
+
+ -Ddebug=[true|false]
+ -Doptimize=[speed|size|none]
+ -Dversion=n.n.n
+ -Denable-shared=[yes|no] (default yes)
+ -Denable-static=[yes|no] (default yes)
+ -Denable-char=[0, 1] (expose char* API, default 1)
+ -Denable-wchar_t=[0, 1] (expose wchar_t* API, default 1)
+ -Denable-unichar=[0, 1] (expose UniChar API, default 0)
+ -Denable-cfstring[0, 1] (expose CFString API, default 0)
+ -Dwith-charset=[auto|utf-8|iso-8859-1|usascii|ebcdic] (default auto)
+ -Dwith-logchar=[utf-8|wchar_t|unichar] (default=utf-8 on Unix, wchar_t on Windows)
+ -Dwith-apr=APRPATH
+ -Dwith-apr-util=PATH
+ -Dwith-SMTP=[libesmtp, no] (default no)
+ -Dwith-ODBC=[unixODBC, iODBC, Microsoft, no] (default no)
+ </echo>
+ </target>
+
+ <target name="init"
+ depends="common-init">
+ <property name="log4cxx.lib.dir"
+ value="${executable.dir}"
+ />
+ <mkdir dir="${log4cxx.lib.dir}" />
+
+ <condition property="with-logchar" value="wchar_t">
+ <isset property="is-windows" />
+ </condition>
+ <property name="with-logchar"
+ value="utf-8"
+ />
+
+ <condition property="has-libesmtp" value="1">
+ <equals arg1="${with-SMTP}"
+ arg2="libesmtp"
+ />
+ </condition>
+
+ <condition property="odbc.lib" value="iodbc">
+ <equals arg1="${with-ODBC}"
+ arg2="iODBC"
+ />
+ </condition>
+
+ <condition property="odbc.lib" value="unixodbc">
+ <equals arg1="${with-ODBC}"
+ arg2="unixODBC"
+ />
+ </condition>
+
+ <condition property="odbc.lib" value="odbc32">
+ <equals arg1="${with-ODBC}"
+ arg2="Microsoft"
+ />
+ </condition>
+
+ <condition property="has-ODBC" value="1">
+ <isset property="odbc.lib" />
+ </condition>
+ <property name="has-ODBC"
+ value="0"
+ />
+
+ <condition property="force-ant" value="1">
+ <equals arg1="${find}"
+ arg2="false"
+ />
+ </condition>
+ <echo>force-ant: ${force-ant}</echo>
+ </target>
+
+ <target name="clean"
+ depends="init"
+ description="Removes built files">
+ <delete dir="${target.dir}" />
+ <delete>
+ <fileset dir="${include.dir}/log4cxx"
+ includes="**/log4cxx.h"
+ />
+ </delete>
+ </target>
+
+ <target name="unix-configure"
+ if="is-unix">
+ <copy tofile="${include.dir}/log4cxx/log4cxx.tmp"
+ file="${include.dir}/log4cxx/log4cxx.h.in"
+ overwrite="true"
+ />
+ <copy tofile="${include.dir}/log4cxx/private/log4cxx_private.tmp"
+ file="${include.dir}/log4cxx/private/log4cxx_private.h.in"
+ overwrite="true"
+ />
+ </target>
+
+ <target name="win-configure"
+ if="is-windows">
+ <copy tofile="${include.dir}/log4cxx/log4cxx.tmp"
+ file="${include.dir}/log4cxx/log4cxx.hw"
+ overwrite="true"
+ />
+ <copy tofile="${include.dir}/log4cxx/private/log4cxx_private.tmp"
+ file="${include.dir}/log4cxx/private/log4cxx_private.hw"
+ overwrite="true"
+ />
+ <property name="odbc.lib"
+ value="odbc32"
+ />
+ </target>
+
+ <target name="configure"
+ depends="init, unix-configure, win-configure">
+ <echo message="Configuring with-logchar=${with-logchar}" />
+ <echo message="Configuring with-charset=${with-charset}" />
+ <echo message="Configuring with-SMTP=${with-SMTP}" />
+ <echo message="Configuring with-ODBC=${with-ODBC}" />
+ <echo message="Configuring enable-char=${enable-char}" />
+ <echo message="Configuring enable-wchar_t=${enable-wchar_t}" />
+ <echo message="Configuring enable-unichar=${enable-unichar}" />
+ <echo message="Configuring enable-cfstring=${enable-cfstring}" />
+
+ <condition property="logchar_is_utf8" value="1">
+ <equals arg1="${with-logchar}"
+ arg2="utf-8"
+ />
+ </condition>
+ <property name="logchar_is_utf8"
+ value="0"
+ />
+
+ <condition property="logchar_is_unichar" value="1">
+ <equals arg1="${with-logchar}"
+ arg2="unichar"
+ />
+ </condition>
+ <property name="logchar_is_unichar"
+ value="0"
+ />
+
+ <condition property="logchar_is_wchar" value="1">
+ <equals arg1="${with-logchar}"
+ arg2="wchar_t"
+ />
+ </condition>
+ <property name="logchar_is_wchar"
+ value="0"
+ />
+
+ <replaceregexp file="${include.dir}/log4cxx/log4cxx.tmp"
+ match="@LOGCHAR_IS_UNICHAR@"
+ replace="${logchar_is_unichar}"
+ />
+
+ <replaceregexp file="${include.dir}/log4cxx/log4cxx.tmp"
+ match="@LOGCHAR_IS_UTF8@"
+ replace="${logchar_is_utf8}"
+ />
+
+ <replaceregexp file="${include.dir}/log4cxx/log4cxx.tmp"
+ match="@LOGCHAR_IS_WCHAR@"
+ replace="${logchar_is_wchar}"
+ />
+
+ <condition property="charset_is_utf8" value="1">
+ <equals arg1="${with-charset}"
+ arg2="utf-8"
+ />
+ </condition>
+ <property name="charset_is_utf8"
+ value="0"
+ />
+
+ <condition property="charset_is_iso-8859-1" value="1">
+ <equals arg1="${with-charset}"
+ arg2="iso-8859-1"
+ />
+ </condition>
+ <property name="charset_is_iso-8859-1"
+ value="0"
+ />
+
+ <condition property="charset_is_usascii" value="1">
+ <equals arg1="${with-charset}"
+ arg2="usascii"
+ />
+ </condition>
+ <property name="charset_is_usascii"
+ value="0"
+ />
+
+ <condition property="charset_is_ebcdic" value="1">
+ <equals arg1="${with-charset}"
+ arg2="ebcdic"
+ />
+ </condition>
+ <property name="charset_is_ebcdic"
+ value="0"
+ />
+
+ <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
+ match="@CHARSET_UTF8@"
+ replace="${charset_is_utf8}"
+ />
+
+ <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
+ match="@CHARSET_ISO88591@"
+ replace="${charset_is_iso-8859-1}"
+ />
+ <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
+ match="@CHARSET_USASCII@"
+ replace="${charset_is_usascii}"
+ />
+ <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
+ match="@CHARSET_EBCDIC@"
+ replace="${charset_is_ebcdic}"
+ />
+
+ <replaceregexp file="${include.dir}/log4cxx/log4cxx.tmp"
+ match="@CHAR_API@"
+ replace="${enable-char}"
+ />
+
+ <replaceregexp file="${include.dir}/log4cxx/log4cxx.tmp"
+ match="@WCHAR_T_API@"
+ replace="${enable-wchar_t}"
+ />
+
+ <replaceregexp file="${include.dir}/log4cxx/log4cxx.tmp"
+ match="@UNICHAR_API@"
+ replace="${enable-unichar}"
+ />
+
+ <replaceregexp file="${include.dir}/log4cxx/log4cxx.tmp"
+ match="@CFSTRING_API@"
+ replace="${enable-cfstring}"
+ />
+
+ <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
+ match="@HAS_SYSLOG@"
+ replace="1"
+ />
+ <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
+ match="@HAS_STD_LOCALE@"
+ replace="1"
+ />
+ <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
+ match="@HAS_MBSRTOWCS@"
+ replace="1"
+ />
+ <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
+ match="@HAS_WCSTOMBS@"
+ replace="1"
+ />
+ <condition property="has-fwide" value="0">
+ <isset property="is-cygwin" />
+ </condition>
+ <property name="has-fwide"
+ value="1"
+ />
+ <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
+ match="@HAS_FWIDE@"
+ replace="${has-fwide}"
+ />
+
+ <condition property="has-libesmtp-value" value="1">
+ <isset property="has-libesmtp" />
+ </condition>
+ <property name="has-libesmtp-value"
+ value="0"
+ />
+ <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
+ match="LOG4CXX_HAVE_LIBESMTP 0"
+ replace="LOG4CXX_HAVE_LIBESMTP ${has-libesmtp-value}"
+ />
+ <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
+ match="@HAS_LIBESMTP@"
+ replace="${has-libesmtp-value}"
+ />
+
+ <replaceregexp file="${include.dir}/log4cxx/private/log4cxx_private.tmp"
+ match="@HAS_ODBC@"
+ replace="${has-ODBC}"
+ />
+
+ <antcall target="copy-if-changed">
+ <param name="tofile"
+ value="${include.dir}/log4cxx/log4cxx.h"
+ />
+ <param name="file"
+ value="${include.dir}/log4cxx/log4cxx.tmp"
+ />
+ </antcall>
+ <delete file="${include.dir}/log4cxx/log4cxx.tmp" />
+ <antcall target="copy-if-changed">
+ <param name="tofile"
+ value="${include.dir}/log4cxx/private/log4cxx_private.h"
+ />
+ <param name="file"
+ value="${include.dir}/log4cxx/private/log4cxx_private.tmp"
+ />
+ </antcall>
+ <delete file="${include.dir}/log4cxx/private/log4cxx_private.tmp" />
+ </target>
+
+ <target name="build-apr"
+ depends="find-apr"
+ unless="apr.lib.file">
+ <fail unless="apr.src.dir">Could not locate apr library or source.</fail>
+
+ <property name="apr.lib.type"
+ value="static"
+ />
+ <property name="apr.lib.prefix"
+ value=""
+ />
+ <property name="apr.lib.suffix"
+ value=""
+ />
+ <property name="project.type"
+ value="msvc6"
+ />
+
+ <ant antfile="src/ant/apr-build.xml" target="build" inheritAll="false">
+ <property name="basedir"
+ value="${apr.src.dir}"
+ />
+ <property name="target.dir"
+ value="${target.dir}"
+ />
+ <property name="debug"
+ value="${debug}"
+ />
+ <property name="lib.prefix"
+ value="${apr.lib.prefix}"
+ />
+ <property name="lib.suffix"
+ value="${apr.lib.suffix}"
+ />
+ <property name="compiler"
+ value="${compiler}"
+ />
+ <property name="runtime"
+ value="${runtime}"
+ />
+ <property name="lib.type"
+ value="${apr.lib.type}"
+ />
+ <property name="project.type"
+ value="${project.type}"
+ />
+ <property name="projects.dir"
+ value="${projects.dir}"
+ />
+ <property name="project.if.value"
+ value="${project.if}"
+ />
+ <property name="use-pic"
+ value="${use-pic}"
+ />
+ <property name="os.family"
+ value="${os.family}"
+ />
+ </ant>
+
+ <condition property="apr.lib.dir"
+ value="${target.dir}/${debug.release}/shared">
+ <equals arg1="${apr.lib.type}"
+ arg2="shared"
+ />
+ </condition>
+
+ <property name="apr.lib.dir"
+ location="${target.dir}/${debug.release}/static"
+ />
+ <property name="apr.project.file"
+ location="${projects.dir}/apr"
+ />
+ </target>
+
+ <target name="build-apr-util"
+ depends="build-apr, find-apr-util"
+ unless="apr-util.lib.file">
+ <fail unless="apr-util.src.dir">Could not locate apr-util library or source.</fail>
+
+ <property name="apr-util.lib.type"
+ value="${apr.lib.type}"
+ />
+ <property name="apr-util.lib.prefix"
+ value=""
+ />
+ <property name="apr-util.lib.suffix"
+ value=""
+ />
+ <property name="project.type"
+ value="msvc6"
+ />
+ <!-- built this way, apr-util will include expat and doesn't need an external reference -->
+ <property name="apr-util-includes-dependencies"
+ value="1"
+ />
+
+ <ant antfile="src/ant/apr-util-build.xml"
+ target="build"
+ inheritAll="false">
+ <property name="target.dir"
+ value="${target.dir}"
+ />
+ <property name="basedir"
+ value="${apr-util.src.dir}"
+ />
+ <property name="debug"
+ value="${debug}"
+ />
+ <property name="lib.prefix"
+ value="${apr-util.lib.prefix}"
+ />
+ <property name="lib.suffix"
+ value="${apr-util.lib.suffix}"
+ />
+ <property name="compiler"
+ value="${compiler}"
+ />
+ <property name="runtime"
+ value="${runtime}"
+ />
+ <property name="apr.include.dir"
+ value="${apr.include.dir}"
+ />
+ <property name="apr.lib.dir"
+ value="${apr.lib.dir}"
+ />
+ <property name="apr.lib.type"
+ value="${apr.lib.type}"
+ />
+ <property name="lib.type"
+ value="${apr-util.lib.type}"
+ />
+ <property name="project.type"
+ value="${project.type}"
+ />
+ <property name="projects.dir"
+ value="${projects.dir}"
+ />
+ <property name="project.if.value"
+ value="${project.if}"
+ />
+ <property name="use-pic"
+ value="${use-pic}"
+ />
+ <property name="os.family"
+ value="${os.family}"
+ />
+ </ant>
+
+ <condition property="apr-util.lib.dir"
+ value="${target.dir}/${debug.release}/shared">
+ <equals arg1="${apr-util.lib.type}"
+ arg2="shared"
+ />
+ </condition>
+ <property name="apr-util.lib.dir"
+ location="${target.dir}/${debug.release}/static"
+ />
+ <property name="apr-util.project.file"
+ location="${projects.dir}/apr-util"
+ />
+ </target>
+
+ <target name="build-libesmtp"
+ depends="find-esmtp"
+ if="has-libesmtp"
+ unless="esmtp.lib.file">
+ <fail unless="esmtp.src.dir">Could not locate libesmtp library or source.</fail>
+
+ <property name="esmtp.lib.type"
+ value="static"
+ />
+ <property name="esmtp.lib.prefix"
+ value=""
+ />
+ <property name="esmtp.lib.suffix"
+ value=""
+ />
+ <property name="project.type"
+ value="msvc6"
+ />
+ <condition property="esmtp.compiler"
+ value="gcc">
+ <equals arg1="${compiler}"
+ arg2="g++"
+ />
+ </condition>
+ <property name="esmtp.compiler"
+ value="${compiler}"
+ />
+
+ <ant antfile="src/ant/esmtp-build.xml"
+ target="build"
+ inheritAll="false">
+ <property name="target.dir"
+ value="${target.dir}"
+ />
+ <property name="basedir"
+ value="${esmtp.src.dir}"
+ />
+ <property name="debug"
+ value="${debug}"
+ />
+ <property name="lib.prefix"
+ value="${esmtp.lib.prefix}"
+ />
+ <property name="lib.suffix"
+ value="${esmtp.lib.suffix}"
+ />
+ <property name="compiler"
+ value="${esmtp.compiler}"
+ />
+ <property name="runtime"
+ value="${runtime}"
+ />
+ <property name="lib.type"
+ value="${esmtp.lib.type}"
+ />
+ <property name="project.type"
+ value="${project.type}"
+ />
+ <property name="projects.dir"
+ value="${projects.dir}"
+ />
+ <property name="project.if.value"
+ value="${project.if}"
+ />
+ <property name="use-pic"
+ value="${use-pic}"
+ />
+ <property name="os.family"
+ value="${os.family}"
+ />
+ </ant>
+
+ <condition property="esmtp.lib.dir"
+ value="${target.dir}/${debug.release}/shared">
+ <equals arg1="${esmtp.lib.type}"
+ arg2="shared"
+ />
+ </condition>
+ <property name="esmtp.lib.dir"
+ location="${target.dir}/${debug.release}/static"
+ />
+ <property name="esmtp.project.file"
+ location="${projects.dir}/libesmtp"
+ />
+ </target>
+
+ <target name="make-header-check">
+ <echo file="${header}.cpp"
+ append="false">
+ #include "${header}"
+ #include "${header}"
+ </echo>
+ </target>
+
+ <target name="header-check"
+ depends="build-apr-util, configure"
+ description="Checks headers against Effective C++ guidelines">
+ <fail unless="is-gcc">Requires GCC compiler</fail>
+
+ <taskdef resource="net/sf/antcontrib/antcontrib.properties" />
+ <delete dir="${target.dir}/header-check" />
+ <mkdir dir="${target.dir}/header-check" />
+ <copy todir="${target.dir}/header-check"
+ overwrite="true">
+ <fileset dir="${include.dir}"
+ includes="**/*.h">
+ <!-- obsolete header with #error directive to eliminate its use -->
+ <exclude name="**/tchar.h" />
+ <!-- excluded due to conflict between log4cxx/rfa.h and log4cxx/rolling/rfa.h -->
+ <exclude name="log4cxx/rollingfileappender.h" />
+ </fileset>
+ </copy>
+ <foreach target="make-header-check"
+ param="header">
+ <path>
+ <fileset dir="${target.dir}/header-check"
+ includes="**/*.h"
+ />
+ </path>
+ </foreach>
+ <property name="project.type"
+ value="msvc6"
+ />
+ <cc objdir="${target.dir}/header-check"
+ name="gcc"
+ exceptions="true"
+ subsystem="gui"
+ optimize="none"
+ multithreaded="true"
+ relentless="true"
+ debug="${debug}"
+ projectsOnly="${projectsOnly}">
+
+ <compilerarg value="-Weffc++"
+ />
+ <compilerarg value="-Wall"
+ />
+ <compilerarg value="${pic-option}"
+ if="pic-option"
+ />
+ <fileset dir="${target.dir}/header-check"
+ includes="**/*.cpp"
+ excludes="log4cxx/private/*.cpp **/aprinitializer.h.cpp"
+ />
+ <includepath path="${include.dir}" />
+ <project outfile="${projects.dir}/header-check"
+ type="${project.type}"
+ if="project.if"
+ />
+ </cc>
+ </target>
+
+ <target name="build-lib"
+ depends="build-apr-util, build-libesmtp, configure"
+ description="Build log4cxx library">
+ <mkdir dir="${log4cxx.lib.dir}/log4cxx_obj" />
+
+ <condition property="apr-static"
+ value="1">
+ <equals arg1="${apr.lib.type}"
+ arg2="static"
+ />
+ </condition>
+
+ <condition property="apr-util-static"
+ value="1">
+ <equals arg1="${apr-util.lib.type}"
+ arg2="static"
+ />
+ </condition>
+
+ <condition property="apr-libs-match"
+ value="1">
+ <equals arg1="${apr.lib.type}"
+ arg2="${apr-util.lib.type}"
+ />
+ </condition>
+
+ <fail unless="apr-libs-match">
+ apr is ${apr.lib.type} and apr-util is ${apr-util.lib.type}, must be same type.
+ </fail>
+ <property name="lib.name"
+ value="log4cxx"
+ />
+ <property name="lib.prefix"
+ value=""
+ />
+ <property name="lib.suffix"
+ value=""
+ />
+
+ <condition property="apr-util.dependencies"
+ value="expat iconv">
+ <equals arg1="${apr-util.lib.type}"
+ arg2="static"
+ />
+ </condition>
+
+ <property name="project.compiler"
+ value="${compiler}"
+ />
+ <property name="project.type"
+ value="msvc6"
+ />
+
+ <condition property="resource.compiler"
+ value="windres">
+ <isset property="is-gcc" />
+ </condition>
+ <condition property="resource.compiler"
+ value="brc">
+ <isset property="is-bcc" />
+ </condition>
+ <property name="resource.compiler"
+ value="msrc"
+ />
+
+ <cc name="${project.compiler}"
+ exceptions="true"
+ outfile="${log4cxx.lib.dir}/${lib.prefix}${lib.name}${lib.suffix}"
+ outputfileproperty="log4cxx.lib.file"
+ subsystem="console"
+ multithreaded="true"
+ runtime="${runtime}"
+ outtype="${lib.type}"
+ objdir="${log4cxx.lib.dir}/log4cxx_obj"
+ debug="${debug}"
+ projectsOnly="${projectsOnly}">
+
+ <compiler name="${resource.compiler}"
+ if="is-windows">
+ <includepath path="${resources.dir}" />
+ <fileset dir="${resources.dir}"
+ includes="*.rc"
+ />
+ </compiler>
+
+ <fileset dir="${src.dir}"
+ includes="*.cpp"
+ />
+ <fileset dir="${include.dir}"
+ includes="**/*.h"
+ />
+
+ <includepath path="${include.dir}"
+ />
+ <includepath path="${apr.include.dir}"
+ if="apr.include.dir"
+ />
+ <includepath path="${apr-util.include.dir}"
+ if="apr-util.include.dir"
+ />
+ <includepath path="${esmtp.include.dir}"
+ if="esmtp.include.dir"
+ />
+
+ <defineset define="_USRDLL DLL_EXPORTS"
+ if="is-windows"
+ />
+ <defineset define="LOG4CXX"
+ />
+ <defineset define="LOG4CXX_STATIC"
+ if="is-static"
+ />
+ <defineset define="APR_DECLARE_STATIC"
+ if="apr-static"
+ />
+ <defineset define="APU_DECLARE_STATIC"
+ if="apr-util-static"
+ />
+ <defineset define="WIN32"
+ if="is-windows"
+ />
+
+ <compilerarg value="${pic-option}"
+ if="pic-option"
+ />
+ &libsets;
+ <project type="${project.type}"
+ outfile="${projects.dir}/${lib.name}"
+ if="project.if">
+ <comment>&license;</comment>
+ <dependency file="${projects.dir}/apr" />
+ <dependency file="${projects.dir}/xml" />
+ <dependency file="${projects.dir}/aprutil" depends="apr,xml" />
+ <dependency name="${projects.dir}/libesmtp" />
+ </project>
+ </cc>
+
+ <!-- copy liblog4cxx.so to log4cxx.dll for MinGW and Cygwin -->
+ <condition property="copy.log4cxx"
+ value="${log4cxx.lib.dir}/${lib.prefix}${lib.name}${lib.suffix}.dll">
+ <and>
+ <os family="windows" />
+ <isset property="is-gcc" />
+ <equals arg1="${lib.type}" arg2="shared" />
+ <isset property="log4cxx.lib.file" />
+ </and>
+ </condition>
+ </target>
+
+ <target name="build"
+ depends="build-lib"
+ if="copy.log4cxx">
+ <copy file="${log4cxx.lib.file}"
+ tofile="${copy.log4cxx}"
+ overwrite="true"
+ preservelastmodified="true"
+ />
+ </target>
+
+ <target name="build-example">
+ <mkdir dir="${log4cxx.lib.dir}/${example.name}_obj" />
+
+ <property name="project.compiler"
+ value="${compiler}"
+ />
+ <property name="project.type"
+ value="msvc6"
+ />
+ <property name="example.include.dir"
+ value="${example.src.dir}"
+ />
+
+ <cc name="${project.compiler}"
+ exceptions="true"
+ outfile="${log4cxx.lib.dir}/${example.name}"
+ subsystem="console"
+ multithreaded="true"
+ runtime="${runtime}"
+ outtype="executable"
+ objdir="${log4cxx.lib.dir}/${example.name}_obj"
+ debug="${debug}"
+ projectsOnly="${projectsOnly}">
+
+ <fileset dir="${example.src.dir}"
+ includes="${example.includes}"
+ />
+
+ <includepath path="${include.dir}" />
+ <includepath path="${example.include.dir}" />
+ <includepath path="${apr.include.dir}" if="apr.include.dir" />
+
+ <defineset define="WIN32"
+ if="is-windows"
+ />
+ <defineset define="LOG4CXX_STATIC"
+ if="is-static"
+ />
+ <defineset define="APR_DECLARE_STATIC"
+ if="apr-static"
+ />
+
+ <compilerarg value="${pic-option}" if="pic-option" />
+
+ <libset libs="${lib.prefix}${lib.name}${lib.suffix}" dir="${log4cxx.lib.dir}" />
+ &libsets;
+
+ <project outfile="${projects.dir}/${example.name}" type="${project.type}" if="project.if">
+ <comment>&license;</comment>
+ <dependency file="${projects.dir}/apr" />
+ <dependency file="${projects.dir}/xml" />
+ <dependency name="${projects.dir}/aprutil" depends="apr,xml" />
+ <dependency name="${projects.dir}/libesmtp" />
+ <dependency file="${projects.dir}/log4cxx" depends="apr,aprutil,xml" />
+ </project>
+ </cc>
+ </target>
+
+ <target name="run-example">
+ <!-- remove any stray configuration files -->
+ <delete>
+ <fileset dir="${log4cxx.lib.dir}"
+ includes="log4*.properties log4*.xml"
+ />
+ </delete>
+ <exec executable="${log4cxx.lib.dir}/${example.name}"
+ dir="${log4cxx.lib.dir}"
+ failonerror="true">
+ <env key="DYLD_LIBRARY_PATH"
+ value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.DYLD_LIBRARY_PATH}"
+ />
+ <env key="LD_LIBRARY_PATH"
+ value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.LD_LIBRARY_PATH}"
+ />
+ <env key="Path"
+ value="${env.Path}"
+ />
+ </exec>
+ </target>
+
+ <target name="build-delayedloop"
+ depends="build">
+ <antcall target="build-example">
+ <param name="example.src.dir"
+ value="${examples.dir}"
+ />
+ <param name="example.name"
+ value="delayedloop"
+ />
+ <param name="example.includes"
+ value="delayedloop.cpp"
+ />
+ </antcall>
+ </target>
+
+ <target name="build-trivial"
+ depends="build">
+ <antcall target="build-example">
+ <param name="example.src.dir"
+ value="${examples.dir}"
+ />
+ <param name="example.name"
+ value="trivial"
+ />
+ <param name="example.includes"
+ value="trivial.cpp"
+ />
+ </antcall>
+ </target>
+
+ <target name="build-console"
+ depends="build">
+ <antcall target="build-example">
+ <param name="example.src.dir"
+ value="${examples.dir}"
+ />
+ <param name="example.name"
+ value="console"
+ />
+ <param name="example.includes"
+ value="console.cpp"
+ />
+ </antcall>
+ </target>
+
+ <target name="build-stream"
+ depends="build">
+ <antcall target="build-example">
+ <param name="example.src.dir"
+ value="${examples.dir}"
+ />
+ <param name="example.name"
+ value="stream"
+ />
+ <param name="example.includes"
+ value="stream.cpp"
+ />
+ </antcall>
+ </target>
+
+ <target name="build-examples"
+ depends="build-delayedloop, build-trivial, build-stream, build-console"
+ description="Builds example programs"
+ />
+
+ <target name="build-unittest"
+ depends="build"
+ description="Builds unit test app">
+ <mkdir dir="${log4cxx.lib.dir}/testsuite_obj" />
+
+ <property name="project.compiler"
+ value="${compiler}"
+ />
+ <property name="project.type"
+ value="msvc6"
+ />
+
+ <cc name="${project.compiler}"
+ exceptions="true"
+ outfile="${log4cxx.lib.dir}/testsuite"
+ subsystem="console"
+ multithreaded="true"
+ runtime="${runtime}"
+ outputfileproperty="testsuite.exe"
+ outtype="executable"
+ objdir="${log4cxx.lib.dir}/testsuite_obj"
+ debug="${debug}"
+ projectsOnly="${projectsOnly}">
+
+ <fileset dir="${tests.cpp.dir}"
+ includes="**/*.cpp **/*.c **/*.h"
+ />
+
+ <includepath path="${include.dir}"
+ />
+ <includepath path="${apr.include.dir}"
+ if="apr.include.dir"
+ />
+ <includepath path="${apr-util.include.dir}"
+ if="apr-util.include.dir"
+ />
+
+ <defineset define="LOG4CXX_STATIC"
+ if="is-static"
+ />
+ <defineset define="APR_DECLARE_STATIC"
+ if="apr-static"
+ />
+ <defineset define="APU_DECLARE_STATIC"
+ if="apr-util-static"
+ />
+ <defineset define="WIN32"
+ if="is-windows"
+ />
+
+ <compilerarg value="${pic-option}"
+ if="pic-option"
+ />
+
+ <libset libs="${lib.prefix}${lib.name}${lib.suffix}"
+ dir="${log4cxx.lib.dir}"
+ />
+ &libsets;
+
+ <project outfile="${projects.dir}/testsuite"
+ type="${project.type}"
+ if="project.if">
+ <comment>&license;</comment>
+
+ <dependency file="${projects.dir}/apr" />
+ <dependency file="${projects.dir}/xml" />
+ <dependency file="${projects.dir}/aprutil" depends="apr,xml" />
+ <dependency name="${projects.dir}/libesmtp" />
+ <dependency file="${projects.dir}/log4cxx" depends="apr,aprutil,libesmtp" />
+ </project>
+ </cc>
+ </target>
+
+ <target name="build-standalone-unittest"
+ description="Builds a unit tests + log4cxx executable"
+ depends="build-apr-util, build-libesmtp, configure">
+ <mkdir dir="${executable.dir}/static/testsuite-standalone_obj" />
+
+ <property name="project.compiler"
+ value="${compiler}"
+ />
+ <property name="project.type"
+ value="msvc6"
+ />
+ <condition property="resource.compiler"
+ value="windres">
+ <isset property="is-gcc" />
+ </condition>
+ <property name="resource.compiler"
+ value="msrc"
+ />
+
+ <cc name="${project.compiler}"
+ exceptions="true"
+ outfile="${executable.dir}/static/testsuite-standalone"
+ subsystem="console"
+ multithreaded="true"
+ runtime="${runtime}"
+ outputfileproperty="testsuite-standalone.exe"
+ outtype="executable"
+ objdir="${executable.dir}/static/testsuite-standalone_obj"
+ debug="${debug}"
+ projectsOnly="${projectsOnly}">
+
+ <compiler name="${resource.compiler}"
+ if="is-windows">
+ <includepath path="${resources.dir}" />
+ <fileset dir="${resources.dir}"
+ includes="*.rc"
+ />
+ </compiler>
+
+ <fileset dir="${src.dir}"
+ includes="*.cpp"
+ excludes="**/iconv_module.cpp"
+ />
+ <fileset dir="${include.dir}"
+ includes="**/*.h"
+ />
+ <fileset dir="${tests.cpp.dir}"
+ includes="**/*.cpp **/*.c **/*.h"
+ />
+
+ <includepath path="${include.dir}" />
+ <includepath path="${apr.include.dir}"
+ if="apr.include.dir"
+ />
+ <includepath path="${apr-util.include.dir}"
+ if="apr-util.include.dir"
+ />
+ <includepath path="${esmtp.include.dir}"
+ if="esmtp.include.dir"
+ />
+
+ <defineset define="LOG4CXX"
+ />
+ <defineset define="APR_DECLARE_STATIC"
+ if="apr-static"
+ />
+ <defineset define="APU_DECLARE_STATIC"
+ if="apr-util-static"
+ />
+ <defineset define="WIN32"
+ if="is-windows"
+ />
+
+ <compilerarg value="${pic-option}"
+ if="pic-option"
+ />
+ &libsets;
+
+ <includepath path="${include.dir}" />
+ <includepath path="${apr.include.dir}" />
+
+ <defineset define="LOG4CXX" />
+
+ <libset libs="cw32mt" if="is-bcc" />
+
+ <project outfile="${projects.dir}/testsuite-standalone"
+ type="${project.type}"
+ if="project.if">
+ <comment>&license;</comment>
+
+ <dependency file="${projects.dir}/apr" />
+ <dependency file="${projects.dir}/xml" />
+ <dependency file="${projects.dir}/aprutil" depends="apr,xml" />
+ <dependency name="${projects.dir}/libesmtp" />
+ </project>
+ </cc>
+ </target>
+
+ <target name="build-all"
+ depends="build-examples, build-unittest"
+ description="Builds all artifacts"
+ />
+
+ <target name="clean-output"
+ depends="init">
+ <delete>
+ <fileset dir="${tests.dir}"
+ includes="output/*"
+ />
+ </delete>
+ </target>
+
+ <target name="run-defaultinit-unittest"
+ depends="build-unittest">
+ <antcall target="run-defaultinit-log4X">
+ <param name="config"
+ value="log4j"
+ />
+ </antcall>
+ <antcall target="run-defaultinit-log4X">
+ <param name="config"
+ value="log4cxx"
+ />
+ </antcall>
+ </target>
+
+ <target name="run-defaultinit-log4X">
+ <mkdir dir="${tests.output.dir}" />
+
+ <!-- test of log4j.properties -->
+ <delete>
+ <fileset dir="${log4cxx.lib.dir}"
+ includes="*.properties *.xml"
+ />
+ </delete>
+ <exec executable="${testsuite.exe}"
+ dir="${log4cxx.lib.dir}"
+ failonerror="true">
+ <arg value="-v" />
+ <arg value="testcase1" />
+
+ <env key="DYLD_LIBRARY_PATH"
+ value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.DYLD_LIBRARY_PATH}"
+ />
+ <env key="LD_LIBRARY_PATH"
+ value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.LD_LIBRARY_PATH}"
+ />
+ </exec>
+
+ <copy tofile="${log4cxx.lib.dir}/${config}.xml"
+ file="${tests.resources.dir}/input/xml/defaultInit.xml"
+ overwrite="true"
+ />
+ <exec executable="${testsuite.exe}"
+ dir="${log4cxx.lib.dir}"
+ failonerror="true">
+ <arg value="-v" />
+ <arg value="testcase2" />
+
+ <env key="DYLD_LIBRARY_PATH"
+ value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.DYLD_LIBRARY_PATH}"
+ />
+ <env key="LD_LIBRARY_PATH"
+ value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.LD_LIBRARY_PATH}"
+ />
+ </exec>
+ <delete>
+ <fileset dir="${log4cxx.lib.dir}"
+ includes="*.properties *.xml"
+ />
+ </delete>
+
+ <copy tofile="${log4cxx.lib.dir}/${config}.properties"
+ file="${tests.resources.dir}/input/defaultInit3.properties"
+ overwrite="true"
+ />
+ <exec executable="${testsuite.exe}"
+ dir="${log4cxx.lib.dir}"
+ failonerror="true">
+ <arg value="-v" />
+ <arg value="testcase3" />
+
+ <env key="DYLD_LIBRARY_PATH"
+ value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.DYLD_LIBRARY_PATH}"
+ />
+ <env key="LD_LIBRARY_PATH"
+ value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.LD_LIBRARY_PATH}"
+ />
+ </exec>
+ <delete>
+ <fileset dir="${log4cxx.lib.dir}"
+ includes="*.properties *.xml"
+ />
+ </delete>
+
+ <copy file="${tests.resources.dir}/input/xml/defaultInit.xml"
+ tofile="${log4cxx.lib.dir}/${config}.xml"
+ />
+ <copy file="${tests.resources.dir}/input/defaultInit3.properties"
+ tofile="${log4cxx.lib.dir}/${config}.properties"
+ />
+ <exec executable="${testsuite.exe}"
+ dir="${log4cxx.lib.dir}"
+ failonerror="true">
+ <arg value="-v" />
+ <arg value="testcase4" />
+
+ <env key="LD_LIBRARY_PATH"
+ value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.LD_LIBRARY_PATH}"
+ />
+ <env key="DYLD_LIBRARY_PATH"
+ value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.DYLD_LIBRARY_PATH}"
+ />
+ </exec>
+ <delete>
+ <fileset dir="${log4cxx.lib.dir}"
+ includes="*.properties *.xml"
+ />
+ </delete>
+ </target>
+
+ <target name="run-unittest"
+ depends="build-unittest, run-defaultinit-unittest, clean-output"
+ description="Runs unit test">
+ <property environment="env" />
+ <mkdir dir="${tests.output.dir}" />
+ <delete>
+ <fileset dir="${tests.output.dir}"
+ includes="*"
+ />
+ </delete>
+
+ <exec executable="${testsuite.exe}"
+ dir="${tests.resources.dir}"
+ failonerror="true">
+ <arg value="-v" />
+
+ <env key="TOTO"
+ value="wonderful"
+ />
+ <env key="key1"
+ value="value1"
+ />
+ <env key="key2"
+ value="value2"
+ />
+ <env key="LD_LIBRARY_PATH"
+ value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.LD_LIBRARY_PATH}"
+ />
+ <env key="DYLD_LIBRARY_PATH"
+ value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.DYLD_LIBRARY_PATH}"
+ />
+ <env key="Path"
+ value="${log4cxx.lib.dir};${env.Path}"
+ />
+ </exec>
+
+ <available property="dom3-status"
+ value=""
+ file="src/test/resources/output/dom&#xB3;"
+ />
+ <available property="dom4-status"
+ value=""
+ file="src/test/resources/output/dom&#x3195;"
+ />
+
+ <property name="dom3-status"
+ value="NOT"
+ />
+ <property name="dom4-status"
+ value="NOT"
+ />
+
+ <echo>output/dom&#xB3; was ${dom3-status} created in DOMTestCase::test3</echo>
+ <echo>output/dom&#x3195; was ${dom4-status} created in DOMTestCase::test4</echo>
+ </target>
+
+ <target name="run-standalone-unittest"
+ depends="build-standalone-unittest, clean-output"
+ description="Runs standalone unit test">
+ <property environment="env" />
+ <mkdir dir="${tests.output.dir}" />
+ <delete>
+ <fileset dir="${tests.output.dir}"
+ includes="*"
+ />
+ </delete>
+
+ <exec executable="${log4cxx-standalone-test.exe}"
+ dir="${tests.resources.dir}"
+ failonerror="true">
+ <arg value="-v" />
+
+ <env key="TOTO"
+ value="wonderful"
+ />
+ <env key="key1"
+ value="value1"
+ />
+ <env key="key2"
+ value="value2"
+ />
+ <env key="DYLD_LIBRARY_PATH"
+ value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.DYLD_LIBRARY_PATH}"
+ />
+ <env key="LD_LIBRARY_PATH"
+ value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.LD_LIBRARY_PATH}"
+ />
+ <env key="Path"
+ value="${log4cxx.lib.dir};${env.Path}"
+ />
+ </exec>
+
+ <available property="dom3-status"
+ value=""
+ file="src/test/resources/output/dom&#xB3;"
+ />
+ <available property="dom4-status"
+ value=""
+ file="src/test/resources/output/dom&#x3195;"
+ />
+
+ <property name="dom3-status"
+ value="NOT"
+ />
+ <property name="dom4-status"
+ value="NOT"
+ />
+
+ <echo>output/dom&#xB3; was ${dom3-status} created in DOMTestCase::test3</echo>
+ <echo>output/dom&#x3195; was ${dom4-status} created in DOMTestCase::test4</echo>
+ </target>
+
+ <target name="run-socketserver"
+ depends="build-unittest, clean-output"
+ description="Runs SocketServer test">
+ <property environment="env" />
+ <mkdir dir="${tests.output.dir}" />
+ <delete>
+ <fileset dir="${tests.output.dir}"
+ includes="*"
+ />
+ </delete>
+ <mkdir dir="target/test-classes" />
+ <javac srcdir="src/test/java"
+ includes="org/apache/log4j/net/ShortSocketServer.java"
+ destdir="target/test-classes"
+ classpath="${log4j.jar}"
+ />
+ <parallel>
+ <java classname="org.apache.log4j.net.ShortSocketServer"
+ fork="yes" dir="src/test/resources"
+ classpath="target/test-classes:${log4j.jar}">
+ <arg value="8" />
+ <arg value="input/socketServer" />
+ </java>
+ <sequential>
+ <sleep seconds="2" />
+ <exec executable="${testsuite.exe}"
+ dir="${tests.resources.dir}"
+ failonerror="true">
+ <arg value="-v" />
+ <arg value="socketservertestcase" />
+
+ <env key="LD_LIBRARY_PATH"
+ value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.LD_LIBRARY_PATH}"
+ />
+ <env key="DYLD_LIBRARY_PATH"
+ value="${log4cxx.lib.dir}:${apr.lib.dir}:${apr-util.lib.dir}:${env.DYLD_LIBRARY_PATH}"
+ />
+ <env key="Path"
+ value="${log4cxx.lib.dir};${env.Path}"
+ />
+ </exec>
+ </sequential>
+ </parallel>
+ </target>
+
+ <target name="build-projects">
+ <mkdir dir="${projects.dir}" />
+ <property name="project.type"
+ value="msvc6"
+ />
+
+ <antcall target="build-unittest">
+ <param name="project.if"
+ value="true"
+ />
+ <param name="project.type"
+ value="${project.type}"
+ />
+ <param name="project.compiler"
+ value="${project.compiler}"
+ />
+ <param name="debug"
+ value="${debug}"
+ />
+ <param name="projectsOnly"
+ value="true"
+ />
+ <param name="os.family"
+ value="${os.family}"
+ />
+ <param name="find"
+ value="${find}"
+ />
+ </antcall>
+
+ <antcall target="build-standalone-unittest">
+ <param name="project.if"
+ value="true"
+ />
+ <param name="project.type"
+ value="${project.type}"
+ />
+ <param name="project.compiler"
+ value="${project.compiler}"
+ />
+ <param name="debug"
+ value="${debug}"
+ />
+ <param name="projectsOnly"
+ value="true"
+ />
+ <param name="os.family"
+ value="${os.family}"
+ />
+ <param name="find"
+ value="${find}"
+ />
+ </antcall>
+
+ <antcall target="build-examples">
+ <param name="project.if"
+ value="true"
+ />
+ <param name="project.type"
+ value="${project.type}"
+ />
+ <param name="project.compiler"
+ value="${project.compiler}"
+ />
+ <param name="debug"
+ value="${debug}"
+ />
+ <param name="projectsOnly"
+ value="true"
+ />
+ <param name="os.family"
+ value="${os.family}"
+ />
+ <param name="find"
+ value="${find}"
+ />
+ </antcall>
+ </target>
+
+ <target name="build-projects-vc6"
+ depends="init"
+ description="Builds project files for Microsoft Visual C++ 6">
+ <antcall target="build-projects">
+ <param name="project.type"
+ value="msvc6"
+ />
+ <param name="project.compiler"
+ value="msvc"
+ />
+ <param name="os.family"
+ value="windows"
+ />
+ <param name="debug"
+ value="${debug}"
+ />
+ <param name="find"
+ value="${find}"
+ />
+ </antcall>
+ </target>
+
+ <target name="build-projects-vc7"
+ depends="init"
+ description="Builds project files for Microsoft Visual Studio .NET">
+ <antcall target="build-projects">
+ <param name="project.type"
+ value="msvc7"
+ />
+ <param name="project.compiler"
+ value="msvc"
+ />
+ <param name="os.family"
+ value="windows"
+ />
+ <param name="debug"
+ value="${debug}"
+ />
+ <param name="find"
+ value="${find}"
+ />
+ </antcall>
+ </target>
+
+ <target name="build-projects-vc8"
+ depends="init"
+ description="Builds project files for Microsoft Visual C++ 2005">
+ <antcall target="build-projects">
+ <param name="project.type"
+ value="msvc8"
+ />
+ <param name="project.compiler"
+ value="msvc"
+ />
+ <param name="os.family"
+ value="windows"
+ />
+ <param name="debug"
+ value="${debug}"
+ />
+ <param name="find"
+ value="${find}"
+ />
+ </antcall>
+ </target>
+
+
+ <target name="build-projects-vc9"
+ depends="init"
+ description="Builds project files for Microsoft Visual C++ 2008">
+ <antcall target="build-projects">
+ <param name="project.type"
+ value="msvc9"
+ />
+ <param name="project.compiler"
+ value="msvc"
+ />
+ <param name="os.family"
+ value="windows"
+ />
+ <param name="debug"
+ value="${debug}"
+ />
+ <param name="find"
+ value="${find}"
+ />
+ </antcall>
+ </target>
+
+ <target name="build-projects-xcode"
+ depends="init"
+ description="Builds project files for Apple Xcode">
+ <antcall target="build-projects">
+ <param name="project.type"
+ value="xcode"
+ />
+ <param name="project.compiler"
+ value="gcc"
+ />
+ <param name="os.family"
+ value="mac"
+ />
+ <param name="debug"
+ value="${debug}"
+ />
+ <param name="find"
+ value="${find}"
+ />
+ </antcall>
+ </target>
+
+ <target name="test-compile"
+ depends="build-unittest, build-examples"
+ />
+
+ <target name="check"
+ depends="run-unittest, build-examples"
+ description="Runs all diagnostic tests">
+ <antcall target="run-example">
+ <param name="example.name"
+ value="trivial"
+ />
+ </antcall>
+
+ <antcall target="run-example">
+ <param name="example.name"
+ value="stream"
+ />
+ </antcall>
+ </target>
+
+ <target name="apidocs"
+ description="Build log4cxx manual">
+ <copy file="${base.dir}/src/site/doxy/Doxyfile.in"
+ tofile="${target.dir}/Doxyfile"
+ overwrite="true"
+ />
+ <replace file="${target.dir}/Doxyfile">
+ <replacefilter token="@version@"
+ value="${version}"
+ />
+ <replacefilter token="@base_dir@"
+ value="${base.dir}"
+ />
+ <replacefilter token="@manual_dest@"
+ value="${target.dir}/site/apidocs"
+ />
+ </replace>
+
+ <!--
+ Copying project site index data to apidocs index
+
+ We need some Apache boilerplate and intro in the apidocs index page and the easiest
+ solution seems to be to simply copy some of the contents of the project site index.
+ -->
+ <xslt in="${target.dir}/site/index.html"
+ out="${target.dir}/mainpage.dox"
+ style="${base.dir}/src/site/doxy/mainpage.dox.xsl"
+ force="true">
+ <xmlcatalog>
+ <dtd publicId="-//W3C//DTD XHTML 1.0 Transitional//EN"
+ location="${base.dir}/src/site/doxy/DTDs/xhtml1-transitional.dtd"
+ />
+ <dtd publicId="-//W3C//ENTITIES Latin 1 for XHTML//EN"
+ location="${base.dir}/src/site/doxy/DTDs/xhtml-lat1.ent"
+ />
+ <dtd publicId="-//W3C//ENTITIES Symbols for XHTML//EN"
+ location="${base.dir}/src/site/doxy/DTDs/xhtml-symbol.ent"
+ />
+ <dtd publicId="-//W3C//ENTITIES Special for XHTML//EN"
+ location="${base.dir}/src/site/doxy/DTDs/xhtml-special.ent"
+ />
+ </xmlcatalog>
+ </xslt>
+
+ <mkdir dir="${target.dir}/site/apidocs" />
+ <exec executable="${doxygen.exe}"
+ dir="${target.dir}"
+ />
+
+ <!--
+ Links ot the main project site
+
+ We want links to the main project site and adding them after doxygen seems to be the
+ only and easiest way.
+ -->
+ <replaceregexp match="(&lt;div (?:id=&quot;projectname&quot;|class=&quot;title&quot;)&gt;)(Apache log4cxx \(Incubating\))"
+ replace="\1&lt;a href=&quot;http://incubator.apache.org/log4cxx&quot;&gt;\2&lt;/a&gt;"
+ flags="img">
+ <fileset dir="${target.dir}/site/apidocs">
+ <include name="*.html" />
+ </fileset>
+ </replaceregexp>
+ </target>
+
+ <target name="site"
+ depends="apidocs">
+ <!-- generate Visual Studio and XCode project files -->
+ <antcall target="build-projects-vc6">
+ <param name="find" value="false" />
+ </antcall>
+
+ <antcall target="build-projects-xcode">
+ </antcall>
+
+ <replaceregexp flags="ig"
+ match="ADD LINK32 .*/NOLOGO"
+ replace="ADD LINK32 ADVAPI32.LIB WS2_32.LIB MSWSOCK.LIB SHELL32.LIB ODBC32.LIB /NOLOGO">
+ <fileset dir="${target.dir}"
+ includes="**/*.dsp"
+ />
+ </replaceregexp>
+ <replaceregexp flags="g"
+ match=".\\apr.dsp"
+ replace="..\\\\..\\\\apr\\\\apr.dsp">
+ <fileset dir="${target.dir}"
+ includes="**/*.dsw"
+ />
+ </replaceregexp>
+ <replaceregexp flags="g"
+ match=".\\aprutil.dsp"
+ replace="..\\\\..\\\\apr-util\\\\aprutil.dsp">
+ <fileset dir="${target.dir}"
+ includes="**/*.dsw"
+ />
+ </replaceregexp>
+ <replaceregexp flags="g"
+ match=".\\xml.dsp"
+ replace="..\\\\..\\\\apr-util\\\\xml\\\\expat\\\\lib\\\\xml.dsp">
+ <fileset dir="${target.dir}"
+ includes="**/*.dsw"
+ />
+ </replaceregexp>
+ <!-- drop library search path -->
+ <replaceregexp flags="g"
+ match="&lt;string&gt;[\./]*/usr/lib&lt;/string&gt;"
+ replace="">
+ <fileset dir="${target.dir}"
+ includes="**/*.pbxproj"
+ />
+ </replaceregexp>
+
+ <replace dir="${target.dir}"
+ includes="**/*.pbxproj"
+ token="/usr/include/apr-1.0"
+ value="/usr/include/apr-1"
+ />
+ <replace dir="${target.dir}" includes="**/*.pbxproj"
+ token="MacOSX10.4u.sdk"
+ value="MacOSX10.5.sdk"
+ />
+ <replace dir="${target.dir}/site"
+ includes="**/*.html">
+ <replacetoken>&lt;html</replacetoken>
+ <replacevalue>&lt;!--
+ &license;
+ --&gt;&lt;html</replacevalue>
+ </replace>
+ <replace dir="${target.dir}/site/css"
+ includes="maven*.css">
+ <replacetoken>body {</replacetoken>
+ <replacevalue>/*
+ &license;
+ */
+ body {</replacevalue>
+ </replace>
+ <replace dir="${target.dir}/site/css"
+ includes="print.css">
+ <replacetoken>#banner</replacetoken>
+ <replacevalue>/*
+ &license;
+ */
+ #banner</replacevalue>
+ </replace>
+ </target>
+
+ <target name="gump"
+ depends="check, header-check"
+ />
+
+ <target name="fixcrlf"
+ depends="init"
+ description="repair end-of-line sequences">
+ <fixcrlf srcDir="${base.dir}"
+ tab="remove"
+ tablength="3"
+ eof="remove"
+ fixlast="true"
+ eol="unix"
+ includes="*.xml **/*.cpp **/*.h"
+ excludes="lib/**/*"
+ />
+ </target>
+
+ <target name="prepare-changes"
+ description="Prepares changes.xml from a JIRA issues list">
+ <xslt style="src/changes/changes.xslt"
+ in="issues.xml"
+ out="src/changes/changes.xml"
+ />
+ </target>
+
+ <target name="checkout-site"
+ unless="svn-available">
+ <exec executable="svn">
+ <arg value="co" />
+ <arg value="${svnsite.url}" />
+ <arg value="target/site-deploy" />
+ </exec>
+ </target>
+
+ <target name="update-site"
+ if="svn-available">
+ <exec executable="svn"
+ dir="target/site-deploy"
+ failonerror="true">
+ <arg value="update" />
+ </exec>
+ </target>
+
+ <target name="post-site"
+ depends="checkout-site, update-site"
+ />
+
+ <target name="mime=html">
+ <exec executable="svn">
+ <arg value="propset" />
+ <arg value="svn:mime-type" />
+ <arg value="text/html" />
+ <arg value="${src.html}" />
+ </exec>
+ </target>
+
+ <target name="mime=css">
+ <exec executable="svn">
+ <arg value="propset" />
+ <arg value="svn:mime-type" />
+ <arg value="text/css" />
+ <arg value="${src.css}" />
+ </exec>
+ </target>
+
+ <target name="site-deploy">
+ <!-- Add any new files (and generate innocuous warnings for the existing content) -->
+ <delete file="target/site-deploy/svn-commit.tmp~" />
+ <exec executable="bash"
+ dir="target/site-deploy"
+ failonerror="true">
+ <arg line='-c "svn add --force *"'/>
+ </exec>
+
+ <taskdef name="foreach"
+ classname="net.sf.antcontrib.logic.ForEach"
+ />
+ <foreach target="mime=html"
+ param="src.html">
+ <path>
+ <fileset dir="target/site-deploy"
+ includes="**/*.html"
+ />
+ </path>
+ </foreach>
+ <foreach target="mime=css"
+ param="src.css">
+ <path>
+ <fileset dir="target/site-deploy"
+ includes="**/*.css"
+ />
+ </path>
+ </foreach>
+
+ <!-- requires that SVN_EDITOR, VISUAL or EDITOR being set to edit commit description -->
+ <exec executable="svn"
+ dir="target/site-deploy"
+ failonerror="true">
+ <arg value="commit" />
+ </exec>
+ </target>
+
+ <target name="autogen"
+ depends="init"
+ if="is-unix">
+ <exec executable="sh">
+ <arg value="autogen.sh" />
+ </exec>
+ </target>
</project>
diff --git a/pom.xml b/pom.xml
index a80875f..6c7314d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,247 +1,389 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>log4cxx</groupId>
- <artifactId>apache-log4cxx</artifactId>
- <packaging>pom</packaging>
- <version>0.10.0</version>
- <name>Apache log4cxx</name>
- <description>Logging framework for C++.</description>
- <url>http://logging.apache.org:80/log4cxx</url>
- <issueManagement>
- <system>JIRA</system>
- <url>http://issues.apache.org/jira/</url>
- </issueManagement>
-<mailingLists>
- <mailingList>
- <name>log4cxx-user : log4cxx usage</name>
- <subscribe>log4cxx-user-subscribe@logging.apache.org</subscribe>
- <unsubscribe>log4cxx-user-unsubscribe@logging.apache.org</unsubscribe>
- <post>log4cxx-user@logging.apache.org</post>
- <archive>http://mail-archives.apache.org/mod_mbox/logging-log4cxx-user/</archive>
- <otherArchives>
- <otherArchive>http://markmail.org/search/list:org.apache.logging.log4cxx-user</otherArchive>
- <otherArchive>http://marc.info/?l=log4cxx-user</otherArchive>
- <otherArchive>http://dir.gmane.org/gmane.comp.apache.logging.log4cxx.user</otherArchive>
- </otherArchives>
- </mailingList>
- <mailingList>
- <name>log4cxx-dev : log4cxx development</name>
- <subscribe>log4cxx-dev-subscribe@logging.apache.org</subscribe>
- <unsubscribe>log4cxx-dev-unsubscribe@logging.apache.org</unsubscribe>
- <post>log4cxx-dev@logging.apache.org</post>
- <archive>http://mail-archives.apache.org/mod_mbox/logging-log4cxx-dev/</archive>
- <otherArchives>
- <otherArchive>http://markmail.org/search/list:org.apache.logging.log4cxx-dev</otherArchive>
- <otherArchive>http://marc.info/?l=log4cxx-dev</otherArchive>
- <otherArchive>http://dir.gmane.org/gmane.comp.jakarta.log4j.devel</otherArchive>
- </otherArchives>
- </mailingList>
-</mailingLists>
-<licenses>
- <license>
- <name>Apache License, Version 2.0</name>
- <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
- <distribution>repo</distribution>
- </license>
-</licenses>
-<scm>
- <connection>scm:svn:http://svn.apache.org/repos/asf/logging/log4cxx/tags/v0_10_0-rc8</connection>
- <developerConnection>scm:svn:https://svn.apache.org/repos/asf/logging/log4cxx/tags/v0_10_0-rc8</developerConnection>
- <url>http://svn.apache.org/viewcvs.cgi/logging/log4cxx/tags/v0_10_0-rc8</url>
-</scm>
-<organization>
- <name>Apache Software Foundation</name>
- <url>http://www.apache.org</url>
-</organization>
-<build>
- <plugins>
- <plugin>
- <artifactId>maven-antrun-plugin</artifactId>
- <executions>
- <execution>
- <phase>compile</phase>
- <id>compile</id>
- <configuration>
- <tasks>
- <ant target="build" />
- </tasks>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- <execution>
- <phase>test-compile</phase>
- <id>test-compile</id>
- <configuration>
- <tasks>
- <ant target="test-compile" />
- </tasks>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- <execution>
- <phase>test</phase>
- <id>test</id>
- <configuration>
- <tasks>
- <ant target="check" />
- </tasks>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- <execution>
- <phase>package</phase>
- <id>autogen</id>
- <configuration>
- <tasks>
- <ant target="autogen" />
- </tasks>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- <execution>
- <phase>site</phase>
- <id>site</id>
- <configuration>
- <tasks>
- <ant target="site" />
- <taskdef name="replaceregexp" classname="org.apache.tools.ant.taskdefs.optional.ReplaceRegExp" />
- <replaceregexp file="target/site/source-repository.html" match="/tags/[^ &quot;'&lt;]*" replace="/trunk" flags="g" />
- <replaceregexp match="Generated on .* for " replace="Generated for " flags="g">
- <fileset dir="target/site/apidocs" includes="**/*.html" />
- </replaceregexp>
- </tasks>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- <execution>
- <phase>post-site</phase>
- <id>post-site</id>
- <configuration>
- <tasks>
- <ant target="post-site" />
- </tasks>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- <execution>
- <phase>site-deploy</phase>
- <id>site-deploy</id>
- <configuration>
- <tasks>
- <ant target="site-deploy" />
- </tasks>
- </configuration>
- <goals>
- <goal>run</goal>
- </goals>
- </execution>
- </executions>
- <dependencies>
- <dependency>
- <groupId>ant</groupId>
- <artifactId>ant-nodeps</artifactId>
- <version>1.6.5</version>
- </dependency>
- <dependency>
- <groupId>ant-contrib</groupId>
- <artifactId>ant-contrib</artifactId>
- <version>1.0b2</version>
- </dependency>
- <dependency>
- <groupId>ant-contrib</groupId>
- <artifactId>cpptasks</artifactId>
- <version>1.0b5</version>
- </dependency>
- </dependencies>
- </plugin>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <configuration>
- <descriptors>
- <descriptor>src/assembly/source.xml</descriptor>
- </descriptors>
- <appendAssemblyId>false</appendAssemblyId>
- </configuration>
- <executions>
- <execution>
- <goals>
- <goal>assembly</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>rat-maven-plugin</artifactId>
- </plugin>
- </plugins>
-</build>
- <dependencies>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.14</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- <reporting>
- <excludeDefaults>true</excludeDefaults>
- <plugins>
- <plugin>
- <artifactId>maven-project-info-reports-plugin</artifactId>
- <reportSets>
- <reportSet>
- <reports>
- <report>scm</report>
- <report>dependencies</report>
- <report>issue-tracking</report>
- <report>mailing-list</report>
- <report>license</report>
- </reports>
- </reportSet>
- </reportSets>
- </plugin>
- <plugin>
- <artifactId>maven-release-plugin</artifactId>
- <configuration>
- <goals>site-deploy assembly:assembly</goals>
- </configuration>
- </plugin>
- <plugin>
- <artifactId>maven-changes-plugin</artifactId>
- <reportSets>
- <reportSet>
- <reports>
- <report>changes-report</report>
- </reports>
- </reportSet>
- </reportSets>
- <configuration>
- <issueLinkTemplate>%URL%/browse/%ISSUE%</issueLinkTemplate>
- </configuration>
- </plugin>
- </plugins>
- </reporting>
- <distributionManagement>
- <repository>
- <id>tmp.repo</id>
- <url>file:///tmp</url>
- </repository>
- <site>
- <id>logging.site</id>
- <url>file:///${user.dir}/target/site-deploy</url>
- </site>
- </distributionManagement>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>log4cxx</groupId>
+ <artifactId>apache-log4cxx</artifactId>
+ <packaging>pom</packaging>
+ <version>0.10.0</version>
+ <name>Apache log4cxx (Incubating)</name>
+ <description>Logging framework for C++.</description>
+ <url>http://incubator.apache.org/log4cxx</url>
+ <issueManagement>
+ <system>JIRA</system>
+ <url>https://issues.apache.org/jira/browse/LOGCXX</url>
+ </issueManagement>
+
+ <mailingLists>
+ <mailingList>
+ <name>log4cxx-user : log4cxx usage</name>
+ <subscribe>log4cxx-user-subscribe@logging.apache.org</subscribe>
+ <unsubscribe>log4cxx-user-unsubscribe@logging.apache.org</unsubscribe>
+ <post>log4cxx-user@logging.apache.org</post>
+ <archive>http://mail-archives.apache.org/mod_mbox/logging-log4cxx-user/</archive>
+ <otherArchives>
+ <otherArchive>http://markmail.org/search/list:org.apache.logging.log4cxx-user</otherArchive>
+ <otherArchive>http://marc.info/?l=log4cxx-user</otherArchive>
+ <otherArchive>http://dir.gmane.org/gmane.comp.apache.logging.log4cxx.user</otherArchive>
+ </otherArchives>
+ </mailingList>
+ <mailingList>
+ <name>log4cxx-dev : log4cxx development</name>
+ <subscribe>log4cxx-dev-subscribe@logging.apache.org</subscribe>
+ <unsubscribe>log4cxx-dev-unsubscribe@logging.apache.org</unsubscribe>
+ <post>log4cxx-dev@logging.apache.org</post>
+ <archive>http://mail-archives.apache.org/mod_mbox/logging-log4cxx-dev/</archive>
+ <otherArchives>
+ <otherArchive>http://markmail.org/search/list:org.apache.logging.log4cxx-dev</otherArchive>
+ <otherArchive>http://marc.info/?l=log4cxx-dev</otherArchive>
+ <otherArchive>http://dir.gmane.org/gmane.comp.apache.logging.log4cxx.devel</otherArchive>
+ </otherArchives>
+ </mailingList>
+ </mailingLists>
+
+ <licenses>
+ <license>
+ <name>Apache License, Version 2.0</name>
+ <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+ <distribution>repo</distribution>
+ </license>
+ </licenses>
+
+ <scm>
+ <connection>scm:svn:http://svn.apache.org/repos/asf/incubator/log4cxx/trunk</connection>
+ <developerConnection>scm:svn:https://svn.apache.org/repos/asf/incubator/log4cxx/trunk</developerConnection>
+ <url>http://svn.apache.org/viewcvs.cgi/incubator/log4cxx</url>
+ </scm>
+
+ <organization>
+ <name>Apache Software Foundation</name>
+ <url>http://www.apache.org</url>
+ </organization>
+
+ <!-- Developers listed by PMC, Committers, alphabetical by id-->
+ <developers>
+ <!--Begin PMC-->
+ <!--End PMC, Begin Committers-->
+ <developer>
+ <id>alexz</id>
+ <name>Alex Zbarcea</name>
+ <email>alexz@apache.org</email>
+ <timezone>America/New York</timezone>
+ <roles>
+ <role>Committer</role>
+ </roles>
+ </developer>
+ <developer>
+ <id>chand</id>
+ <name>Chand Priyankara</name>
+ <email>chand@apache.org</email>
+ <timezone>Sri Lanka/Kadawathe</timezone>
+ <roles>
+ <role>Committer</role>
+ </roles>
+ </developer>
+ <developer>
+ <id>fseydoux</id>
+ <name>Florian Seydoux</name>
+ <email>fseydoux@apache.org</email>
+ <timezone>Europe/Zurich</timezone>
+ <roles>
+ <role>Committer</role>
+ </roles>
+ </developer>
+ <developer>
+ <id>joseph</id>
+ <name>Joseph Southwell</name>
+ <email>joseph@apache.org</email>
+ <timezone>America/Chicago</timezone>
+ <roles>
+ <role>Committer</role>
+ </roles>
+ </developer>
+ <developer>
+ <id>rhys</id>
+ <name>Rhys Ulerich</name>
+ <email>rhys@apache.org</email>
+ <timezone>America/Chicago</timezone>
+ <roles>
+ <role>Committer</role>
+ </roles>
+ </developer>
+ <developer>
+ <id>tschoening</id>
+ <name>Thorsten Schöning</name>
+ <email>tschoening@apache.org</email>
+ <timezone>Europe/Berlin</timezone>
+ <roles>
+ <role>Committer</role>
+ </roles>
+ </developer>
+ <!--End Committers, Begin Emeritus-->
+ <developer>
+ <id>afester</id>
+ <name>Andreas Fester</name>
+ <roles>
+ <role>Emeritus</role>
+ </roles>
+ </developer>
+ <developer>
+ <id>carnold</id>
+ <name>Curtis Arnold</name>
+ <roles>
+ <role>Emeritus</role>
+ </roles>
+ </developer>
+ <developer>
+ <id>cdevienne</id>
+ <name>Christophe de Vienne</name>
+ <roles>
+ <role>Emeritus</role>
+ </roles>
+ </developer>
+ <developer>
+ <id>mcatan</id>
+ <name>Michael Catanzariti</name>
+ <roles>
+ <role>Emeritus</role>
+ </roles>
+ </developer>
+ <!--End Emeritus-->
+ </developers>
+
+ <contributors>
+ <contributor>
+ <name>Andrew Lazarus</name>
+ </contributor>
+ </contributors>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <version>1.7</version>
+ <executions>
+ <execution>
+ <phase>compile</phase>
+ <id>compile</id>
+ <configuration>
+ <target>
+ <ant target="build" />
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ <execution>
+ <phase>test-compile</phase>
+ <id>test-compile</id>
+ <configuration>
+ <target>
+ <ant target="test-compile" />
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ <execution>
+ <phase>test</phase>
+ <id>test</id>
+ <configuration>
+ <target>
+ <ant target="check" />
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ <execution>
+ <phase>package</phase>
+ <id>autogen</id>
+ <configuration>
+ <target>
+ <ant target="autogen" />
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ <execution>
+ <phase>site</phase>
+ <id>site</id>
+ <configuration>
+ <target>
+ <ant target="apidocs" />
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ <execution>
+ <phase>post-site</phase>
+ <id>post-site</id>
+ <configuration>
+ <target>
+ <ant target="post-site" />
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ <execution>
+ <phase>site-deploy</phase>
+ <id>site-deploy</id>
+ <configuration>
+ <target>
+ <ant target="site-deploy" />
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.ant</groupId>
+ <artifactId>ant</artifactId>
+ <version>1.9.3</version>
+ </dependency>
+ <dependency>
+ <groupId>ant-contrib</groupId>
+ <artifactId>ant-contrib</artifactId>
+ <version>1.0b2</version>
+ </dependency>
+ <dependency>
+ <groupId>ant-contrib</groupId>
+ <artifactId>cpptasks</artifactId>
+ <version>1.0b5</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <configuration>
+ <descriptors>
+ <descriptor>src/assembly/source.xml</descriptor>
+ </descriptors>
+ <appendAssemblyId>false</appendAssemblyId>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>assembly</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>rat-maven-plugin</artifactId>
+ <version>1.0-alpha-3</version>
+ </plugin>
+ <plugin>
+ <artifactId>maven-site-plugin</artifactId>
+ <version>3.3</version>
+ <configuration>
+ <templateFile>${basedir}/src/site/maven-site.vm</templateFile>
+ <reportPlugins>
+ <plugin>
+ <artifactId>maven-project-info-reports-plugin</artifactId>
+ <version>2.7</version>
+ <reportSets>
+ <reportSet>
+ <reports>
+ <report>scm</report>
+ <report>dependencies</report>
+ <report>issue-tracking</report>
+ <report>mailing-list</report>
+ <report>license</report>
+ </reports>
+ </reportSet>
+ </reportSets>
+ </plugin>
+ <plugin>
+ <artifactId>maven-changes-plugin</artifactId>
+ <version>2.9</version>
+ <reportSets>
+ <reportSet>
+ <reports>
+ <report>changes-report</report>
+ </reports>
+ </reportSet>
+ </reportSets>
+ <configuration>
+ <issueLinkTemplate>%URL%/browse/%ISSUE%</issueLinkTemplate>
+ </configuration>
+ </plugin>
+ </reportPlugins>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencies>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.14</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <reporting>
+ <excludeDefaults>true</excludeDefaults>
+ <plugins>
+ <plugin>
+ <artifactId>maven-project-info-reports-plugin</artifactId>
+ <reportSets>
+ <reportSet>
+ <reports>
+ <report>scm</report>
+ <report>dependencies</report>
+ <report>issue-tracking</report>
+ <report>mailing-list</report>
+ <report>license</report>
+ </reports>
+ </reportSet>
+ </reportSets>
+ </plugin>
+ <plugin>
+ <artifactId>maven-release-plugin</artifactId>
+ <configuration>
+ <goals>site-deploy assembly:assembly</goals>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-changes-plugin</artifactId>
+ <version>2.9</version>
+ <reportSets>
+ <reportSet>
+ <reports>
+ <report>changes-report</report>
+ </reports>
+ </reportSet>
+ </reportSets>
+ <configuration>
+ <issueLinkTemplate>%URL%/browse/%ISSUE%</issueLinkTemplate>
+ </configuration>
+ </plugin>
+ </plugins>
+ </reporting>
+
+ <distributionManagement>
+ <repository>
+ <id>tmp.repo</id>
+ <url>file:///tmp</url>
+ </repository>
+ <site>
+ <id>logging.site</id>
+ <url>file:///${user.dir}/target/site-deploy</url>
+ </site>
+ </distributionManagement>
</project>
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 7faa62b..24f327a 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -16,379 +16,327 @@
See the License for the specific language governing permissions and
limitations under the License.
- -->
+-->
<document>
-<properties>
-<title>Apache log4cxx</title>
-</properties>
-<body>
-<release version="0.10.0" date="2008-04-03" description="First Apache release">
-<action issue="LOGCXX-2">logger.h includes config.h</action>
-<action issue="LOGCXX-3">Missing #else</action>
-<action issue="LOGCXX-4">initialization not working on many OS's</action>
-<action issue="LOGCXX-5">Preprocessor macro WIN32 used instead of _WIN32</action>
-<action issue="LOGCXX-6">Win32 OutputDebugString</action>
-<action issue="LOGCXX-7">SocketAppender binary format not compatible with Chainsaw</action>
-<action issue="LOGCXX-8">Compilation problems using VC5 or VC6 with later Platform SDKs</action>
-<action issue="LOGCXX-10">Conflicting definitions of tchar.h/simulatenous Unicode+MBCS</action>
-<action issue="LOGCXX-11">Timezone may have side-effects</action>
-<action issue="LOGCXX-12">the threshold of ApenderSkeleton can not be set by calling setOption.</action>
-<action issue="LOGCXX-13">Add branch optimization hint to LOG4CXX_DEBUG macro</action>
-<action issue="LOGCXX-14">add -Wall to compile log4cxx will get many warning</action>
-<action issue="LOGCXX-15">PatternLayout don't use locale time zone,it's use GMT tome zone</action>
-<action issue="LOGCXX-16">Misleading statements in Introduction to log4cxx</action>
-<action issue="LOGCXX-17">Use of non reentrant time functions</action>
-<action issue="LOGCXX-18">LoggerStream Feature</action>
-<action issue="LOGCXX-19">Add .cvsignore's to ignore generated files</action>
-<action issue="LOGCXX-21">Add check that libxml2 not libxml has been included</action>
-<action issue="LOGCXX-22">Backslashes in filenames in XML config of FileAppender broken</action>
-<action issue="LOGCXX-23">Unit tests have become stale</action>
-<action issue="LOGCXX-24">Class and module name not available in LogEvent</action>
-<action issue="LOGCXX-25">Add Ant+cpptasks build file</action>
-<action issue="LOGCXX-26">Default initialization is broken</action>
-<action issue="LOGCXX-27">Appender threshold cannot be set in configuration files</action>
-<action issue="LOGCXX-28">Appender threshold cannot be set in configuration files</action>
-<action issue="LOGCXX-29">Appender attributes are not passed passed to setOption correctly.</action>
-<action issue="LOGCXX-30">StringTokenizer uses evil strtok and wcstok functions</action>
-<action issue="LOGCXX-31">Missing const qualifiers, Exception::getMessage() in particular.</action>
-<action issue="LOGCXX-32">Missing copy constructors and assignment operators</action>
-<action issue="LOGCXX-33">log4cxx::Exception is not derived from std::exception</action>
-<action issue="LOGCXX-34">Visual Studio 6 CVS build broken</action>
-<action issue="LOGCXX-35">Avoid use of MSXML</action>
-<action issue="LOGCXX-36">Migrate to Apache Portable Runtime threads</action>
-<action issue="LOGCXX-37">Unable to build log4cxx under Borland C++</action>
-<action issue="LOGCXX-39">Remove DailyRollingFileAppender</action>
-<action issue="LOGCXX-40">PatternLayout does not support Java date format specifiers</action>
-<action issue="LOGCXX-41">Layout timestamp doesn't seem to adjust for daylight saving</action>
-<action issue="LOGCXX-43">configure/make help needed</action>
-<action issue="LOGCXX-44">GUMP integation</action>
-<action issue="LOGCXX-45">_T causes error : 1048576 cannot be used as a function</action>
-<action issue="LOGCXX-46">Extra semicolon after namespace closing paren</action>
-<action issue="LOGCXX-47">Check headers for missing declarations and Effective C++ violations</action>
-<action issue="LOGCXX-48">Use hex representation for thread identifier</action>
-<action issue="LOGCXX-49">Move timezone specification into pattern, remove locale specification</action>
-<action issue="LOGCXX-50">variable name clash in macro</action>
-<action issue="LOGCXX-52">Migrate log4j 1.3 RollingFileAppender</action>
-<action issue="LOGCXX-53">Problems compiling with MsDev 6.0 (space in paths)</action>
-<action issue="LOGCXX-54">Eliminate use of boost-regex in unit tests</action>
-<action issue="LOGCXX-55">DailyRolling File Appender</action>
-<action issue="LOGCXX-56">BasicConfiguration is unreliable</action>
-<action issue="LOGCXX-57">Port log4j performance test</action>
-<action issue="LOGCXX-58">ImmediateFlush'd FileAppenders extremely slow on Windows</action>
-<action issue="LOGCXX-59">Implement encoding support for Writer appender</action>
-<action issue="LOGCXX-60">XML layout can be mismatched with document encoding</action>
-<action issue="LOGCXX-62">log4cxx 0.10.0 release</action>
-<action issue="LOGCXX-63">Platform appropriate line-feed convention</action>
-<action issue="LOGCXX-64">Migrate to APR network IO</action>
-<action issue="LOGCXX-66">SyslogAppender append method currently stubbed out</action>
-<action issue="LOGCXX-67">NTEventLogAppender always uses RPC method for logging and has inadequate error handling.</action>
-<action issue="LOGCXX-70">Logic flaws in StringHelper::startsWith and StringHelper::endsWith</action>
-<action issue="LOGCXX-71">Update performance page on web site</action>
-<action issue="LOGCXX-72">INSTALL out of date</action>
-<action issue="LOGCXX-73">Not loading configuration from log4cxx.properties or log4cxx.xml</action>
-<action issue="LOGCXX-74">MinGW build</action>
-<action issue="LOGCXX-75">Cygwin build</action>
-<action issue="LOGCXX-76">user.home, user.dir, java.io.tmpdir available within configuration files</action>
-<action issue="LOGCXX-77">Static builds broken</action>
-<action issue="LOGCXX-79">configure check for apr-util</action>
-<action issue="LOGCXX-80">Migrated network appenders to APR network IO</action>
-<action issue="LOGCXX-81">SimpleDateFormat does not compile on Solaris 2.95.2 gcc</action>
-<action issue="LOGCXX-82">Compiling with stream.h in multiple object files errors</action>
-<action issue="LOGCXX-83">log4cxx::Level::ERROR fails to compile when GDI enabled</action>
-<action issue="LOGCXX-84">Problems with stream logging in UTF8, no WCHAR_T build</action>
-<action issue="LOGCXX-85">Mac OS/X fixes and enhancements</action>
-<action issue="LOGCXX-86">Add TRACE level</action>
-<action issue="LOGCXX-87">Remove remaining uses of Category and Priority</action>
-<action issue="LOGCXX-88">Explore use of security-enhanced CRT methods</action>
-<action issue="LOGCXX-94">simplesocketserver.cpp should use LOG4CXX_STR("...") not L"..."</action>
-<action issue="LOGCXX-98">Gump build fails for log4cxx-ant-no-wchar-t target</action>
-<action issue="LOGCXX-100">Fixes for ODBCAppender</action>
-<action issue="LOGCXX-103">Much of CVS HEAD seems #if 0 out, especially ResourceBundle stuff</action>
-<action issue="LOGCXX-104">ODBCAppender::close does not check if appender is already closed</action>
-<action issue="LOGCXX-105">Infinite loop in string replacing</action>
-<action issue="LOGCXX-106">maxFileSize has bad type in SizeBasedTriggeringPolicy file</action>
-<action issue="LOGCXX-107">Can't compile log4cxx in ascii on Windows</action>
-<action issue="LOGCXX-110">try fix 64bit log4cxx_intptr_t</action>
-<action issue="LOGCXX-111">make Logger cache a LoggerRepositoryPtr instead of a "blind" pointer</action>
-<action issue="LOGCXX-112">change "static" to "auto" for Transcoder::decode() decoder and CharsetDecoder::getDefaultDecoder() decoder</action>
-<action issue="LOGCXX-113">separate apr detection m4 codes from aclocal.m4</action>
-<action issue="LOGCXX-114">Upgrade APR to 1.2.2 from 1.1.0</action>
-<action issue="LOGCXX-115">SVN head does not compile with Borland C++ compiler</action>
-<action issue="LOGCXX-116">SVN head does not compiler with MinGW compiler</action>
-<action issue="LOGCXX-117">Memory leak with ThreadSpecificData on Win32</action>
-<action issue="LOGCXX-118">Hierarchy corrupts with PropertyConfigurator</action>
-<action issue="LOGCXX-119">ndctestcase not working</action>
-<action issue="LOGCXX-120">Wrong parameter description in Patternlayout</action>
-<action issue="LOGCXX-123">UTF-8 build fails on Linux</action>
-<action issue="LOGCXX-124">wchar_t constructor missing in class NDC</action>
-<action issue="LOGCXX-125">L7dTestCase is stubbed out</action>
-<action issue="LOGCXX-126">std::cout stops working if log4cxx is first to output</action>
-<action issue="LOGCXX-127">Main build.xml not referencing "env" properly.</action>
-<action issue="LOGCXX-129">Asyncappender is full of race conditions (improper use of condition variables)</action>
-<action issue="LOGCXX-130">Compile fails on gcc4.1</action>
-<action issue="LOGCXX-131">TimeBasedRollingPolicy is declared "abstract"</action>
-<action issue="LOGCXX-132">various segmentation faults in multithreaded application</action>
-<action issue="LOGCXX-133">Missing parenthesis in LOG4CXX_ASSERT</action>
-<action issue="LOGCXX-134">FileAppender could create missing directories</action>
-<action issue="LOGCXX-135">Use std::string with logstream</action>
-<action issue="LOGCXX-136">DailyRollingFileAppender not using Property options</action>
-<action issue="LOGCXX-138">XMLLayoutTestCase output and filtered output gets overwritten</action>
-<action issue="LOGCXX-139">XMLLayoutTestCase uses inadequate filters for 64 bit platforms</action>
-<action issue="LOGCXX-140">Handle leak with LoggingEvent::getCurrentThreadName</action>
-<action issue="LOGCXX-141">Upgrade to APR 1.2.7 or later</action>
-<action issue="LOGCXX-142">socketservertestcase.cpp does not compile with Sun Studio 11 on Solaris</action>
-<action issue="LOGCXX-143">-xarch=v8plus should be removed from Makefile.in</action>
-<action issue="LOGCXX-146">DailyRollingFileAppender::~DailyRollingFileAppender must call finalize</action>
-<action issue="LOGCXX-149">make dist does not work</action>
-<action issue="LOGCXX-150">logstream's operator&lt;&lt; declared in the wrong namespace</action>
-<action issue="LOGCXX-151">Umlauts as literal in patternlayout won't be logged correct</action>
-<action issue="LOGCXX-152">gcc warning about cast from `const void*' to `log4cxx::helpers::Object*' discards qualifiers from pointer target typ</action>
-<action issue="LOGCXX-153">Automate log4cxx site and doxygen generation and deployment</action>
-<action issue="LOGCXX-155">Update source headers per new ASF header policy</action>
-<action issue="LOGCXX-156">immediate flush in console appender</action>
-<action issue="LOGCXX-157">make install fails since @manual_dest@ replacement is missing in Makefiles</action>
-<action issue="LOGCXX-158">tolower not defined in stringhelper.cpp</action>
-<action issue="LOGCXX-159">Initialization of local static objects out of order on Linux</action>
-<action issue="LOGCXX-160">helpers/object.h: DECLARE_LOG4CXX_OBJECT macro definition is missing virtual destructor declaration</action>
-<action issue="LOGCXX-161">Using RollingFileAppender increases the working set with each rollover</action>
-<action issue="LOGCXX-162">Problem printing string with embedded NULL character</action>
-<action issue="LOGCXX-163">liblog4cxx (svn 480882) does not link on Mac OS X 10.4</action>
-<action issue="LOGCXX-164">XMLSocketAppender is disabled</action>
-<action issue="LOGCXX-165">XMLSocketAppender may generate erroneous output due to mismatched encoding</action>
-<action issue="LOGCXX-167">system locale charmap is not determined properly on Fedora Core 6</action>
-<action issue="LOGCXX-168">log4j.dtd does not contain rollingPolicy and other o.a.l.r.RFA elements</action>
-<action issue="LOGCXX-169">XMLLayoutTestCase fails on compilers that do not provide location info</action>
-<action issue="LOGCXX-171">Add project description file for projects.apache.org</action>
-<action issue="LOGCXX-172">configure fail with ".infig.status: error: cannot find input file:"</action>
-<action issue="LOGCXX-175">APRCharsetEncoder is not thread safe</action>
-<action issue="LOGCXX-177">SocketImpl::accept uses private APR function: apr_wait_for_io_or_timeout</action>
-<action issue="LOGCXX-178">Link failure if wchar_t cannot be determined as UTF-16 or UTF-32</action>
-<action issue="LOGCXX-179">example applications do SIGABRT on aix 5.2</action>
-<action issue="LOGCXX-180">Build fails at domconfigurator.h</action>
-<action issue="LOGCXX-181">Level::DEBUG and other non-local statics cause crash on app shutdown on AIX</action>
-<action issue="LOGCXX-182">missing man page for simplesocketserver</action>
-<action issue="LOGCXX-183">Compiler warning: dereferencing type-punned pointer will break strict-aliasing rules</action>
-<action issue="LOGCXX-184">Crash when log level set to 'inherited'</action>
-<action issue="LOGCXX-186">Garbage characters in log files when log requests from multiple threads with hyperthreading enabled</action>
-<action issue="LOGCXX-187">LogLog::emit() could potentially interleave messages</action>
-<action issue="LOGCXX-188">Upgrade to apr 1.2.9 and apr-util 1.2.8</action>
-<action issue="LOGCXX-189">Migrate to Maven 2.0 for documentation and packaging</action>
-<action issue="LOGCXX-190">The 'logger.h' header includes itself.</action>
-<action issue="LOGCXX-191">Application cores when syslog appender is given an unreachable host/ip.</action>
-<action issue="LOGCXX-192">Suggested improvements to log4cxx webpages</action>
-<action issue="LOGCXX-193">Please rename or remove new local variable "buf" in Logger.h macros</action>
-<action issue="LOGCXX-194">Garbage in log files when appenders are defined in multiple levels of the logger hierarchy</action>
-<action issue="LOGCXX-195">Syslog appender adds characters to output.</action>
-<action issue="LOGCXX-196">Syslog appender destructor can cause core</action>
-<action issue="LOGCXX-197">ant can't generate vc6 project</action>
-<action issue="LOGCXX-200">Implement compression for RollingFileAppender</action>
-<action issue="LOGCXX-201">Visual Studio 6 build</action>
-<action issue="LOGCXX-202">ObjectPtrT has inconsistent const-ness on accessors</action>
-<action issue="LOGCXX-204">PatternParserTestCase and FileNamePatternTestCase fail only with VC6</action>
-<action issue="LOGCXX-208">isTraceEnabled implemenation missing in logger.cpp (Revision: 592627)</action>
-<action issue="LOGCXX-209">A message of type wchar_t* is not beeing written correctly to the internal message buffer (Revision: 592627)</action>
-<action issue="LOGCXX-210">HTMLLayout NDC null check</action>
-<action issue="LOGCXX-211">Crash(Segmentation Fault) in DailyRollingFileAppender when file change</action>
-<action issue="LOGCXX-212">unittest failed</action>
-<action issue="LOGCXX-213">trace method implementation is missing</action>
-<action issue="LOGCXX-214">Possible memory leak due to fault in build process (via make)</action>
-<action issue="LOGCXX-215">Eliminate sqlext.h from odbcappender.h</action>
-<action issue="LOGCXX-216">crash on program exit</action>
-<action issue="LOGCXX-217">Not initialized LoggerPtr segfault program.</action>
-<action issue="LOGCXX-218">Visual Studio 8 build</action>
-<action issue="LOGCXX-219">suspicious warnings</action>
-<action issue="LOGCXX-220">Memory leaks when using MFC</action>
-<action issue="LOGCXX-221">ThreadID layout does not match debugger</action>
-<action issue="LOGCXX-222">trunk compile error.</action>
-<action issue="LOGCXX-225">Migrate unit tests from LGPL'd CPPUNIT to an ASL'd testing framework</action>
-<action issue="LOGCXX-226">Default configurator uses *.properties in preference to *.xml</action>
-<action issue="LOGCXX-227">Remove @since tags</action>
-<action issue="LOGCXX-228">Remove @author tags</action>
-<action issue="LOGCXX-230">Align ant build options with automake</action>
-<action issue="LOGCXX-231">Deadlock in AsyncAppender</action>
-<action issue="LOGCXX-232">Drop src/performance</action>
-<action issue="LOGCXX-233">Unnecessary casts in ObjectPtrT</action>
-<action issue="LOGCXX-234">Assignment operator removes const qualifier</action>
-<action issue="LOGCXX-235">Add ObjectPtrT::exchange</action>
-<action issue="LOGCXX-236">Re-order constructor initialiser lists to match declaration order</action>
-<action issue="LOGCXX-237">Include missing headers</action>
-<action issue="LOGCXX-239">Inconsistent const qualification on logging methods.</action>
-<action issue="LOGCXX-241">Non-ascii named files have names mangled</action>
-<action issue="LOGCXX-242">Eliminate log4cxx proxies for APR types</action>
-<action issue="LOGCXX-243">Problem Compile in Doxy</action>
-<action issue="LOGCXX-246">Config refresh hangs a client application that uses TelnetAppender</action>
-<action issue="LOGCXX-247">MSVC project has wrong additional include directories</action>
-<action issue="LOGCXX-248">ODBCAppender has unicode issues</action>
-<action issue="LOGCXX-251">NDC::cloneStack and NDC::inherit missing in 0.10.0 RC2</action>
-<action issue="LOGCXX-252">Add documentation for use of operator&lt;&lt; in logging requests</action>
-<action issue="LOGCXX-253">Transcoder compilation error with utf-8 charset</action>
-<action issue="LOGCXX-254">Add build option for static C RTL</action>
-<action issue="LOGCXX-256">SocketHubAppender fails after accepting connection</action>
-<action issue="LOGCXX-257">ServerSocket::accept hangs on Unix</action>
-<action issue="LOGCXX-258">unable to build from make dist package due to missing doxygen file</action>
-<action issue="LOGCXX-259">Several appenders fail to compile in Visual Studio 2008</action>
-</release>
-<release version="0.9.7" date="2004-05-10">
-<action type="fix">Fixed examples source code in the "Short introduction to log4cxx".</action>
-<action type="fix">Fixed, in the renaming algorithm of RollingFileAppender and
- DailyRollingFileAppender, a problem specific to Unicode.</action>
-<action type="fix">Fixed conflict with Windows macros "min" and "max", by renaming
- StrictMath::min and StrictMath::max to StrictMath::minimum and
- StrictMath::maximum.</action>
-<action type="add">Port to HPUX 11.0.</action>
-<action type="fix">Fixed segmentation fault in PropertyConfigurator.</action>
-<action type="add">Port to Solaris.</action>
-<action type="fix">Fixed MutexException thrown while destroying RollingFileAppender.</action>
-<action type="fix">Logging macros can be used without explicity declaring the use of log4cxx namespace.</action>
-<action type="fix">Fixed static library unresolved externals for msvc 6 and 7.1</action>
-</release>
-<release version="0.9.6" date="2004-04-11">
-<action>Timezone management has been optimized through the class TimeZone</action>
-<action>Inter-thread synchronization and reference counting has been optimized</action>
-<action>Reference counting now uses gcc atomic functions (bug 929078)</action>
-<action>Use of StringBuffer has been optimized.</action>
-<action>Support of localisation throug resourceBundles</action>
-<action>SyslogAppender now uses the system function 'syslog' to log on the local host.
- (only for POSIX systems)</action>
-<action>Added TimeZone configuration to PatternLayout (bug 912563)</action>
-<action>Support of the DailyRollingFileAppender (feature request 842765)</action>
-</release>
-<release version="0.9.5" date="2004-02-04">
-<action>Port of log4j Jnuit tests with Cppunit and Boost Regex.</action>
-<action>Added explicit exports for MSDEV 6 and MSDEV 7 (no further need of .def files)</action>
-<action>Custom levels can be configured through the DOMConfigurator and
- PropertyConfigurator classes (Level inherites from Object)</action>
-<action>Added a reference counter to LoggingEvent to avoid useless copies
- (LoggingEvent inherites from Object)</action>
-<action>The file log4j.xml as well as the file log4j.properties are now search
- for, in log4cxx initialization.</action>
-<action>The root logger can be assigned the "OFF" level.</action>
-<action>Added MSVC6 project missing files mutext.cpp and condition.cpp (bug 847397)</action>
-<action>condition.cpp now compiles with MSVC6 (bug 847417)</action>
-<action>fixed pure virtual function call in PropertyConfigurator::configureAndWatch
- (bug 848521)</action>
-<action>XMLAppender now displays correct timestamp with MSVC 6 (bug 852836)</action>
-<action>SRLPORT 4.6 support.</action>
-<action>Fixed an infinite loop in class Properties.</action>
-<action>Fixed compilations problems with unicode.</action>
-<action>Fixed SocketAppender bug concerning MDC and NDC.</action>
-</release>
-<release version="0.9.4" date="2003-10-25">
-<action>StringBuffer has been optimized.</action>
-<action>Fixed miscellaneous threading problems.</action>
-<action>Added TimeZone support in PatternLayout (bug 796894)</action>
-<action>Fixed threading configuration problems (bug 809125)</action>
-<action>Fixed miscellaneous MSVC and cygwin compilation problems.</action>
-</release>
-<release version="0.9.3" date="2003-09-19">
-<action>Changed tstring to log4cxx::String and tostringstream to
- log4cxx::StringBuffer.
-</action>
-<action>Fixed MSVC 2003 compilation erros and warnings.
-</action>
-<action>Added helpers for NDC and MDC.
-</action>
-<action>Added TimeZone support in TTCCLayout.
-</action>
-<action>Fixed compilation problems with logger macros (LOG4CXX_...)
-</action>
-<action>Fixed milliseconds formatting problem with MSVC 6.0 and 2003
-</action>
-<action>Fixed AsyncAppender crash
-</action>
-<action>Added new tests
-</action>
-<action>Added benchmarks
-</action>
-</release>
-<release version="0.9.2" date="2003-08-10">
-<action>Fixed FreeBSD compilation problem with pthread mutex (class CriticalSection).
-</action>
-<action>Fixed milliseconds formatting problem (class DateFormat).
-</action>
-<action>Long events (&gt; 1024 chars) are now supported in the class XMLSocketAppender.
-</action>
-<action>Carriage returns have been normalized in the class XMLLayout.
-</action>
-</release>
-<release version="0.9.1" date="2003-08-06">
-<action>Fixed deadlock problems in classes Logger and AsyncAppender.
-</action>
-<action>Fixed MSVC 6.0 compilation problems.
-</action>
-<action>Added MSVC 6.0 static libraty project.
-</action>
-<action>Default configuration for the SMTP options is "no".
-</action>
-</release>
-<release version="0.9.0" date="2003-08-06">
-<action>Added ODBCAppender (matching log4j JDBCAppender)
-</action>
-<action>Added SyslogAppender
-</action>
-<action>Added SMTPAppender (only for Linux/FreeBSD)
-</action>
-<action>Added BasicConfigurator
-</action>
-<action>Added a FileWatchDog in PropertyConfigurator and DOMConfigurator
-</action>
-<action>Possibility to load a custom LoggerFactory through the DOMConfigurator
-</action>
-<action>Changed time precision from seconds to milliseconds
-</action>
-<action>Added MSVC 6.0 'Unicode Debug' and 'Unicode Release' targets
-</action>
-<action>Added Java like System class.
-</action>
-</release>
-<release version="0.1.1" date="2003-07-09">
-<action>Fixed MSVC 6.0 compilation problems concerning the 'Release' target
-</action>
-<action>Added MSVC 6.0 tests projects
-</action>
-</release>
-<release version="0.1.0" date="2003-07-08">
-<action>FreeBSD Autotools/Compilation support
-</action>
-<action>Fixed TelnetAppender crash when a socket bind exception occured.
-</action>
-<action>Added log4j DTD support to XMLLayout and DOMConfigurator
-</action>
-<action>Can now send events in XML format over TCP (class XMLSocketAppender) for the
- log4j Chainsaw UI
-</action>
-<action>Now compiles with 'configure --enable-unicode' (UTF16 Unicode support)
-</action>
-<action>Added Java like Properties class. It's a helper for the PropertyConfigurator
-</action>
-<action>Added Java like objects with dynamic cast and instanciation. Custom objects
- can be configured through the DOMConfigurator and PropertyConfigurator classes
-</action>
-<action>Port of the PropertyConfigurator class
-</action>
-<action>Port of the "Map Diagnostic Context" (MDC) class
-</action>
-<action>Added 13 tests (try make check)
-</action>
-</release>
-<release version="0.0.1" date="2003-05-31">
-<action type="add">Loggers, Hierarchy, Filters, Appenders, Layouts, NDC
-</action>
-<action type="add">Appenders:
- AsyncAppender, ConsoleAppender, FileAppender, NTEventLogAppender,
- RollingFileAppender, SocketAppender, SocketHubAappender,
- TelnetAppender
-</action>
-<action type="add">Layouts:
- HTMLLayout, PatternLayout, SimpleLayout, TTCCLayout, XMLLayout
-</action>
-<action type="add">Filters:
- DenyAllFilter, LevelMatchFilter, LevelRangeFilter, StringMatchFilter
+ <properties>
+ <title>Changes</title>
+ </properties>
-</action>
-<action type="add">Configurators:
- DOMConfigurator
-</action>
-</release>
-</body>
+ <body>
+ <release version="0.10.0" date="2008-04-03" description="First Apache release">
+ <action issue="LOGCXX-2" type="fix">logger.h includes config.h</action>
+ <action issue="LOGCXX-3" type="fix">Missing #else</action>
+ <action issue="LOGCXX-4" type="fix">initialization not working on many OS's</action>
+ <action issue="LOGCXX-5" type="fix">Preprocessor macro WIN32 used instead of _WIN32</action>
+ <action issue="LOGCXX-6" type="add">Win32 OutputDebugString</action>
+ <action issue="LOGCXX-7" type="fix">SocketAppender binary format not compatible with Chainsaw</action>
+ <action issue="LOGCXX-8" type="fix">Compilation problems using VC5 or VC6 with later Platform SDKs</action>
+ <action issue="LOGCXX-10" type="fix">Conflicting definitions of tchar.h/simulatenous Unicode+MBCS</action>
+ <action issue="LOGCXX-11" type="fix">Timezone may have side-effects</action>
+ <action issue="LOGCXX-12" type="fix">the threshold of ApenderSkeleton can not be set by calling setOption.</action>
+ <action issue="LOGCXX-13" type="add">Add branch optimization hint to LOG4CXX_DEBUG macro</action>
+ <action issue="LOGCXX-14" type="add">add -Wall to compile log4cxx will get many warning</action>
+ <action issue="LOGCXX-15" type="fix">PatternLayout don't use locale time zone,it's use GMT tome zone</action>
+ <action issue="LOGCXX-16" type="fix">Misleading statements in Introduction to log4cxx</action>
+ <action issue="LOGCXX-17" type="update">Use of non reentrant time functions</action>
+ <action issue="LOGCXX-18" type="add">LoggerStream Feature</action>
+ <action issue="LOGCXX-19" type="add">Add .cvsignore's to ignore generated files</action>
+ <action issue="LOGCXX-21" type="add">Add check that libxml2 not libxml has been included</action>
+ <action issue="LOGCXX-22" type="fix">Backslashes in filenames in XML config of FileAppender broken</action>
+ <action issue="LOGCXX-23" type="fix">Unit tests have become stale</action>
+ <action issue="LOGCXX-24" type="fix">Class and module name not available in LogEvent</action>
+ <action issue="LOGCXX-25" type="add">Add Ant+cpptasks build file</action>
+ <action issue="LOGCXX-26" type="fix">Default initialization is broken</action>
+ <action issue="LOGCXX-27" type="fix">Appender threshold cannot be set in configuration files</action>
+ <action issue="LOGCXX-28" type="fix">Appender threshold cannot be set in configuration files</action>
+ <action issue="LOGCXX-29" type="fix">Appender attributes are not passed passed to setOption correctly.</action>
+ <action issue="LOGCXX-30" type="fix">StringTokenizer uses evil strtok and wcstok functions</action>
+ <action issue="LOGCXX-31" type="fix">Missing const qualifiers, Exception::getMessage() in particular.</action>
+ <action issue="LOGCXX-32" type="fix">Missing copy constructors and assignment operators</action>
+ <action issue="LOGCXX-33" type="fix">log4cxx::Exception is not derived from std::exception</action>
+ <action issue="LOGCXX-34" type="fix">Visual Studio 6 CVS build broken</action>
+ <action issue="LOGCXX-35" type="remove">Avoid use of MSXML</action>
+ <action issue="LOGCXX-36" type="add">Migrate to Apache Portable Runtime threads</action>
+ <action issue="LOGCXX-37" type="fix">Unable to build log4cxx under Borland C++</action>
+ <action issue="LOGCXX-39" type="remove">Remove DailyRollingFileAppender</action>
+ <action issue="LOGCXX-40" type="fix">PatternLayout does not support Java date format specifiers</action>
+ <action issue="LOGCXX-41" type="fix">Layout timestamp doesn't seem to adjust for daylight saving</action>
+ <action issue="LOGCXX-43" type="add">configure/make help needed</action>
+ <action issue="LOGCXX-44" type="add">GUMP integation</action>
+ <action issue="LOGCXX-45" type="fix">_T causes error : 1048576 cannot be used as a function</action>
+ <action issue="LOGCXX-46" type="fix">Extra semicolon after namespace closing paren</action>
+ <action issue="LOGCXX-47" type="fix">Check headers for missing declarations and Effective C++ violations</action>
+ <action issue="LOGCXX-48" type="add">Use hex representation for thread identifier</action>
+ <action issue="LOGCXX-49" type="add">Move timezone specification into pattern, remove locale specification</action>
+ <action issue="LOGCXX-50" type="fix">variable name clash in macro</action>
+ <action issue="LOGCXX-52" type="add">Migrate log4j 1.3 RollingFileAppender</action>
+ <action issue="LOGCXX-53" type="fix">Problems compiling with MsDev 6.0 (space in paths)</action>
+ <action issue="LOGCXX-54" type="fix">Eliminate use of boost-regex in unit tests</action>
+ <action issue="LOGCXX-55" type="add">DailyRolling File Appender</action>
+ <action issue="LOGCXX-56" type="fix">BasicConfiguration is unreliable</action>
+ <action issue="LOGCXX-57" type="add">Port log4j performance test</action>
+ <action issue="LOGCXX-58" type="fix">ImmediateFlush'd FileAppenders extremely slow on Windows</action>
+ <action issue="LOGCXX-59" type="update">Implement encoding support for Writer appender</action>
+ <action issue="LOGCXX-60" type="fix">XML layout can be mismatched with document encoding</action>
+ <action issue="LOGCXX-62" type="update">log4cxx 0.10.0 release</action>
+ <action issue="LOGCXX-63" type="update">Platform appropriate line-feed convention</action>
+ <action issue="LOGCXX-64" type="update">Migrate to APR network IO</action>
+ <action issue="LOGCXX-66" type="fix">SyslogAppender append method currently stubbed out</action>
+ <action issue="LOGCXX-67" type="fix">NTEventLogAppender always uses RPC method for logging and has inadequate error handling.</action>
+ <action issue="LOGCXX-70" type="fix">Logic flaws in StringHelper::startsWith and StringHelper::endsWith</action>
+ <action issue="LOGCXX-71" type="update">Update performance page on web site</action>
+ <action issue="LOGCXX-72" type="update">INSTALL out of date</action>
+ <action issue="LOGCXX-73" type="fix">Not loading configuration from log4cxx.properties or log4cxx.xml</action>
+ <action issue="LOGCXX-74" type="add">MinGW build</action>
+ <action issue="LOGCXX-75" type="add">Cygwin build</action>
+ <action issue="LOGCXX-76" type="add">user.home, user.dir, java.io.tmpdir available within configuration files</action>
+ <action issue="LOGCXX-77" type="fix">Static builds broken</action>
+ <action issue="LOGCXX-79" type="update">configure check for apr-util</action>
+ <action issue="LOGCXX-80" type="update">Migrated network appenders to APR network IO</action>
+ <action issue="LOGCXX-81" type="fix">SimpleDateFormat does not compile on Solaris 2.95.2 gcc</action>
+ <action issue="LOGCXX-82" type="fix">Compiling with stream.h in multiple object files errors</action>
+ <action issue="LOGCXX-83" type="fix">log4cxx::Level::ERROR fails to compile when GDI enabled</action>
+ <action issue="LOGCXX-84" type="fix">Problems with stream logging in UTF8, no WCHAR_T build</action>
+ <action issue="LOGCXX-85" type="update">Mac OS/X fixes and enhancements</action>
+ <action issue="LOGCXX-86" type="add">Add TRACE level</action>
+ <action issue="LOGCXX-87" type="update">Remove remaining uses of Category and Priority</action>
+ <action issue="LOGCXX-88" type="update">Explore use of security-enhanced CRT methods</action>
+ <action issue="LOGCXX-94" type="update">simplesocketserver.cpp should use LOG4CXX_STR("...") not L"..."</action>
+ <action issue="LOGCXX-98" type="fix">Gump build fails for log4cxx-ant-no-wchar-t target</action>
+ <action issue="LOGCXX-100" type="fix">Fixes for ODBCAppender</action>
+ <action issue="LOGCXX-103" type="update">Much of CVS HEAD seems #if 0 out, especially ResourceBundle stuff</action>
+ <action issue="LOGCXX-104" type="fix">ODBCAppender::close does not check if appender is already closed</action>
+ <action issue="LOGCXX-105" type="fix">Infinite loop in string replacing</action>
+ <action issue="LOGCXX-106" type="fix">maxFileSize has bad type in SizeBasedTriggeringPolicy file</action>
+ <action issue="LOGCXX-107" type="fix">Can't compile log4cxx in ascii on Windows</action>
+ <action issue="LOGCXX-110" type="fix">try fix 64bit log4cxx_intptr_t</action>
+ <action issue="LOGCXX-111" type="update">make Logger cache a LoggerRepositoryPtr instead of a "blind" pointer</action>
+ <action issue="LOGCXX-112" type="update">change "static" to "auto" for Transcoder::decode() decoder and CharsetDecoder::getDefaultDecoder() decoder</action>
+ <action issue="LOGCXX-113" type="update">separate apr detection m4 codes from aclocal.m4</action>
+ <action issue="LOGCXX-114" type="update">Upgrade APR to 1.2.2 from 1.1.0</action>
+ <action issue="LOGCXX-115" type="fix">SVN head does not compile with Borland C++ compiler</action>
+ <action issue="LOGCXX-116" type="fix">SVN head does not compiler with MinGW compiler</action>
+ <action issue="LOGCXX-117" type="fix">Memory leak with ThreadSpecificData on Win32</action>
+ <action issue="LOGCXX-118" type="fix">Hierarchy corrupts with PropertyConfigurator</action>
+ <action issue="LOGCXX-119" type="fix">ndctestcase not working</action>
+ <action issue="LOGCXX-120" type="fix">Wrong parameter description in Patternlayout</action>
+ <action issue="LOGCXX-123" type="fix">UTF-8 build fails on Linux</action>
+ <action issue="LOGCXX-124" type="fix">wchar_t constructor missing in class NDC</action>
+ <action issue="LOGCXX-125" type="update">L7dTestCase is stubbed out</action>
+ <action issue="LOGCXX-126" type="fix">std::cout stops working if log4cxx is first to output</action>
+ <action issue="LOGCXX-127" type="fix">Main build.xml not referencing "env" properly.</action>
+ <action issue="LOGCXX-129" type="fix">Asyncappender is full of race conditions (improper use of condition variables)</action>
+ <action issue="LOGCXX-130" type="fix">Compile fails on gcc4.1</action>
+ <action issue="LOGCXX-131" type="fix">TimeBasedRollingPolicy is declared "abstract"</action>
+ <action issue="LOGCXX-132" type="fix">various segmentation faults in multithreaded application</action>
+ <action issue="LOGCXX-133" type="fix">Missing parenthesis in LOG4CXX_ASSERT</action>
+ <action issue="LOGCXX-134" type="fix">FileAppender could create missing directories</action>
+ <action issue="LOGCXX-135" type="update">Use std::string with logstream</action>
+ <action issue="LOGCXX-136" type="fix">DailyRollingFileAppender not using Property options</action>
+ <action issue="LOGCXX-138" type="fix">XMLLayoutTestCase output and filtered output gets overwritten</action>
+ <action issue="LOGCXX-139" type="fix">XMLLayoutTestCase uses inadequate filters for 64 bit platforms</action>
+ <action issue="LOGCXX-140" type="fix">Handle leak with LoggingEvent::getCurrentThreadName</action>
+ <action issue="LOGCXX-141" type="update">Upgrade to APR 1.2.7 or later</action>
+ <action issue="LOGCXX-142" type="fix">socketservertestcase.cpp does not compile with Sun Studio 11 on Solaris</action>
+ <action issue="LOGCXX-143" type="fix">-xarch=v8plus should be removed from Makefile.in</action>
+ <action issue="LOGCXX-146" type="fix">DailyRollingFileAppender::~DailyRollingFileAppender must call finalize</action>
+ <action issue="LOGCXX-149" type="fix">make dist does not work</action>
+ <action issue="LOGCXX-150" type="fix">logstream's operator&lt;&lt; declared in the wrong namespace</action>
+ <action issue="LOGCXX-151" type="fix">Umlauts as literal in patternlayout won't be logged correct</action>
+ <action issue="LOGCXX-152" type="fix">gcc warning about cast from `const void*' to `log4cxx::helpers::Object*' discards qualifiers from pointer target typ</action>
+ <action issue="LOGCXX-153" type="add">Automate log4cxx site and doxygen generation and deployment</action>
+ <action issue="LOGCXX-155" type="update">Update source headers per new ASF header policy</action>
+ <action issue="LOGCXX-156" type="update">immediate flush in console appender</action>
+ <action issue="LOGCXX-157" type="fix">make install fails since @manual_dest@ replacement is missing in Makefiles</action>
+ <action issue="LOGCXX-158" type="fix">tolower not defined in stringhelper.cpp</action>
+ <action issue="LOGCXX-159" type="fix">Initialization of local static objects out of order on Linux</action>
+ <action issue="LOGCXX-160" type="fix">helpers/object.h: DECLARE_LOG4CXX_OBJECT macro definition is missing virtual destructor declaration</action>
+ <action issue="LOGCXX-161" type="fix">Using RollingFileAppender increases the working set with each rollover</action>
+ <action issue="LOGCXX-162" type="fix">Problem printing string with embedded NULL character</action>
+ <action issue="LOGCXX-163" type="fix">liblog4cxx (svn 480882) does not link on Mac OS X 10.4</action>
+ <action issue="LOGCXX-164" type="fix">XMLSocketAppender is disabled</action>
+ <action issue="LOGCXX-165" type="fix">XMLSocketAppender may generate erroneous output due to mismatched encoding</action>
+ <action issue="LOGCXX-167" type="fix">system locale charmap is not determined properly on Fedora Core 6</action>
+ <action issue="LOGCXX-168" type="fix">log4j.dtd does not contain rollingPolicy and other o.a.l.r.RFA elements</action>
+ <action issue="LOGCXX-169" type="fix">XMLLayoutTestCase fails on compilers that do not provide location info</action>
+ <action issue="LOGCXX-171" type="add">Add project description file for projects.apache.org</action>
+ <action issue="LOGCXX-172" type="fix">configure fail with ".infig.status: error: cannot find input file:"</action>
+ <action issue="LOGCXX-175" type="fix">APRCharsetEncoder is not thread safe</action>
+ <action issue="LOGCXX-177" type="fix">SocketImpl::accept uses private APR function: apr_wait_for_io_or_timeout</action>
+ <action issue="LOGCXX-178" type="fix">Link failure if wchar_t cannot be determined as UTF-16 or UTF-32</action>
+ <action issue="LOGCXX-179" type="add">example applications do SIGABRT on aix 5.2</action>
+ <action issue="LOGCXX-180" type="fix">Build fails at domconfigurator.h</action>
+ <action issue="LOGCXX-181" type="fix">Level::DEBUG and other non-local statics cause crash on app shutdown on AIX</action>
+ <action issue="LOGCXX-182" type="fix">missing man page for simplesocketserver</action>
+ <action issue="LOGCXX-183" type="fix">Compiler warning: dereferencing type-punned pointer will break strict-aliasing rules</action>
+ <action issue="LOGCXX-184" type="fix">Crash when log level set to 'inherited'</action>
+ <action issue="LOGCXX-186" type="fix">Garbage characters in log files when log requests from multiple threads with hyperthreading enabled</action>
+ <action issue="LOGCXX-187" type="fix">LogLog::emit() could potentially interleave messages</action>
+ <action issue="LOGCXX-188" type="update">Upgrade to apr 1.2.9 and apr-util 1.2.8</action>
+ <action issue="LOGCXX-189" type="update">Migrate to Maven 2.0 for documentation and packaging</action>
+ <action issue="LOGCXX-190" type="fix">The 'logger.h' header includes itself.</action>
+ <action issue="LOGCXX-191" type="fix">Application cores when syslog appender is given an unreachable host/ip.</action>
+ <action issue="LOGCXX-192" type="update">Suggested improvements to log4cxx webpages</action>
+ <action issue="LOGCXX-193" type="update">Please rename or remove new local variable "buf" in Logger.h macros</action>
+ <action issue="LOGCXX-194" type="fix">Garbage in log files when appenders are defined in multiple levels of the logger hierarchy</action>
+ <action issue="LOGCXX-195" type="fix">Syslog appender adds characters to output.</action>
+ <action issue="LOGCXX-196" type="fix">Syslog appender destructor can cause core</action>
+ <action issue="LOGCXX-197" type="fix">ant can't generate vc6 project</action>
+ <action issue="LOGCXX-200" type="add">Implement compression for RollingFileAppender</action>
+ <action issue="LOGCXX-201" type="add">Visual Studio 6 build</action>
+ <action issue="LOGCXX-202" type="fix">ObjectPtrT has inconsistent const-ness on accessors</action>
+ <action issue="LOGCXX-204" type="fix">PatternParserTestCase and FileNamePatternTestCase fail only with VC6</action>
+ <action issue="LOGCXX-208" type="fix">isTraceEnabled implemenation missing in logger.cpp (Revision: 592627)</action>
+ <action issue="LOGCXX-209" type="fix">A message of type wchar_t* is not beeing written correctly to the internal message buffer (Revision: 592627)</action>
+ <action issue="LOGCXX-210" type="fix">HTMLLayout NDC null check</action>
+ <action issue="LOGCXX-211" type="fix">Crash(Segmentation Fault) in DailyRollingFileAppender when file change</action>
+ <action issue="LOGCXX-212" type="fix">unittest failed</action>
+ <action issue="LOGCXX-213" type="fix">trace method implementation is missing</action>
+ <action issue="LOGCXX-214" type="fix">Possible memory leak due to fault in build process (via make)</action>
+ <action issue="LOGCXX-215" type="update">Eliminate sqlext.h from odbcappender.h</action>
+ <action issue="LOGCXX-216" type="fix">crash on program exit</action>
+ <action issue="LOGCXX-217" type="fix">Not initialized LoggerPtr segfault program.</action>
+ <action issue="LOGCXX-218" type="add">Visual Studio 8 build</action>
+ <action issue="LOGCXX-219" type="fix">suspicious warnings</action>
+ <action issue="LOGCXX-220" type="fix">Memory leaks when using MFC</action>
+ <action issue="LOGCXX-221" type="fix">ThreadID layout does not match debugger</action>
+ <action issue="LOGCXX-222" type="fix">trunk compile error.</action>
+ <action issue="LOGCXX-225" type="update">Migrate unit tests from LGPL'd CPPUNIT to an ASL'd testing framework</action>
+ <action issue="LOGCXX-226" type="update">Default configurator uses *.properties in preference to *.xml</action>
+ <action issue="LOGCXX-227" type="update">Remove @since tags</action>
+ <action issue="LOGCXX-228" type="update">Remove @author tags</action>
+ <action issue="LOGCXX-230" type="update">Align ant build options with automake</action>
+ <action issue="LOGCXX-231" type="fix">Deadlock in AsyncAppender</action>
+ <action issue="LOGCXX-232" type="update">Drop src/performance</action>
+ <action issue="LOGCXX-233" type="update">Unnecessary casts in ObjectPtrT</action>
+ <action issue="LOGCXX-234" type="fix">Assignment operator removes const qualifier</action>
+ <action issue="LOGCXX-235" type="add">Add ObjectPtrT::exchange</action>
+ <action issue="LOGCXX-236" type="fix">Re-order constructor initialiser lists to match declaration order</action>
+ <action issue="LOGCXX-237" type="fix">Include missing headers</action>
+ <action issue="LOGCXX-239" type="update">Inconsistent const qualification on logging methods.</action>
+ <action issue="LOGCXX-241" type="fix">Non-ascii named files have names mangled</action>
+ <action issue="LOGCXX-242" type="update">Eliminate log4cxx proxies for APR types</action>
+ <action issue="LOGCXX-243" type="fix">Problem Compile in Doxy</action>
+ <action issue="LOGCXX-246" type="fix">Config refresh hangs a client application that uses TelnetAppender</action>
+ <action issue="LOGCXX-247" type="fix">MSVC project has wrong additional include directories</action>
+ <action issue="LOGCXX-248" type="fix">ODBCAppender has unicode issues</action>
+ <action issue="LOGCXX-251" type="fix">NDC::cloneStack and NDC::inherit missing in 0.10.0 RC2</action>
+ <action issue="LOGCXX-252" type="add">Add documentation for use of operator&lt;&lt; in logging requests</action>
+ <action issue="LOGCXX-253" type="fix">Transcoder compilation error with utf-8 charset</action>
+ <action issue="LOGCXX-254" type="add">Add build option for static C RTL</action>
+ <action issue="LOGCXX-256" type="fix">SocketHubAppender fails after accepting connection</action>
+ <action issue="LOGCXX-257" type="fix">ServerSocket::accept hangs on Unix</action>
+ <action issue="LOGCXX-258" type="fix">unable to build from make dist package due to missing doxygen file</action>
+ <action issue="LOGCXX-259" type="fix">Several appenders fail to compile in Visual Studio 2008</action>
+ </release>
+ <release version="0.9.7" date="2004-05-10">
+ <action type="fix">Fixed examples source code in the "Short introduction to log4cxx".</action>
+ <action type="fix">Fixed, in the renaming algorithm of RollingFileAppender and DailyRollingFileAppender, a problem specific to Unicode.</action>
+ <action type="fix">Fixed conflict with Windows macros "min" and "max", by renaming StrictMath::min and StrictMath::max to StrictMath::minimum and StrictMath::maximum.</action>
+ <action type="add">Port to HPUX 11.0.</action>
+ <action type="fix">Fixed segmentation fault in PropertyConfigurator.</action>
+ <action type="add">Port to Solaris.</action>
+ <action type="fix">Fixed MutexException thrown while destroying RollingFileAppender.</action>
+ <action type="fix">Logging macros can be used without explicity declaring the use of log4cxx namespace.</action>
+ <action type="fix">Fixed static library unresolved externals for msvc 6 and 7.1</action>
+ </release>
+ <release version="0.9.6" date="2004-04-11">
+ <action type="update">Timezone management has been optimized through the class TimeZone</action>
+ <action type="update">Inter-thread synchronization and reference counting has been optimized</action>
+ <action type="update">Reference counting now uses gcc atomic functions (bug 929078)</action>
+ <action type="update">Use of StringBuffer has been optimized.</action>
+ <action type="add">Support of localisation throug resourceBundles</action>
+ <action type="update">SyslogAppender now uses the system function 'syslog' to log on the local host. (only for POSIX systems)</action>
+ <action type="add">Added TimeZone configuration to PatternLayout (bug 912563)</action>
+ <action type="add">Support of the DailyRollingFileAppender (feature request 842765)</action>
+ </release>
+ <release version="0.9.5" date="2004-02-04">
+ <action type="add">Port of log4j Jnuit tests with Cppunit and Boost Regex.</action>
+ <action type="add">Added explicit exports for MSDEV 6 and MSDEV 7 (no further need of .def files)</action>
+ <action type="add">Custom levels can be configured through the DOMConfigurator and PropertyConfigurator classes (Level inherites from Object)</action>
+ <action type="add">Added a reference counter to LoggingEvent to avoid useless copies (LoggingEvent inherites from Object)</action>
+ <action type="add">The file log4j.xml as well as the file log4j.properties are now search for, in log4cxx initialization.</action>
+ <action type="add">The root logger can be assigned the "OFF" level.</action>
+ <action type="add">Added MSVC6 project missing files mutext.cpp and condition.cpp (bug 847397)</action>
+ <action type="fix">condition.cpp now compiles with MSVC6 (bug 847417)</action>
+ <action type="fix">fixed pure virtual function call in PropertyConfigurator::configureAndWatch (bug 848521)</action>
+ <action type="fix">XMLAppender now displays correct timestamp with MSVC 6 (bug 852836)</action>
+ <action type="add">SRLPORT 4.6 support.</action>
+ <action type="fix">Fixed an infinite loop in class Properties.</action>
+ <action type="fix">Fixed compilations problems with unicode.</action>
+ <action type="fix">Fixed SocketAppender bug concerning MDC and NDC.</action>
+ </release>
+ <release version="0.9.4" date="2003-10-25">
+ <action type="update">StringBuffer has been optimized.</action>
+ <action type="fix">Fixed miscellaneous threading problems.</action>
+ <action type="add">Added TimeZone support in PatternLayout (bug 796894)</action>
+ <action type="fix">Fixed threading configuration problems (bug 809125)</action>
+ <action type="fix">Fixed miscellaneous MSVC and cygwin compilation problems.</action>
+ </release>
+ <release version="0.9.3" date="2003-09-19">
+ <action type="update">Changed tstring to log4cxx::String and tostringstream to log4cxx::StringBuffer.</action>
+ <action type="fix">Fixed MSVC 2003 compilation erros and warnings.</action>
+ <action type="add">Added helpers for NDC and MDC.</action>
+ <action type="add">Added TimeZone support in TTCCLayout.</action>
+ <action type="fix">Fixed compilation problems with logger macros (LOG4CXX_...)</action>
+ <action type="fix">Fixed milliseconds formatting problem with MSVC 6.0 and 2003</action>
+ <action type="fix">Fixed AsyncAppender crash</action>
+ <action type="add">Added new tests </action>
+ <action type="add">Added benchmarks</action>
+ </release>
+ <release version="0.9.2" date="2003-08-10">
+ <action type="fix">Fixed FreeBSD compilation problem with pthread mutex (class CriticalSection).</action>
+ <action type="fix">Fixed milliseconds formatting problem (class DateFormat).</action>
+ <action type="add">Long events (&gt; 1024 chars) are now supported in the class XMLSocketAppender.</action>
+ <action type="update">Carriage returns have been normalized in the class XMLLayout.</action>
+ </release>
+ <release version="0.9.1" date="2003-08-06">
+ <action type="fix">Fixed deadlock problems in classes Logger and AsyncAppender.</action>
+ <action type="fix">Fixed MSVC 6.0 compilation problems.</action>
+ <action type="add">Added MSVC 6.0 static libraty project.</action>
+ <action type="update">Default configuration for the SMTP options is "no".</action>
+ </release>
+ <release version="0.9.0" date="2003-08-06">
+ <action type="add">Added ODBCAppender (matching log4j JDBCAppender)</action>
+ <action type="add">Added SyslogAppender</action>
+ <action type="add">Added SMTPAppender (only for Linux/FreeBSD)</action>
+ <action type="add">Added BasicConfigurator</action>
+ <action type="add">Added a FileWatchDog in PropertyConfigurator and DOMConfigurator</action>
+ <action type="add">Possibility to load a custom LoggerFactory through the DOMConfigurator</action>
+ <action type="add">Changed time precision from seconds to milliseconds</action>
+ <action type="add">Added MSVC 6.0 'Unicode Debug' and 'Unicode Release' targets</action>
+ <action type="add">Added Java like System class.</action>
+ </release>
+ <release version="0.1.1" date="2003-07-09">
+ <action type="fix">Fixed MSVC 6.0 compilation problems concerning the 'Release' target</action>
+ <action type="add">Added MSVC 6.0 tests projects</action>
+ </release>
+ <release version="0.1.0" date="2003-07-08">
+ <action type="add">FreeBSD Autotools/Compilation support</action>
+ <action type="fix">Fixed TelnetAppender crash when a socket bind exception occured.</action>
+ <action type="add">Added log4j DTD support to XMLLayout and DOMConfigurator</action>
+ <action type="add">Can now send events in XML format over TCP (class XMLSocketAppender) for the log4j Chainsaw UI</action>
+ <action type="add">Now compiles with 'configure --enable-unicode' (UTF16 Unicode support)</action>
+ <action type="add">Added Java like Properties class. It's a helper for the PropertyConfigurator</action>
+ <action type="add">Added Java like objects with dynamic cast and instanciation. Custom objects can be configured through the DOMConfigurator and PropertyConfigurator classes</action>
+ <action type="add">Port of the PropertyConfigurator class</action>
+ <action type="add">Port of the "Map Diagnostic Context" (MDC) class</action>
+ <action type="add">Added 13 tests (try make check)</action>
+ </release>
+ <release version="0.0.1" date="2003-05-31">
+ <action type="add">Loggers, Hierarchy, Filters, Appenders, Layouts, NDC</action>
+ <action type="add">Appenders:
+ AsyncAppender, ConsoleAppender, FileAppender, NTEventLogAppender,
+ RollingFileAppender, SocketAppender, SocketHubAappender,
+ TelnetAppender
+ </action>
+ <action type="add">Layouts:
+ HTMLLayout, PatternLayout, SimpleLayout, TTCCLayout, XMLLayout
+ </action>
+ <action type="add">Filters:
+ DenyAllFilter, LevelMatchFilter, LevelRangeFilter, StringMatchFilter
+ </action>
+ <action type="add">Configurators: DOMConfigurator</action>
+ </release>
+ </body>
</document>
diff --git a/src/changes/changes.xslt b/src/changes/changes.xslt
deleted file mode 100644
index 1108ea7..0000000
--- a/src/changes/changes.xslt
+++ /dev/null
@@ -1,225 +0,0 @@
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xsl:version="1.0">
-
- <xsl:output method="xml" indent="yes"/>
-
- <xsl:apply-templates select="/"/>
-
- <xsl:template match="/">
- <xsl:comment>
-
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- </xsl:comment>
- <document>
- <properties>
- <title>Apache log4cxx</title>
- </properties>
- <body>
-
- <release version="0.10.0" date="2008-02-29" description="First Apache release">
- <xsl:apply-templates select='/rss/channel/item'>
- <xsl:sort select="substring-after(key, '-')" data-type="number"/>
- </xsl:apply-templates>
- </release>
-
-<release version="0.9.7" date="2004-05-10">
-<action type="fix">Fixed examples source code in the "Short introduction to log4cxx".</action>
-<action type="fix">Fixed, in the renaming algorithm of RollingFileAppender and
- DailyRollingFileAppender, a problem specific to Unicode.</action>
-<action type="fix">Fixed conflict with Windows macros "min" and "max", by renaming
- StrictMath::min and StrictMath::max to StrictMath::minimum and
- StrictMath::maximum.</action>
-<action type="add">Port to HPUX 11.0.</action>
-<action type="fix">Fixed segmentation fault in PropertyConfigurator.</action>
-<action type="add">Port to Solaris.</action>
-<action type="fix">Fixed MutexException thrown while destroying RollingFileAppender.</action>
-<action type="fix">Logging macros can be used without explicity declaring the use of log4cxx namespace.</action>
-<action type="fix">Fixed static library unresolved externals for msvc 6 and 7.1</action>
-</release>
-<release version="0.9.6" date="2004-04-11">
-<action>Timezone management has been optimized through the class TimeZone</action>
-<action>Inter-thread synchronization and reference counting has been optimized</action>
-<action>Reference counting now uses gcc atomic functions (bug 929078)</action>
-<action>Use of StringBuffer has been optimized.</action>
-<action>Support of localisation throug resourceBundles</action>
-<action>SyslogAppender now uses the system function 'syslog' to log on the local host.
- (only for POSIX systems)</action>
-<action>Added TimeZone configuration to PatternLayout (bug 912563)</action>
-<action>Support of the DailyRollingFileAppender (feature request 842765)</action>
-</release>
-<release version="0.9.5" date="2004-02-04">
-<action>Port of log4j Jnuit tests with Cppunit and Boost Regex.</action>
-<action>Added explicit exports for MSDEV 6 and MSDEV 7 (no further need of .def files)</action>
-<action>Custom levels can be configured through the DOMConfigurator and
- PropertyConfigurator classes (Level inherites from Object)</action>
-<action>Added a reference counter to LoggingEvent to avoid useless copies
- (LoggingEvent inherites from Object)</action>
-<action>The file log4j.xml as well as the file log4j.properties are now search
- for, in log4cxx initialization.</action>
-<action>The root logger can be assigned the "OFF" level.</action>
-<action>Added MSVC6 project missing files mutext.cpp and condition.cpp (bug 847397)</action>
-<action>condition.cpp now compiles with MSVC6 (bug 847417)</action>
-<action>fixed pure virtual function call in PropertyConfigurator::configureAndWatch
- (bug 848521)</action>
-<action>XMLAppender now displays correct timestamp with MSVC 6 (bug 852836)</action>
-<action>SRLPORT 4.6 support.</action>
-<action>Fixed an infinite loop in class Properties.</action>
-<action>Fixed compilations problems with unicode.</action>
-<action>Fixed SocketAppender bug concerning MDC and NDC.</action>
-</release>
-<release version="0.9.4" date="2003-10-25">
-<action>StringBuffer has been optimized.</action>
-<action>Fixed miscellaneous threading problems.</action>
-<action>Added TimeZone support in PatternLayout (bug 796894)</action>
-<action>Fixed threading configuration problems (bug 809125)</action>
-<action>Fixed miscellaneous MSVC and cygwin compilation problems.</action>
-</release>
-<release version="0.9.3" date="2003-09-19">
-<action>Changed tstring to log4cxx::String and tostringstream to
- log4cxx::StringBuffer.
-</action>
-<action>Fixed MSVC 2003 compilation erros and warnings.
-</action>
-<action>Added helpers for NDC and MDC.
-</action>
-<action>Added TimeZone support in TTCCLayout.
-</action>
-<action>Fixed compilation problems with logger macros (LOG4CXX_...)
-</action>
-<action>Fixed milliseconds formatting problem with MSVC 6.0 and 2003
-</action>
-<action>Fixed AsyncAppender crash
-</action>
-<action>Added new tests
-</action>
-<action>Added benchmarks
-</action>
-</release>
-<release version="0.9.2" date="2003-08-10">
-<action>Fixed FreeBSD compilation problem with pthread mutex (class CriticalSection).
-</action>
-<action>Fixed milliseconds formatting problem (class DateFormat).
-</action>
-<action>Long events (&gt; 1024 chars) are now supported in the class XMLSocketAppender.
-</action>
-<action>Carriage returns have been normalized in the class XMLLayout.
-</action>
-</release>
-<release version="0.9.1" date="2003-08-06">
-<action>Fixed deadlock problems in classes Logger and AsyncAppender.
-</action>
-<action>Fixed MSVC 6.0 compilation problems.
-</action>
-<action>Added MSVC 6.0 static libraty project.
-</action>
-<action>Default configuration for the SMTP options is "no".
-</action>
-</release>
-<release version="0.9.0" date="2003-08-06">
-<action>Added ODBCAppender (matching log4j JDBCAppender)
-</action>
-<action>Added SyslogAppender
-</action>
-<action>Added SMTPAppender (only for Linux/FreeBSD)
-</action>
-<action>Added BasicConfigurator
-</action>
-<action>Added a FileWatchDog in PropertyConfigurator and DOMConfigurator
-</action>
-<action>Possibility to load a custom LoggerFactory through the DOMConfigurator
-</action>
-<action>Changed time precision from seconds to milliseconds
-</action>
-<action>Added MSVC 6.0 'Unicode Debug' and 'Unicode Release' targets
-</action>
-<action>Added Java like System class.
-</action>
-</release>
-<release version="0.1.1" date="2003-07-09">
-<action>Fixed MSVC 6.0 compilation problems concerning the 'Release' target
-</action>
-<action>Added MSVC 6.0 tests projects
-</action>
-</release>
-<release version="0.1.0" date="2003-07-08">
-<action>FreeBSD Autotools/Compilation support
-</action>
-<action>Fixed TelnetAppender crash when a socket bind exception occured.
-</action>
-<action>Added log4j DTD support to XMLLayout and DOMConfigurator
-</action>
-<action>Can now send events in XML format over TCP (class XMLSocketAppender) for the
- log4j Chainsaw UI
-</action>
-<action>Now compiles with 'configure --enable-unicode' (UTF16 Unicode support)
-</action>
-<action>Added Java like Properties class. It's a helper for the PropertyConfigurator
-</action>
-<action>Added Java like objects with dynamic cast and instanciation. Custom objects
- can be configured through the DOMConfigurator and PropertyConfigurator classes
-</action>
-<action>Port of the PropertyConfigurator class
-</action>
-<action>Port of the "Map Diagnostic Context" (MDC) class
-</action>
-<action>Added 13 tests (try make check)
-</action>
-</release>
-<release version="0.0.1" date="2003-05-31">
-<action type="add">Loggers, Hierarchy, Filters, Appenders, Layouts, NDC
-</action>
-<action type="add">Appenders:
- AsyncAppender, ConsoleAppender, FileAppender, NTEventLogAppender,
- RollingFileAppender, SocketAppender, SocketHubAappender,
- TelnetAppender
-</action>
-<action type="add">Layouts:
- HTMLLayout, PatternLayout, SimpleLayout, TTCCLayout, XMLLayout
-</action>
-<action type="add">Filters:
- DenyAllFilter, LevelMatchFilter, LevelRangeFilter, StringMatchFilter
-
-</action>
-<action type="add">Configurators:
- DOMConfigurator
-</action>
-</release>
- </body>
-</document>
-</xsl:template>
-
-<xsl:template match="item">
- <action issue="{key}"><xsl:value-of select="summary"/></action>
-</xsl:template>
-
-</xsl:transform>
diff --git a/src/site/apt/building/maven.apt b/src/site/apt/building/maven.apt
index a40e313..4775fea 100644
--- a/src/site/apt/building/maven.apt
+++ b/src/site/apt/building/maven.apt
@@ -22,31 +22,31 @@
Building Apache log4cxx with Apache Maven 2
{{{http://maven.apache.org}Apache Maven 2}} is used to generate the release assemblies and generate
- product documentation. It delegates to the {{{ant.html}Apache Ant build}} to build
- and test log4cxx and can be used as an alternate front end to the Ant
+ product documentation. It delegates to the {{{./ant.html}Apache Ant build}} to build
+ and test log4cxx and can be used as an alternate front end to the Ant
build process since it can automatically download and use ant-contrib,
cpptasks and log4j.
The Maven build, like the Ant build, can build APR and APR-Util from source.
* Quick start:
-
+
*Install {{{http://maven.apache.org}Apache Maven}} 2.0.8 or later.
*Install APR and APR-Util or place source in apr and apr-util directories in same parent directory
as log4cxx directory.
-
- Building and testing log4cxx on a Unix platform with packaged APR and APR-Util.
+
+ Building and testing log4cxx on a Unix platform with packaged APR and APR-Util.
+----+
sudo apt-get install libapr1.0-dev libaprutil1.0-dev doxygen
cd apache-log4cxx-0.10.0
export PATH=/home/myself/maven-2.0.8/bin:$PATH
mvn package
-+----+
++----+
- Building and testing log4cxx on a Microsoft Windows with APR and APR-Util built from source.
+ Building and testing log4cxx on a Microsoft Windows with APR and APR-Util built from source.
+----+
set PATH=\maven-2.0.8\bin;%PATH%
@@ -56,7 +56,7 @@ Building Apache log4cxx with Apache Maven 2
rename apr-util-1.2.12 apr-util
cd apache-log4cxx-0.10.0
mvn package
-+----+
++----+
@@ -78,18 +78,18 @@ Building Apache log4cxx with Apache Maven 2
| clean | Delete all generated files. |
*--------------------------+---------------------------------------------------------------------------------------------+
- All build products will be placed in the target subdirectory.
+ All build products will be placed in the target subdirectory.
It is not possible to directly pass options to the Ant build, however the ant build will read
any build.properties file in the log4cxx directory.
-
- SMTP and ODBC options can depend on libraries that
+
+ SMTP and ODBC options can depend on libraries that
that have different licenses.
You should review the corresponding licenses and understand
the implications before redistribution.
* Platform specific notes:
- See the {{{ant.html}Apache Ant build}} for platform specific notes.
-
-
+ See the {{{./ant.html}Apache Ant build}} for platform specific notes.
+
+
diff --git a/src/site/apt/index.apt b/src/site/apt/index.apt
new file mode 100644
index 0000000..8148e75
--- /dev/null
+++ b/src/site/apt/index.apt
@@ -0,0 +1,56 @@
+~~ Licensed to the Apache Software Foundation (ASF) under one or more
+~~ contributor license agreements. See the NOTICE file distributed with
+~~ this work for additional information regarding copyright ownership.
+~~ The ASF licenses this file to You under the Apache License, Version 2.0
+~~ (the "License"); you may not use this file except in compliance with
+~~ the License. You may obtain a copy of the License at
+~~
+~~ http://www.apache.org/licenses/LICENSE-2.0
+~~
+~~ Unless required by applicable law or agreed to in writing, software
+~~ distributed under the License is distributed on an "AS IS" BASIS,
+~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+~~ See the License for the specific language governing permissions and
+~~ limitations under the License.
+ ------
+Short introduction to Apache log4cxx
+ ------
+ ------
+ ------
+
+Short introduction to Apache log4cxx
+
+ Apache log4cxx is currently undergoing Incubation at the Apache Software Foundation.
+
+ Apache log4cxx is a logging framework for C++ patterned after
+ {{{http://logging.apache.org/log4j}Apache log4j}}, which uses
+ {{{http://apr.apache.org}Apache Portable Runtime}} for most platform-specific code and should
+ be usable on any platform supported by APR. Apache log4cxx is licensed under the
+ {{{http://www.apache.org/licenses}Apache License}}, an open source license certified by the
+ {{{http://www.opensource.org}Open Source Initiative}}.
+
+ Almost every large application includes its own logging or tracing API. Inserting log
+ statements into code is a low-tech method for debugging it. It may also be the only way because
+ debuggers are not always available or applicable. This is usually the case for multithreaded
+ applications and distributed applications at large.
+
+ Experience indicates that logging is an important component of the development cycle. It offers
+ several advantages. It provides precise <em>context</em> about a run of the application. Once
+ inserted into the code, the generation of logging output requires no human intervention.
+ Moreover, log output can be saved in persistent medium to be studied at a later time. In
+ addition to its use in the development cycle, a sufficiently rich logging package can also be
+ viewed as an auditing tool.
+
+ Logging does have its drawbacks. It can slow down an application. If too verbose, it can cause
+ scrolling blindness. To alleviate these concerns, log4cxx is designed to be reliable, fast and
+ extensible. Since logging is rarely the main focus of an application, the log4cxx API strives
+ to be simple to understand and to use.
+
+Disclaimer
+
+ Apache log4cxx is an effort undergoing incubation at The Apache Software Foundation (ASF),
+ sponsored by Apache Logging Services. Incubation is required of all newly accepted
+ projects until a further review indicates that the infrastructure, communications, and decision
+ making process have stabilized in a manner consistent with other successful ASF projects. While
+ incubation status is not necessarily a reflection of the completeness or stability of the code,
+ it does indicate that the project has yet to be fully endorsed by the ASF. \ No newline at end of file
diff --git a/src/site/doxy/DTDs/xhtml-lat1.ent b/src/site/doxy/DTDs/xhtml-lat1.ent
new file mode 100644
index 0000000..ffee223
--- /dev/null
+++ b/src/site/doxy/DTDs/xhtml-lat1.ent
@@ -0,0 +1,196 @@
+<!-- Portions (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % HTMLlat1 PUBLIC
+ "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
+ %HTMLlat1;
+-->
+
+<!ENTITY nbsp "&#160;"> <!-- no-break space = non-breaking space,
+ U+00A0 ISOnum -->
+<!ENTITY iexcl "&#161;"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
+<!ENTITY cent "&#162;"> <!-- cent sign, U+00A2 ISOnum -->
+<!ENTITY pound "&#163;"> <!-- pound sign, U+00A3 ISOnum -->
+<!ENTITY curren "&#164;"> <!-- currency sign, U+00A4 ISOnum -->
+<!ENTITY yen "&#165;"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
+<!ENTITY brvbar "&#166;"> <!-- broken bar = broken vertical bar,
+ U+00A6 ISOnum -->
+<!ENTITY sect "&#167;"> <!-- section sign, U+00A7 ISOnum -->
+<!ENTITY uml "&#168;"> <!-- diaeresis = spacing diaeresis,
+ U+00A8 ISOdia -->
+<!ENTITY copy "&#169;"> <!-- copyright sign, U+00A9 ISOnum -->
+<!ENTITY ordf "&#170;"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
+<!ENTITY laquo "&#171;"> <!-- left-pointing double angle quotation mark
+ = left pointing guillemet, U+00AB ISOnum -->
+<!ENTITY not "&#172;"> <!-- not sign = angled dash,
+ U+00AC ISOnum -->
+<!ENTITY shy "&#173;"> <!-- soft hyphen = discretionary hyphen,
+ U+00AD ISOnum -->
+<!ENTITY reg "&#174;"> <!-- registered sign = registered trade mark sign,
+ U+00AE ISOnum -->
+<!ENTITY macr "&#175;"> <!-- macron = spacing macron = overline
+ = APL overbar, U+00AF ISOdia -->
+<!ENTITY deg "&#176;"> <!-- degree sign, U+00B0 ISOnum -->
+<!ENTITY plusmn "&#177;"> <!-- plus-minus sign = plus-or-minus sign,
+ U+00B1 ISOnum -->
+<!ENTITY sup2 "&#178;"> <!-- superscript two = superscript digit two
+ = squared, U+00B2 ISOnum -->
+<!ENTITY sup3 "&#179;"> <!-- superscript three = superscript digit three
+ = cubed, U+00B3 ISOnum -->
+<!ENTITY acute "&#180;"> <!-- acute accent = spacing acute,
+ U+00B4 ISOdia -->
+<!ENTITY micro "&#181;"> <!-- micro sign, U+00B5 ISOnum -->
+<!ENTITY para "&#182;"> <!-- pilcrow sign = paragraph sign,
+ U+00B6 ISOnum -->
+<!ENTITY middot "&#183;"> <!-- middle dot = Georgian comma
+ = Greek middle dot, U+00B7 ISOnum -->
+<!ENTITY cedil "&#184;"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
+<!ENTITY sup1 "&#185;"> <!-- superscript one = superscript digit one,
+ U+00B9 ISOnum -->
+<!ENTITY ordm "&#186;"> <!-- masculine ordinal indicator,
+ U+00BA ISOnum -->
+<!ENTITY raquo "&#187;"> <!-- right-pointing double angle quotation mark
+ = right pointing guillemet, U+00BB ISOnum -->
+<!ENTITY frac14 "&#188;"> <!-- vulgar fraction one quarter
+ = fraction one quarter, U+00BC ISOnum -->
+<!ENTITY frac12 "&#189;"> <!-- vulgar fraction one half
+ = fraction one half, U+00BD ISOnum -->
+<!ENTITY frac34 "&#190;"> <!-- vulgar fraction three quarters
+ = fraction three quarters, U+00BE ISOnum -->
+<!ENTITY iquest "&#191;"> <!-- inverted question mark
+ = turned question mark, U+00BF ISOnum -->
+<!ENTITY Agrave "&#192;"> <!-- latin capital letter A with grave
+ = latin capital letter A grave,
+ U+00C0 ISOlat1 -->
+<!ENTITY Aacute "&#193;"> <!-- latin capital letter A with acute,
+ U+00C1 ISOlat1 -->
+<!ENTITY Acirc "&#194;"> <!-- latin capital letter A with circumflex,
+ U+00C2 ISOlat1 -->
+<!ENTITY Atilde "&#195;"> <!-- latin capital letter A with tilde,
+ U+00C3 ISOlat1 -->
+<!ENTITY Auml "&#196;"> <!-- latin capital letter A with diaeresis,
+ U+00C4 ISOlat1 -->
+<!ENTITY Aring "&#197;"> <!-- latin capital letter A with ring above
+ = latin capital letter A ring,
+ U+00C5 ISOlat1 -->
+<!ENTITY AElig "&#198;"> <!-- latin capital letter AE
+ = latin capital ligature AE,
+ U+00C6 ISOlat1 -->
+<!ENTITY Ccedil "&#199;"> <!-- latin capital letter C with cedilla,
+ U+00C7 ISOlat1 -->
+<!ENTITY Egrave "&#200;"> <!-- latin capital letter E with grave,
+ U+00C8 ISOlat1 -->
+<!ENTITY Eacute "&#201;"> <!-- latin capital letter E with acute,
+ U+00C9 ISOlat1 -->
+<!ENTITY Ecirc "&#202;"> <!-- latin capital letter E with circumflex,
+ U+00CA ISOlat1 -->
+<!ENTITY Euml "&#203;"> <!-- latin capital letter E with diaeresis,
+ U+00CB ISOlat1 -->
+<!ENTITY Igrave "&#204;"> <!-- latin capital letter I with grave,
+ U+00CC ISOlat1 -->
+<!ENTITY Iacute "&#205;"> <!-- latin capital letter I with acute,
+ U+00CD ISOlat1 -->
+<!ENTITY Icirc "&#206;"> <!-- latin capital letter I with circumflex,
+ U+00CE ISOlat1 -->
+<!ENTITY Iuml "&#207;"> <!-- latin capital letter I with diaeresis,
+ U+00CF ISOlat1 -->
+<!ENTITY ETH "&#208;"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
+<!ENTITY Ntilde "&#209;"> <!-- latin capital letter N with tilde,
+ U+00D1 ISOlat1 -->
+<!ENTITY Ograve "&#210;"> <!-- latin capital letter O with grave,
+ U+00D2 ISOlat1 -->
+<!ENTITY Oacute "&#211;"> <!-- latin capital letter O with acute,
+ U+00D3 ISOlat1 -->
+<!ENTITY Ocirc "&#212;"> <!-- latin capital letter O with circumflex,
+ U+00D4 ISOlat1 -->
+<!ENTITY Otilde "&#213;"> <!-- latin capital letter O with tilde,
+ U+00D5 ISOlat1 -->
+<!ENTITY Ouml "&#214;"> <!-- latin capital letter O with diaeresis,
+ U+00D6 ISOlat1 -->
+<!ENTITY times "&#215;"> <!-- multiplication sign, U+00D7 ISOnum -->
+<!ENTITY Oslash "&#216;"> <!-- latin capital letter O with stroke
+ = latin capital letter O slash,
+ U+00D8 ISOlat1 -->
+<!ENTITY Ugrave "&#217;"> <!-- latin capital letter U with grave,
+ U+00D9 ISOlat1 -->
+<!ENTITY Uacute "&#218;"> <!-- latin capital letter U with acute,
+ U+00DA ISOlat1 -->
+<!ENTITY Ucirc "&#219;"> <!-- latin capital letter U with circumflex,
+ U+00DB ISOlat1 -->
+<!ENTITY Uuml "&#220;"> <!-- latin capital letter U with diaeresis,
+ U+00DC ISOlat1 -->
+<!ENTITY Yacute "&#221;"> <!-- latin capital letter Y with acute,
+ U+00DD ISOlat1 -->
+<!ENTITY THORN "&#222;"> <!-- latin capital letter THORN,
+ U+00DE ISOlat1 -->
+<!ENTITY szlig "&#223;"> <!-- latin small letter sharp s = ess-zed,
+ U+00DF ISOlat1 -->
+<!ENTITY agrave "&#224;"> <!-- latin small letter a with grave
+ = latin small letter a grave,
+ U+00E0 ISOlat1 -->
+<!ENTITY aacute "&#225;"> <!-- latin small letter a with acute,
+ U+00E1 ISOlat1 -->
+<!ENTITY acirc "&#226;"> <!-- latin small letter a with circumflex,
+ U+00E2 ISOlat1 -->
+<!ENTITY atilde "&#227;"> <!-- latin small letter a with tilde,
+ U+00E3 ISOlat1 -->
+<!ENTITY auml "&#228;"> <!-- latin small letter a with diaeresis,
+ U+00E4 ISOlat1 -->
+<!ENTITY aring "&#229;"> <!-- latin small letter a with ring above
+ = latin small letter a ring,
+ U+00E5 ISOlat1 -->
+<!ENTITY aelig "&#230;"> <!-- latin small letter ae
+ = latin small ligature ae, U+00E6 ISOlat1 -->
+<!ENTITY ccedil "&#231;"> <!-- latin small letter c with cedilla,
+ U+00E7 ISOlat1 -->
+<!ENTITY egrave "&#232;"> <!-- latin small letter e with grave,
+ U+00E8 ISOlat1 -->
+<!ENTITY eacute "&#233;"> <!-- latin small letter e with acute,
+ U+00E9 ISOlat1 -->
+<!ENTITY ecirc "&#234;"> <!-- latin small letter e with circumflex,
+ U+00EA ISOlat1 -->
+<!ENTITY euml "&#235;"> <!-- latin small letter e with diaeresis,
+ U+00EB ISOlat1 -->
+<!ENTITY igrave "&#236;"> <!-- latin small letter i with grave,
+ U+00EC ISOlat1 -->
+<!ENTITY iacute "&#237;"> <!-- latin small letter i with acute,
+ U+00ED ISOlat1 -->
+<!ENTITY icirc "&#238;"> <!-- latin small letter i with circumflex,
+ U+00EE ISOlat1 -->
+<!ENTITY iuml "&#239;"> <!-- latin small letter i with diaeresis,
+ U+00EF ISOlat1 -->
+<!ENTITY eth "&#240;"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
+<!ENTITY ntilde "&#241;"> <!-- latin small letter n with tilde,
+ U+00F1 ISOlat1 -->
+<!ENTITY ograve "&#242;"> <!-- latin small letter o with grave,
+ U+00F2 ISOlat1 -->
+<!ENTITY oacute "&#243;"> <!-- latin small letter o with acute,
+ U+00F3 ISOlat1 -->
+<!ENTITY ocirc "&#244;"> <!-- latin small letter o with circumflex,
+ U+00F4 ISOlat1 -->
+<!ENTITY otilde "&#245;"> <!-- latin small letter o with tilde,
+ U+00F5 ISOlat1 -->
+<!ENTITY ouml "&#246;"> <!-- latin small letter o with diaeresis,
+ U+00F6 ISOlat1 -->
+<!ENTITY divide "&#247;"> <!-- division sign, U+00F7 ISOnum -->
+<!ENTITY oslash "&#248;"> <!-- latin small letter o with stroke,
+ = latin small letter o slash,
+ U+00F8 ISOlat1 -->
+<!ENTITY ugrave "&#249;"> <!-- latin small letter u with grave,
+ U+00F9 ISOlat1 -->
+<!ENTITY uacute "&#250;"> <!-- latin small letter u with acute,
+ U+00FA ISOlat1 -->
+<!ENTITY ucirc "&#251;"> <!-- latin small letter u with circumflex,
+ U+00FB ISOlat1 -->
+<!ENTITY uuml "&#252;"> <!-- latin small letter u with diaeresis,
+ U+00FC ISOlat1 -->
+<!ENTITY yacute "&#253;"> <!-- latin small letter y with acute,
+ U+00FD ISOlat1 -->
+<!ENTITY thorn "&#254;"> <!-- latin small letter thorn,
+ U+00FE ISOlat1 -->
+<!ENTITY yuml "&#255;"> <!-- latin small letter y with diaeresis,
+ U+00FF ISOlat1 -->
diff --git a/src/site/doxy/DTDs/xhtml-special.ent b/src/site/doxy/DTDs/xhtml-special.ent
new file mode 100644
index 0000000..ca358b2
--- /dev/null
+++ b/src/site/doxy/DTDs/xhtml-special.ent
@@ -0,0 +1,80 @@
+<!-- Special characters for XHTML -->
+
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % HTMLspecial PUBLIC
+ "-//W3C//ENTITIES Special for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
+ %HTMLspecial;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+ New names (i.e., not in ISO 8879 list) do not clash with any
+ existing ISO 8879 entity names. ISO 10646 character numbers
+ are given for each character, in hex. values are decimal
+ conversions of the ISO 10646 values and refer to the document
+ character set. Names are Unicode names.
+-->
+
+<!-- C0 Controls and Basic Latin -->
+<!ENTITY quot "&#34;"> <!-- quotation mark, U+0022 ISOnum -->
+<!ENTITY amp "&#38;#38;"> <!-- ampersand, U+0026 ISOnum -->
+<!ENTITY lt "&#38;#60;"> <!-- less-than sign, U+003C ISOnum -->
+<!ENTITY gt "&#62;"> <!-- greater-than sign, U+003E ISOnum -->
+<!ENTITY apos "&#39;"> <!-- apostrophe = APL quote, U+0027 ISOnum -->
+
+<!-- Latin Extended-A -->
+<!ENTITY OElig "&#338;"> <!-- latin capital ligature OE,
+ U+0152 ISOlat2 -->
+<!ENTITY oelig "&#339;"> <!-- latin small ligature oe, U+0153 ISOlat2 -->
+<!-- ligature is a misnomer, this is a separate character in some languages -->
+<!ENTITY Scaron "&#352;"> <!-- latin capital letter S with caron,
+ U+0160 ISOlat2 -->
+<!ENTITY scaron "&#353;"> <!-- latin small letter s with caron,
+ U+0161 ISOlat2 -->
+<!ENTITY Yuml "&#376;"> <!-- latin capital letter Y with diaeresis,
+ U+0178 ISOlat2 -->
+
+<!-- Spacing Modifier Letters -->
+<!ENTITY circ "&#710;"> <!-- modifier letter circumflex accent,
+ U+02C6 ISOpub -->
+<!ENTITY tilde "&#732;"> <!-- small tilde, U+02DC ISOdia -->
+
+<!-- General Punctuation -->
+<!ENTITY ensp "&#8194;"> <!-- en space, U+2002 ISOpub -->
+<!ENTITY emsp "&#8195;"> <!-- em space, U+2003 ISOpub -->
+<!ENTITY thinsp "&#8201;"> <!-- thin space, U+2009 ISOpub -->
+<!ENTITY zwnj "&#8204;"> <!-- zero width non-joiner,
+ U+200C NEW RFC 2070 -->
+<!ENTITY zwj "&#8205;"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
+<!ENTITY lrm "&#8206;"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
+<!ENTITY rlm "&#8207;"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
+<!ENTITY ndash "&#8211;"> <!-- en dash, U+2013 ISOpub -->
+<!ENTITY mdash "&#8212;"> <!-- em dash, U+2014 ISOpub -->
+<!ENTITY lsquo "&#8216;"> <!-- left single quotation mark,
+ U+2018 ISOnum -->
+<!ENTITY rsquo "&#8217;"> <!-- right single quotation mark,
+ U+2019 ISOnum -->
+<!ENTITY sbquo "&#8218;"> <!-- single low-9 quotation mark, U+201A NEW -->
+<!ENTITY ldquo "&#8220;"> <!-- left double quotation mark,
+ U+201C ISOnum -->
+<!ENTITY rdquo "&#8221;"> <!-- right double quotation mark,
+ U+201D ISOnum -->
+<!ENTITY bdquo "&#8222;"> <!-- double low-9 quotation mark, U+201E NEW -->
+<!ENTITY dagger "&#8224;"> <!-- dagger, U+2020 ISOpub -->
+<!ENTITY Dagger "&#8225;"> <!-- double dagger, U+2021 ISOpub -->
+<!ENTITY permil "&#8240;"> <!-- per mille sign, U+2030 ISOtech -->
+<!ENTITY lsaquo "&#8249;"> <!-- single left-pointing angle quotation mark,
+ U+2039 ISO proposed -->
+<!-- lsaquo is proposed but not yet ISO standardized -->
+<!ENTITY rsaquo "&#8250;"> <!-- single right-pointing angle quotation mark,
+ U+203A ISO proposed -->
+<!-- rsaquo is proposed but not yet ISO standardized -->
+
+<!-- Currency Symbols -->
+<!ENTITY euro "&#8364;"> <!-- euro sign, U+20AC NEW -->
diff --git a/src/site/doxy/DTDs/xhtml-symbol.ent b/src/site/doxy/DTDs/xhtml-symbol.ent
new file mode 100644
index 0000000..63c2abf
--- /dev/null
+++ b/src/site/doxy/DTDs/xhtml-symbol.ent
@@ -0,0 +1,237 @@
+<!-- Mathematical, Greek and Symbolic characters for XHTML -->
+
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % HTMLsymbol PUBLIC
+ "-//W3C//ENTITIES Symbols for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
+ %HTMLsymbol;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+ New names (i.e., not in ISO 8879 list) do not clash with any
+ existing ISO 8879 entity names. ISO 10646 character numbers
+ are given for each character, in hex. values are decimal
+ conversions of the ISO 10646 values and refer to the document
+ character set. Names are Unicode names.
+-->
+
+<!-- Latin Extended-B -->
+<!ENTITY fnof "&#402;"> <!-- latin small letter f with hook = function
+ = florin, U+0192 ISOtech -->
+
+<!-- Greek -->
+<!ENTITY Alpha "&#913;"> <!-- greek capital letter alpha, U+0391 -->
+<!ENTITY Beta "&#914;"> <!-- greek capital letter beta, U+0392 -->
+<!ENTITY Gamma "&#915;"> <!-- greek capital letter gamma,
+ U+0393 ISOgrk3 -->
+<!ENTITY Delta "&#916;"> <!-- greek capital letter delta,
+ U+0394 ISOgrk3 -->
+<!ENTITY Epsilon "&#917;"> <!-- greek capital letter epsilon, U+0395 -->
+<!ENTITY Zeta "&#918;"> <!-- greek capital letter zeta, U+0396 -->
+<!ENTITY Eta "&#919;"> <!-- greek capital letter eta, U+0397 -->
+<!ENTITY Theta "&#920;"> <!-- greek capital letter theta,
+ U+0398 ISOgrk3 -->
+<!ENTITY Iota "&#921;"> <!-- greek capital letter iota, U+0399 -->
+<!ENTITY Kappa "&#922;"> <!-- greek capital letter kappa, U+039A -->
+<!ENTITY Lambda "&#923;"> <!-- greek capital letter lamda,
+ U+039B ISOgrk3 -->
+<!ENTITY Mu "&#924;"> <!-- greek capital letter mu, U+039C -->
+<!ENTITY Nu "&#925;"> <!-- greek capital letter nu, U+039D -->
+<!ENTITY Xi "&#926;"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
+<!ENTITY Omicron "&#927;"> <!-- greek capital letter omicron, U+039F -->
+<!ENTITY Pi "&#928;"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
+<!ENTITY Rho "&#929;"> <!-- greek capital letter rho, U+03A1 -->
+<!-- there is no Sigmaf, and no U+03A2 character either -->
+<!ENTITY Sigma "&#931;"> <!-- greek capital letter sigma,
+ U+03A3 ISOgrk3 -->
+<!ENTITY Tau "&#932;"> <!-- greek capital letter tau, U+03A4 -->
+<!ENTITY Upsilon "&#933;"> <!-- greek capital letter upsilon,
+ U+03A5 ISOgrk3 -->
+<!ENTITY Phi "&#934;"> <!-- greek capital letter phi,
+ U+03A6 ISOgrk3 -->
+<!ENTITY Chi "&#935;"> <!-- greek capital letter chi, U+03A7 -->
+<!ENTITY Psi "&#936;"> <!-- greek capital letter psi,
+ U+03A8 ISOgrk3 -->
+<!ENTITY Omega "&#937;"> <!-- greek capital letter omega,
+ U+03A9 ISOgrk3 -->
+
+<!ENTITY alpha "&#945;"> <!-- greek small letter alpha,
+ U+03B1 ISOgrk3 -->
+<!ENTITY beta "&#946;"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
+<!ENTITY gamma "&#947;"> <!-- greek small letter gamma,
+ U+03B3 ISOgrk3 -->
+<!ENTITY delta "&#948;"> <!-- greek small letter delta,
+ U+03B4 ISOgrk3 -->
+<!ENTITY epsilon "&#949;"> <!-- greek small letter epsilon,
+ U+03B5 ISOgrk3 -->
+<!ENTITY zeta "&#950;"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
+<!ENTITY eta "&#951;"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
+<!ENTITY theta "&#952;"> <!-- greek small letter theta,
+ U+03B8 ISOgrk3 -->
+<!ENTITY iota "&#953;"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
+<!ENTITY kappa "&#954;"> <!-- greek small letter kappa,
+ U+03BA ISOgrk3 -->
+<!ENTITY lambda "&#955;"> <!-- greek small letter lamda,
+ U+03BB ISOgrk3 -->
+<!ENTITY mu "&#956;"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
+<!ENTITY nu "&#957;"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
+<!ENTITY xi "&#958;"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
+<!ENTITY omicron "&#959;"> <!-- greek small letter omicron, U+03BF NEW -->
+<!ENTITY pi "&#960;"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
+<!ENTITY rho "&#961;"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
+<!ENTITY sigmaf "&#962;"> <!-- greek small letter final sigma,
+ U+03C2 ISOgrk3 -->
+<!ENTITY sigma "&#963;"> <!-- greek small letter sigma,
+ U+03C3 ISOgrk3 -->
+<!ENTITY tau "&#964;"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
+<!ENTITY upsilon "&#965;"> <!-- greek small letter upsilon,
+ U+03C5 ISOgrk3 -->
+<!ENTITY phi "&#966;"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
+<!ENTITY chi "&#967;"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
+<!ENTITY psi "&#968;"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
+<!ENTITY omega "&#969;"> <!-- greek small letter omega,
+ U+03C9 ISOgrk3 -->
+<!ENTITY thetasym "&#977;"> <!-- greek theta symbol,
+ U+03D1 NEW -->
+<!ENTITY upsih "&#978;"> <!-- greek upsilon with hook symbol,
+ U+03D2 NEW -->
+<!ENTITY piv "&#982;"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
+
+<!-- General Punctuation -->
+<!ENTITY bull "&#8226;"> <!-- bullet = black small circle,
+ U+2022 ISOpub -->
+<!-- bullet is NOT the same as bullet operator, U+2219 -->
+<!ENTITY hellip "&#8230;"> <!-- horizontal ellipsis = three dot leader,
+ U+2026 ISOpub -->
+<!ENTITY prime "&#8242;"> <!-- prime = minutes = feet, U+2032 ISOtech -->
+<!ENTITY Prime "&#8243;"> <!-- double prime = seconds = inches,
+ U+2033 ISOtech -->
+<!ENTITY oline "&#8254;"> <!-- overline = spacing overscore,
+ U+203E NEW -->
+<!ENTITY frasl "&#8260;"> <!-- fraction slash, U+2044 NEW -->
+
+<!-- Letterlike Symbols -->
+<!ENTITY weierp "&#8472;"> <!-- script capital P = power set
+ = Weierstrass p, U+2118 ISOamso -->
+<!ENTITY image "&#8465;"> <!-- black-letter capital I = imaginary part,
+ U+2111 ISOamso -->
+<!ENTITY real "&#8476;"> <!-- black-letter capital R = real part symbol,
+ U+211C ISOamso -->
+<!ENTITY trade "&#8482;"> <!-- trade mark sign, U+2122 ISOnum -->
+<!ENTITY alefsym "&#8501;"> <!-- alef symbol = first transfinite cardinal,
+ U+2135 NEW -->
+<!-- alef symbol is NOT the same as hebrew letter alef,
+ U+05D0 although the same glyph could be used to depict both characters -->
+
+<!-- Arrows -->
+<!ENTITY larr "&#8592;"> <!-- leftwards arrow, U+2190 ISOnum -->
+<!ENTITY uarr "&#8593;"> <!-- upwards arrow, U+2191 ISOnum-->
+<!ENTITY rarr "&#8594;"> <!-- rightwards arrow, U+2192 ISOnum -->
+<!ENTITY darr "&#8595;"> <!-- downwards arrow, U+2193 ISOnum -->
+<!ENTITY harr "&#8596;"> <!-- left right arrow, U+2194 ISOamsa -->
+<!ENTITY crarr "&#8629;"> <!-- downwards arrow with corner leftwards
+ = carriage return, U+21B5 NEW -->
+<!ENTITY lArr "&#8656;"> <!-- leftwards double arrow, U+21D0 ISOtech -->
+<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
+ but also does not have any other character for that function. So lArr can
+ be used for 'is implied by' as ISOtech suggests -->
+<!ENTITY uArr "&#8657;"> <!-- upwards double arrow, U+21D1 ISOamsa -->
+<!ENTITY rArr "&#8658;"> <!-- rightwards double arrow,
+ U+21D2 ISOtech -->
+<!-- Unicode does not say this is the 'implies' character but does not have
+ another character with this function so rArr can be used for 'implies'
+ as ISOtech suggests -->
+<!ENTITY dArr "&#8659;"> <!-- downwards double arrow, U+21D3 ISOamsa -->
+<!ENTITY hArr "&#8660;"> <!-- left right double arrow,
+ U+21D4 ISOamsa -->
+
+<!-- Mathematical Operators -->
+<!ENTITY forall "&#8704;"> <!-- for all, U+2200 ISOtech -->
+<!ENTITY part "&#8706;"> <!-- partial differential, U+2202 ISOtech -->
+<!ENTITY exist "&#8707;"> <!-- there exists, U+2203 ISOtech -->
+<!ENTITY empty "&#8709;"> <!-- empty set = null set, U+2205 ISOamso -->
+<!ENTITY nabla "&#8711;"> <!-- nabla = backward difference,
+ U+2207 ISOtech -->
+<!ENTITY isin "&#8712;"> <!-- element of, U+2208 ISOtech -->
+<!ENTITY notin "&#8713;"> <!-- not an element of, U+2209 ISOtech -->
+<!ENTITY ni "&#8715;"> <!-- contains as member, U+220B ISOtech -->
+<!ENTITY prod "&#8719;"> <!-- n-ary product = product sign,
+ U+220F ISOamsb -->
+<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
+ the same glyph might be used for both -->
+<!ENTITY sum "&#8721;"> <!-- n-ary summation, U+2211 ISOamsb -->
+<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
+ though the same glyph might be used for both -->
+<!ENTITY minus "&#8722;"> <!-- minus sign, U+2212 ISOtech -->
+<!ENTITY lowast "&#8727;"> <!-- asterisk operator, U+2217 ISOtech -->
+<!ENTITY radic "&#8730;"> <!-- square root = radical sign,
+ U+221A ISOtech -->
+<!ENTITY prop "&#8733;"> <!-- proportional to, U+221D ISOtech -->
+<!ENTITY infin "&#8734;"> <!-- infinity, U+221E ISOtech -->
+<!ENTITY ang "&#8736;"> <!-- angle, U+2220 ISOamso -->
+<!ENTITY and "&#8743;"> <!-- logical and = wedge, U+2227 ISOtech -->
+<!ENTITY or "&#8744;"> <!-- logical or = vee, U+2228 ISOtech -->
+<!ENTITY cap "&#8745;"> <!-- intersection = cap, U+2229 ISOtech -->
+<!ENTITY cup "&#8746;"> <!-- union = cup, U+222A ISOtech -->
+<!ENTITY int "&#8747;"> <!-- integral, U+222B ISOtech -->
+<!ENTITY there4 "&#8756;"> <!-- therefore, U+2234 ISOtech -->
+<!ENTITY sim "&#8764;"> <!-- tilde operator = varies with = similar to,
+ U+223C ISOtech -->
+<!-- tilde operator is NOT the same character as the tilde, U+007E,
+ although the same glyph might be used to represent both -->
+<!ENTITY cong "&#8773;"> <!-- approximately equal to, U+2245 ISOtech -->
+<!ENTITY asymp "&#8776;"> <!-- almost equal to = asymptotic to,
+ U+2248 ISOamsr -->
+<!ENTITY ne "&#8800;"> <!-- not equal to, U+2260 ISOtech -->
+<!ENTITY equiv "&#8801;"> <!-- identical to, U+2261 ISOtech -->
+<!ENTITY le "&#8804;"> <!-- less-than or equal to, U+2264 ISOtech -->
+<!ENTITY ge "&#8805;"> <!-- greater-than or equal to,
+ U+2265 ISOtech -->
+<!ENTITY sub "&#8834;"> <!-- subset of, U+2282 ISOtech -->
+<!ENTITY sup "&#8835;"> <!-- superset of, U+2283 ISOtech -->
+<!ENTITY nsub "&#8836;"> <!-- not a subset of, U+2284 ISOamsn -->
+<!ENTITY sube "&#8838;"> <!-- subset of or equal to, U+2286 ISOtech -->
+<!ENTITY supe "&#8839;"> <!-- superset of or equal to,
+ U+2287 ISOtech -->
+<!ENTITY oplus "&#8853;"> <!-- circled plus = direct sum,
+ U+2295 ISOamsb -->
+<!ENTITY otimes "&#8855;"> <!-- circled times = vector product,
+ U+2297 ISOamsb -->
+<!ENTITY perp "&#8869;"> <!-- up tack = orthogonal to = perpendicular,
+ U+22A5 ISOtech -->
+<!ENTITY sdot "&#8901;"> <!-- dot operator, U+22C5 ISOamsb -->
+<!-- dot operator is NOT the same character as U+00B7 middle dot -->
+
+<!-- Miscellaneous Technical -->
+<!ENTITY lceil "&#8968;"> <!-- left ceiling = APL upstile,
+ U+2308 ISOamsc -->
+<!ENTITY rceil "&#8969;"> <!-- right ceiling, U+2309 ISOamsc -->
+<!ENTITY lfloor "&#8970;"> <!-- left floor = APL downstile,
+ U+230A ISOamsc -->
+<!ENTITY rfloor "&#8971;"> <!-- right floor, U+230B ISOamsc -->
+<!ENTITY lang "&#9001;"> <!-- left-pointing angle bracket = bra,
+ U+2329 ISOtech -->
+<!-- lang is NOT the same character as U+003C 'less than sign'
+ or U+2039 'single left-pointing angle quotation mark' -->
+<!ENTITY rang "&#9002;"> <!-- right-pointing angle bracket = ket,
+ U+232A ISOtech -->
+<!-- rang is NOT the same character as U+003E 'greater than sign'
+ or U+203A 'single right-pointing angle quotation mark' -->
+
+<!-- Geometric Shapes -->
+<!ENTITY loz "&#9674;"> <!-- lozenge, U+25CA ISOpub -->
+
+<!-- Miscellaneous Symbols -->
+<!ENTITY spades "&#9824;"> <!-- black spade suit, U+2660 ISOpub -->
+<!-- black here seems to mean filled as opposed to hollow -->
+<!ENTITY clubs "&#9827;"> <!-- black club suit = shamrock,
+ U+2663 ISOpub -->
+<!ENTITY hearts "&#9829;"> <!-- black heart suit = valentine,
+ U+2665 ISOpub -->
+<!ENTITY diams "&#9830;"> <!-- black diamond suit, U+2666 ISOpub -->
diff --git a/src/site/doxy/DTDs/xhtml1-transitional.dtd b/src/site/doxy/DTDs/xhtml1-transitional.dtd
new file mode 100644
index 0000000..628f27a
--- /dev/null
+++ b/src/site/doxy/DTDs/xhtml1-transitional.dtd
@@ -0,0 +1,1201 @@
+<!--
+ Extensible HTML version 1.0 Transitional DTD
+
+ This is the same as HTML 4 Transitional except for
+ changes due to the differences between XML and SGML.
+
+ Namespace = http://www.w3.org/1999/xhtml
+
+ For further information, see: http://www.w3.org/TR/xhtml1
+
+ Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
+ All Rights Reserved.
+
+ This DTD module is identified by the PUBLIC and SYSTEM identifiers:
+
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
+
+ $Revision: 1.2 $
+ $Date: 2002/08/01 18:37:55 $
+
+-->
+
+<!--================ Character mnemonic entities =========================-->
+
+<!ENTITY % HTMLlat1 PUBLIC
+ "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+ "xhtml-lat1.ent">
+%HTMLlat1;
+
+<!ENTITY % HTMLsymbol PUBLIC
+ "-//W3C//ENTITIES Symbols for XHTML//EN"
+ "xhtml-symbol.ent">
+%HTMLsymbol;
+
+<!ENTITY % HTMLspecial PUBLIC
+ "-//W3C//ENTITIES Special for XHTML//EN"
+ "xhtml-special.ent">
+%HTMLspecial;
+
+<!--================== Imported Names ====================================-->
+
+<!ENTITY % ContentType "CDATA">
+ <!-- media type, as per [RFC2045] -->
+
+<!ENTITY % ContentTypes "CDATA">
+ <!-- comma-separated list of media types, as per [RFC2045] -->
+
+<!ENTITY % Charset "CDATA">
+ <!-- a character encoding, as per [RFC2045] -->
+
+<!ENTITY % Charsets "CDATA">
+ <!-- a space separated list of character encodings, as per [RFC2045] -->
+
+<!ENTITY % LanguageCode "NMTOKEN">
+ <!-- a language code, as per [RFC3066] -->
+
+<!ENTITY % Character "CDATA">
+ <!-- a single character, as per section 2.2 of [XML] -->
+
+<!ENTITY % Number "CDATA">
+ <!-- one or more digits -->
+
+<!ENTITY % LinkTypes "CDATA">
+ <!-- space-separated list of link types -->
+
+<!ENTITY % MediaDesc "CDATA">
+ <!-- single or comma-separated list of media descriptors -->
+
+<!ENTITY % URI "CDATA">
+ <!-- a Uniform Resource Identifier, see [RFC2396] -->
+
+<!ENTITY % UriList "CDATA">
+ <!-- a space separated list of Uniform Resource Identifiers -->
+
+<!ENTITY % Datetime "CDATA">
+ <!-- date and time information. ISO date format -->
+
+<!ENTITY % Script "CDATA">
+ <!-- script expression -->
+
+<!ENTITY % StyleSheet "CDATA">
+ <!-- style sheet data -->
+
+<!ENTITY % Text "CDATA">
+ <!-- used for titles etc. -->
+
+<!ENTITY % FrameTarget "NMTOKEN">
+ <!-- render in this frame -->
+
+<!ENTITY % Length "CDATA">
+ <!-- nn for pixels or nn% for percentage length -->
+
+<!ENTITY % MultiLength "CDATA">
+ <!-- pixel, percentage, or relative -->
+
+<!ENTITY % Pixels "CDATA">
+ <!-- integer representing length in pixels -->
+
+<!-- these are used for image maps -->
+
+<!ENTITY % Shape "(rect|circle|poly|default)">
+
+<!ENTITY % Coords "CDATA">
+ <!-- comma separated list of lengths -->
+
+<!-- used for object, applet, img, input and iframe -->
+<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
+
+<!-- a color using sRGB: #RRGGBB as Hex values -->
+<!ENTITY % Color "CDATA">
+
+<!-- There are also 16 widely known color names with their sRGB values:
+
+ Black = #000000 Green = #008000
+ Silver = #C0C0C0 Lime = #00FF00
+ Gray = #808080 Olive = #808000
+ White = #FFFFFF Yellow = #FFFF00
+ Maroon = #800000 Navy = #000080
+ Red = #FF0000 Blue = #0000FF
+ Purple = #800080 Teal = #008080
+ Fuchsia= #FF00FF Aqua = #00FFFF
+-->
+
+<!--=================== Generic Attributes ===============================-->
+
+<!-- core attributes common to most elements
+ id document-wide unique id
+ class space separated list of classes
+ style associated style info
+ title advisory title/amplification
+-->
+<!ENTITY % coreattrs
+ "id ID #IMPLIED
+ class CDATA #IMPLIED
+ style %StyleSheet; #IMPLIED
+ title %Text; #IMPLIED"
+ >
+
+<!-- internationalization attributes
+ lang language code (backwards compatible)
+ xml:lang language code (as per XML 1.0 spec)
+ dir direction for weak/neutral text
+-->
+<!ENTITY % i18n
+ "lang %LanguageCode; #IMPLIED
+ xml:lang %LanguageCode; #IMPLIED
+ dir (ltr|rtl) #IMPLIED"
+ >
+
+<!-- attributes for common UI events
+ onclick a pointer button was clicked
+ ondblclick a pointer button was double clicked
+ onmousedown a pointer button was pressed down
+ onmouseup a pointer button was released
+ onmousemove a pointer was moved onto the element
+ onmouseout a pointer was moved away from the element
+ onkeypress a key was pressed and released
+ onkeydown a key was pressed down
+ onkeyup a key was released
+-->
+<!ENTITY % events
+ "onclick %Script; #IMPLIED
+ ondblclick %Script; #IMPLIED
+ onmousedown %Script; #IMPLIED
+ onmouseup %Script; #IMPLIED
+ onmouseover %Script; #IMPLIED
+ onmousemove %Script; #IMPLIED
+ onmouseout %Script; #IMPLIED
+ onkeypress %Script; #IMPLIED
+ onkeydown %Script; #IMPLIED
+ onkeyup %Script; #IMPLIED"
+ >
+
+<!-- attributes for elements that can get the focus
+ accesskey accessibility key character
+ tabindex position in tabbing order
+ onfocus the element got the focus
+ onblur the element lost the focus
+-->
+<!ENTITY % focus
+ "accesskey %Character; #IMPLIED
+ tabindex %Number; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED"
+ >
+
+<!ENTITY % attrs "%coreattrs; %i18n; %events;">
+
+<!-- text alignment for p, div, h1-h6. The default is
+ align="left" for ltr headings, "right" for rtl -->
+
+<!ENTITY % TextAlign "align (left|center|right|justify) #IMPLIED">
+
+<!--=================== Text Elements ====================================-->
+
+<!ENTITY % special.extra
+ "object | applet | img | map | iframe">
+
+<!ENTITY % special.basic
+ "br | span | bdo">
+
+<!ENTITY % special
+ "%special.basic; | %special.extra;">
+
+<!ENTITY % fontstyle.extra "big | small | font | basefont">
+
+<!ENTITY % fontstyle.basic "tt | i | b | u
+ | s | strike ">
+
+<!ENTITY % fontstyle "%fontstyle.basic; | %fontstyle.extra;">
+
+<!ENTITY % phrase.extra "sub | sup">
+<!ENTITY % phrase.basic "em | strong | dfn | code | q |
+ samp | kbd | var | cite | abbr | acronym">
+
+<!ENTITY % phrase "%phrase.basic; | %phrase.extra;">
+
+<!ENTITY % inline.forms "input | select | textarea | label | button">
+
+<!-- these can occur at block or inline level -->
+<!ENTITY % misc.inline "ins | del | script">
+
+<!-- these can only occur at block level -->
+<!ENTITY % misc "noscript | %misc.inline;">
+
+<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
+
+<!-- %Inline; covers inline or "text-level" elements -->
+<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
+
+<!--================== Block level elements ==============================-->
+
+<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
+<!ENTITY % lists "ul | ol | dl | menu | dir">
+<!ENTITY % blocktext "pre | hr | blockquote | address | center | noframes">
+
+<!ENTITY % block
+ "p | %heading; | div | %lists; | %blocktext; | isindex |fieldset | table">
+
+<!-- %Flow; mixes block and inline and is used for list items etc. -->
+<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
+
+<!--================== Content models for exclusions =====================-->
+
+<!-- a elements use %Inline; excluding a -->
+
+<!ENTITY % a.content
+ "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
+
+<!-- pre uses %Inline excluding img, object, applet, big, small,
+ font, or basefont -->
+
+<!ENTITY % pre.content
+ "(#PCDATA | a | %special.basic; | %fontstyle.basic; | %phrase.basic; |
+ %inline.forms; | %misc.inline;)*">
+
+<!-- form uses %Flow; excluding form -->
+
+<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
+
+<!-- button uses %Flow; but excludes a, form, form controls, iframe -->
+
+<!ENTITY % button.content
+ "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
+ table | br | span | bdo | object | applet | img | map |
+ %fontstyle; | %phrase; | %misc;)*">
+
+<!--================ Document Structure ==================================-->
+
+<!-- the namespace URI designates the document profile -->
+
+<!ELEMENT html (head, body)>
+<!ATTLIST html
+ %i18n;
+ id ID #IMPLIED
+ xmlns %URI; #FIXED 'http://www.w3.org/1999/xhtml'
+ >
+
+<!--================ Document Head =======================================-->
+
+<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
+
+<!-- content model is %head.misc; combined with a single
+ title and an optional base element in any order -->
+
+<!ELEMENT head (%head.misc;,
+ ((title, %head.misc;, (base, %head.misc;)?) |
+ (base, %head.misc;, (title, %head.misc;))))>
+
+<!ATTLIST head
+ %i18n;
+ id ID #IMPLIED
+ profile %URI; #IMPLIED
+ >
+
+<!-- The title element is not considered part of the flow of text.
+ It should be displayed, for example as the page header or
+ window title. Exactly one title is required per document.
+ -->
+<!ELEMENT title (#PCDATA)>
+<!ATTLIST title
+ %i18n;
+ id ID #IMPLIED
+ >
+
+<!-- document base URI -->
+
+<!ELEMENT base EMPTY>
+<!ATTLIST base
+ id ID #IMPLIED
+ href %URI; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!-- generic metainformation -->
+<!ELEMENT meta EMPTY>
+<!ATTLIST meta
+ %i18n;
+ id ID #IMPLIED
+ http-equiv CDATA #IMPLIED
+ name CDATA #IMPLIED
+ content CDATA #REQUIRED
+ scheme CDATA #IMPLIED
+ >
+
+<!--
+ Relationship values can be used in principle:
+
+ a) for document specific toolbars/menus when used
+ with the link element in document head e.g.
+ start, contents, previous, next, index, end, help
+ b) to link to a separate style sheet (rel="stylesheet")
+ c) to make a link to a script (rel="script")
+ d) by stylesheets to control how collections of
+ html nodes are rendered into printed documents
+ e) to make a link to a printable version of this document
+ e.g. a PostScript or PDF version (rel="alternate" media="print")
+-->
+
+<!ELEMENT link EMPTY>
+<!ATTLIST link
+ %attrs;
+ charset %Charset; #IMPLIED
+ href %URI; #IMPLIED
+ hreflang %LanguageCode; #IMPLIED
+ type %ContentType; #IMPLIED
+ rel %LinkTypes; #IMPLIED
+ rev %LinkTypes; #IMPLIED
+ media %MediaDesc; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!-- style info, which may include CDATA sections -->
+<!ELEMENT style (#PCDATA)>
+<!ATTLIST style
+ %i18n;
+ id ID #IMPLIED
+ type %ContentType; #REQUIRED
+ media %MediaDesc; #IMPLIED
+ title %Text; #IMPLIED
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!-- script statements, which may include CDATA sections -->
+<!ELEMENT script (#PCDATA)>
+<!ATTLIST script
+ id ID #IMPLIED
+ charset %Charset; #IMPLIED
+ type %ContentType; #REQUIRED
+ language CDATA #IMPLIED
+ src %URI; #IMPLIED
+ defer (defer) #IMPLIED
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!-- alternate content container for non script-based rendering -->
+
+<!ELEMENT noscript %Flow;>
+<!ATTLIST noscript
+ %attrs;
+ >
+
+<!--======================= Frames =======================================-->
+
+<!-- inline subwindow -->
+
+<!ELEMENT iframe %Flow;>
+<!ATTLIST iframe
+ %coreattrs;
+ longdesc %URI; #IMPLIED
+ name NMTOKEN #IMPLIED
+ src %URI; #IMPLIED
+ frameborder (1|0) "1"
+ marginwidth %Pixels; #IMPLIED
+ marginheight %Pixels; #IMPLIED
+ scrolling (yes|no|auto) "auto"
+ align %ImgAlign; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ >
+
+<!-- alternate content container for non frame-based rendering -->
+
+<!ELEMENT noframes %Flow;>
+<!ATTLIST noframes
+ %attrs;
+ >
+
+<!--=================== Document Body ====================================-->
+
+<!ELEMENT body %Flow;>
+<!ATTLIST body
+ %attrs;
+ onload %Script; #IMPLIED
+ onunload %Script; #IMPLIED
+ background %URI; #IMPLIED
+ bgcolor %Color; #IMPLIED
+ text %Color; #IMPLIED
+ link %Color; #IMPLIED
+ vlink %Color; #IMPLIED
+ alink %Color; #IMPLIED
+ >
+
+<!ELEMENT div %Flow;> <!-- generic language/style container -->
+<!ATTLIST div
+ %attrs;
+ %TextAlign;
+ >
+
+<!--=================== Paragraphs =======================================-->
+
+<!ELEMENT p %Inline;>
+<!ATTLIST p
+ %attrs;
+ %TextAlign;
+ >
+
+<!--=================== Headings =========================================-->
+
+<!--
+ There are six levels of headings from h1 (the most important)
+ to h6 (the least important).
+-->
+
+<!ELEMENT h1 %Inline;>
+<!ATTLIST h1
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h2 %Inline;>
+<!ATTLIST h2
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h3 %Inline;>
+<!ATTLIST h3
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h4 %Inline;>
+<!ATTLIST h4
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h5 %Inline;>
+<!ATTLIST h5
+ %attrs;
+ %TextAlign;
+ >
+
+<!ELEMENT h6 %Inline;>
+<!ATTLIST h6
+ %attrs;
+ %TextAlign;
+ >
+
+<!--=================== Lists ============================================-->
+
+<!-- Unordered list bullet styles -->
+
+<!ENTITY % ULStyle "(disc|square|circle)">
+
+<!-- Unordered list -->
+
+<!ELEMENT ul (li)+>
+<!ATTLIST ul
+ %attrs;
+ type %ULStyle; #IMPLIED
+ compact (compact) #IMPLIED
+ >
+
+<!-- Ordered list numbering style
+
+ 1 arabic numbers 1, 2, 3, ...
+ a lower alpha a, b, c, ...
+ A upper alpha A, B, C, ...
+ i lower roman i, ii, iii, ...
+ I upper roman I, II, III, ...
+
+ The style is applied to the sequence number which by default
+ is reset to 1 for the first list item in an ordered list.
+-->
+<!ENTITY % OLStyle "CDATA">
+
+<!-- Ordered (numbered) list -->
+
+<!ELEMENT ol (li)+>
+<!ATTLIST ol
+ %attrs;
+ type %OLStyle; #IMPLIED
+ compact (compact) #IMPLIED
+ start %Number; #IMPLIED
+ >
+
+<!-- single column list (DEPRECATED) -->
+<!ELEMENT menu (li)+>
+<!ATTLIST menu
+ %attrs;
+ compact (compact) #IMPLIED
+ >
+
+<!-- multiple column list (DEPRECATED) -->
+<!ELEMENT dir (li)+>
+<!ATTLIST dir
+ %attrs;
+ compact (compact) #IMPLIED
+ >
+
+<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
+<!ENTITY % LIStyle "CDATA">
+
+<!-- list item -->
+
+<!ELEMENT li %Flow;>
+<!ATTLIST li
+ %attrs;
+ type %LIStyle; #IMPLIED
+ value %Number; #IMPLIED
+ >
+
+<!-- definition lists - dt for term, dd for its definition -->
+
+<!ELEMENT dl (dt|dd)+>
+<!ATTLIST dl
+ %attrs;
+ compact (compact) #IMPLIED
+ >
+
+<!ELEMENT dt %Inline;>
+<!ATTLIST dt
+ %attrs;
+ >
+
+<!ELEMENT dd %Flow;>
+<!ATTLIST dd
+ %attrs;
+ >
+
+<!--=================== Address ==========================================-->
+
+<!-- information on author -->
+
+<!ELEMENT address (#PCDATA | %inline; | %misc.inline; | p)*>
+<!ATTLIST address
+ %attrs;
+ >
+
+<!--=================== Horizontal Rule ==================================-->
+
+<!ELEMENT hr EMPTY>
+<!ATTLIST hr
+ %attrs;
+ align (left|center|right) #IMPLIED
+ noshade (noshade) #IMPLIED
+ size %Pixels; #IMPLIED
+ width %Length; #IMPLIED
+ >
+
+<!--=================== Preformatted Text ================================-->
+
+<!-- content is %Inline; excluding
+ "img|object|applet|big|small|sub|sup|font|basefont" -->
+
+<!ELEMENT pre %pre.content;>
+<!ATTLIST pre
+ %attrs;
+ width %Number; #IMPLIED
+ xml:space (preserve) #FIXED 'preserve'
+ >
+
+<!--=================== Block-like Quotes ================================-->
+
+<!ELEMENT blockquote %Flow;>
+<!ATTLIST blockquote
+ %attrs;
+ cite %URI; #IMPLIED
+ >
+
+<!--=================== Text alignment ===================================-->
+
+<!-- center content -->
+<!ELEMENT center %Flow;>
+<!ATTLIST center
+ %attrs;
+ >
+
+<!--=================== Inserted/Deleted Text ============================-->
+
+<!--
+ ins/del are allowed in block and inline content, but its
+ inappropriate to include block content within an ins element
+ occurring in inline content.
+-->
+<!ELEMENT ins %Flow;>
+<!ATTLIST ins
+ %attrs;
+ cite %URI; #IMPLIED
+ datetime %Datetime; #IMPLIED
+ >
+
+<!ELEMENT del %Flow;>
+<!ATTLIST del
+ %attrs;
+ cite %URI; #IMPLIED
+ datetime %Datetime; #IMPLIED
+ >
+
+<!--================== The Anchor Element ================================-->
+
+<!-- content is %Inline; except that anchors shouldn't be nested -->
+
+<!ELEMENT a %a.content;>
+<!ATTLIST a
+ %attrs;
+ %focus;
+ charset %Charset; #IMPLIED
+ type %ContentType; #IMPLIED
+ name NMTOKEN #IMPLIED
+ href %URI; #IMPLIED
+ hreflang %LanguageCode; #IMPLIED
+ rel %LinkTypes; #IMPLIED
+ rev %LinkTypes; #IMPLIED
+ shape %Shape; "rect"
+ coords %Coords; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!--===================== Inline Elements ================================-->
+
+<!ELEMENT span %Inline;> <!-- generic language/style container -->
+<!ATTLIST span
+ %attrs;
+ >
+
+<!ELEMENT bdo %Inline;> <!-- I18N BiDi over-ride -->
+<!ATTLIST bdo
+ %coreattrs;
+ %events;
+ lang %LanguageCode; #IMPLIED
+ xml:lang %LanguageCode; #IMPLIED
+ dir (ltr|rtl) #REQUIRED
+ >
+
+<!ELEMENT br EMPTY> <!-- forced line break -->
+<!ATTLIST br
+ %coreattrs;
+ clear (left|all|right|none) "none"
+ >
+
+<!ELEMENT em %Inline;> <!-- emphasis -->
+<!ATTLIST em %attrs;>
+
+<!ELEMENT strong %Inline;> <!-- strong emphasis -->
+<!ATTLIST strong %attrs;>
+
+<!ELEMENT dfn %Inline;> <!-- definitional -->
+<!ATTLIST dfn %attrs;>
+
+<!ELEMENT code %Inline;> <!-- program code -->
+<!ATTLIST code %attrs;>
+
+<!ELEMENT samp %Inline;> <!-- sample -->
+<!ATTLIST samp %attrs;>
+
+<!ELEMENT kbd %Inline;> <!-- something user would type -->
+<!ATTLIST kbd %attrs;>
+
+<!ELEMENT var %Inline;> <!-- variable -->
+<!ATTLIST var %attrs;>
+
+<!ELEMENT cite %Inline;> <!-- citation -->
+<!ATTLIST cite %attrs;>
+
+<!ELEMENT abbr %Inline;> <!-- abbreviation -->
+<!ATTLIST abbr %attrs;>
+
+<!ELEMENT acronym %Inline;> <!-- acronym -->
+<!ATTLIST acronym %attrs;>
+
+<!ELEMENT q %Inline;> <!-- inlined quote -->
+<!ATTLIST q
+ %attrs;
+ cite %URI; #IMPLIED
+ >
+
+<!ELEMENT sub %Inline;> <!-- subscript -->
+<!ATTLIST sub %attrs;>
+
+<!ELEMENT sup %Inline;> <!-- superscript -->
+<!ATTLIST sup %attrs;>
+
+<!ELEMENT tt %Inline;> <!-- fixed pitch font -->
+<!ATTLIST tt %attrs;>
+
+<!ELEMENT i %Inline;> <!-- italic font -->
+<!ATTLIST i %attrs;>
+
+<!ELEMENT b %Inline;> <!-- bold font -->
+<!ATTLIST b %attrs;>
+
+<!ELEMENT big %Inline;> <!-- bigger font -->
+<!ATTLIST big %attrs;>
+
+<!ELEMENT small %Inline;> <!-- smaller font -->
+<!ATTLIST small %attrs;>
+
+<!ELEMENT u %Inline;> <!-- underline -->
+<!ATTLIST u %attrs;>
+
+<!ELEMENT s %Inline;> <!-- strike-through -->
+<!ATTLIST s %attrs;>
+
+<!ELEMENT strike %Inline;> <!-- strike-through -->
+<!ATTLIST strike %attrs;>
+
+<!ELEMENT basefont EMPTY> <!-- base font size -->
+<!ATTLIST basefont
+ id ID #IMPLIED
+ size CDATA #REQUIRED
+ color %Color; #IMPLIED
+ face CDATA #IMPLIED
+ >
+
+<!ELEMENT font %Inline;> <!-- local change to font -->
+<!ATTLIST font
+ %coreattrs;
+ %i18n;
+ size CDATA #IMPLIED
+ color %Color; #IMPLIED
+ face CDATA #IMPLIED
+ >
+
+<!--==================== Object ======================================-->
+<!--
+ object is used to embed objects as part of HTML pages.
+ param elements should precede other content. Parameters
+ can also be expressed as attribute/value pairs on the
+ object element itself when brevity is desired.
+-->
+
+<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST object
+ %attrs;
+ declare (declare) #IMPLIED
+ classid %URI; #IMPLIED
+ codebase %URI; #IMPLIED
+ data %URI; #IMPLIED
+ type %ContentType; #IMPLIED
+ codetype %ContentType; #IMPLIED
+ archive %UriList; #IMPLIED
+ standby %Text; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ usemap %URI; #IMPLIED
+ name NMTOKEN #IMPLIED
+ tabindex %Number; #IMPLIED
+ align %ImgAlign; #IMPLIED
+ border %Pixels; #IMPLIED
+ hspace %Pixels; #IMPLIED
+ vspace %Pixels; #IMPLIED
+ >
+
+<!--
+ param is used to supply a named property value.
+ In XML it would seem natural to follow RDF and support an
+ abbreviated syntax where the param elements are replaced
+ by attribute value pairs on the object start tag.
+-->
+<!ELEMENT param EMPTY>
+<!ATTLIST param
+ id ID #IMPLIED
+ name CDATA #REQUIRED
+ value CDATA #IMPLIED
+ valuetype (data|ref|object) "data"
+ type %ContentType; #IMPLIED
+ >
+
+<!--=================== Java applet ==================================-->
+<!--
+ One of code or object attributes must be present.
+ Place param elements before other content.
+-->
+<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
+<!ATTLIST applet
+ %coreattrs;
+ codebase %URI; #IMPLIED
+ archive CDATA #IMPLIED
+ code CDATA #IMPLIED
+ object CDATA #IMPLIED
+ alt %Text; #IMPLIED
+ name NMTOKEN #IMPLIED
+ width %Length; #REQUIRED
+ height %Length; #REQUIRED
+ align %ImgAlign; #IMPLIED
+ hspace %Pixels; #IMPLIED
+ vspace %Pixels; #IMPLIED
+ >
+
+<!--=================== Images ===========================================-->
+
+<!--
+ To avoid accessibility problems for people who aren't
+ able to see the image, you should provide a text
+ description using the alt and longdesc attributes.
+ In addition, avoid the use of server-side image maps.
+-->
+
+<!ELEMENT img EMPTY>
+<!ATTLIST img
+ %attrs;
+ src %URI; #REQUIRED
+ alt %Text; #REQUIRED
+ name NMTOKEN #IMPLIED
+ longdesc %URI; #IMPLIED
+ height %Length; #IMPLIED
+ width %Length; #IMPLIED
+ usemap %URI; #IMPLIED
+ ismap (ismap) #IMPLIED
+ align %ImgAlign; #IMPLIED
+ border %Length; #IMPLIED
+ hspace %Pixels; #IMPLIED
+ vspace %Pixels; #IMPLIED
+ >
+
+<!-- usemap points to a map element which may be in this document
+ or an external document, although the latter is not widely supported -->
+
+<!--================== Client-side image maps ============================-->
+
+<!-- These can be placed in the same document or grouped in a
+ separate document although this isn't yet widely supported -->
+
+<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
+<!ATTLIST map
+ %i18n;
+ %events;
+ id ID #REQUIRED
+ class CDATA #IMPLIED
+ style %StyleSheet; #IMPLIED
+ title %Text; #IMPLIED
+ name CDATA #IMPLIED
+ >
+
+<!ELEMENT area EMPTY>
+<!ATTLIST area
+ %attrs;
+ %focus;
+ shape %Shape; "rect"
+ coords %Coords; #IMPLIED
+ href %URI; #IMPLIED
+ nohref (nohref) #IMPLIED
+ alt %Text; #REQUIRED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!--================ Forms ===============================================-->
+
+<!ELEMENT form %form.content;> <!-- forms shouldn't be nested -->
+
+<!ATTLIST form
+ %attrs;
+ action %URI; #REQUIRED
+ method (get|post) "get"
+ name NMTOKEN #IMPLIED
+ enctype %ContentType; "application/x-www-form-urlencoded"
+ onsubmit %Script; #IMPLIED
+ onreset %Script; #IMPLIED
+ accept %ContentTypes; #IMPLIED
+ accept-charset %Charsets; #IMPLIED
+ target %FrameTarget; #IMPLIED
+ >
+
+<!--
+ Each label must not contain more than ONE field
+ Label elements shouldn't be nested.
+-->
+<!ELEMENT label %Inline;>
+<!ATTLIST label
+ %attrs;
+ for IDREF #IMPLIED
+ accesskey %Character; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ >
+
+<!ENTITY % InputType
+ "(text | password | checkbox |
+ radio | submit | reset |
+ file | hidden | image | button)"
+ >
+
+<!-- the name attribute is required for all but submit & reset -->
+
+<!ELEMENT input EMPTY> <!-- form control -->
+<!ATTLIST input
+ %attrs;
+ %focus;
+ type %InputType; "text"
+ name CDATA #IMPLIED
+ value CDATA #IMPLIED
+ checked (checked) #IMPLIED
+ disabled (disabled) #IMPLIED
+ readonly (readonly) #IMPLIED
+ size CDATA #IMPLIED
+ maxlength %Number; #IMPLIED
+ src %URI; #IMPLIED
+ alt CDATA #IMPLIED
+ usemap %URI; #IMPLIED
+ onselect %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ accept %ContentTypes; #IMPLIED
+ align %ImgAlign; #IMPLIED
+ >
+
+<!ELEMENT select (optgroup|option)+> <!-- option selector -->
+<!ATTLIST select
+ %attrs;
+ name CDATA #IMPLIED
+ size %Number; #IMPLIED
+ multiple (multiple) #IMPLIED
+ disabled (disabled) #IMPLIED
+ tabindex %Number; #IMPLIED
+ onfocus %Script; #IMPLIED
+ onblur %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ >
+
+<!ELEMENT optgroup (option)+> <!-- option group -->
+<!ATTLIST optgroup
+ %attrs;
+ disabled (disabled) #IMPLIED
+ label %Text; #REQUIRED
+ >
+
+<!ELEMENT option (#PCDATA)> <!-- selectable choice -->
+<!ATTLIST option
+ %attrs;
+ selected (selected) #IMPLIED
+ disabled (disabled) #IMPLIED
+ label %Text; #IMPLIED
+ value CDATA #IMPLIED
+ >
+
+<!ELEMENT textarea (#PCDATA)> <!-- multi-line text field -->
+<!ATTLIST textarea
+ %attrs;
+ %focus;
+ name CDATA #IMPLIED
+ rows %Number; #REQUIRED
+ cols %Number; #REQUIRED
+ disabled (disabled) #IMPLIED
+ readonly (readonly) #IMPLIED
+ onselect %Script; #IMPLIED
+ onchange %Script; #IMPLIED
+ >
+
+<!--
+ The fieldset element is used to group form fields.
+ Only one legend element should occur in the content
+ and if present should only be preceded by whitespace.
+-->
+<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
+<!ATTLIST fieldset
+ %attrs;
+ >
+
+<!ENTITY % LAlign "(top|bottom|left|right)">
+
+<!ELEMENT legend %Inline;> <!-- fieldset label -->
+<!ATTLIST legend
+ %attrs;
+ accesskey %Character; #IMPLIED
+ align %LAlign; #IMPLIED
+ >
+
+<!--
+ Content is %Flow; excluding a, form, form controls, iframe
+-->
+<!ELEMENT button %button.content;> <!-- push button -->
+<!ATTLIST button
+ %attrs;
+ %focus;
+ name CDATA #IMPLIED
+ value CDATA #IMPLIED
+ type (button|submit|reset) "submit"
+ disabled (disabled) #IMPLIED
+ >
+
+<!-- single-line text input control (DEPRECATED) -->
+<!ELEMENT isindex EMPTY>
+<!ATTLIST isindex
+ %coreattrs;
+ %i18n;
+ prompt %Text; #IMPLIED
+ >
+
+<!--======================= Tables =======================================-->
+
+<!-- Derived from IETF HTML table standard, see [RFC1942] -->
+
+<!--
+ The border attribute sets the thickness of the frame around the
+ table. The default units are screen pixels.
+
+ The frame attribute specifies which parts of the frame around
+ the table should be rendered. The values are not the same as
+ CALS to avoid a name clash with the valign attribute.
+-->
+<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
+
+<!--
+ The rules attribute defines which rules to draw between cells:
+
+ If rules is absent then assume:
+ "none" if border is absent or border="0" otherwise "all"
+-->
+
+<!ENTITY % TRules "(none | groups | rows | cols | all)">
+
+<!-- horizontal placement of table relative to document -->
+<!ENTITY % TAlign "(left|center|right)">
+
+<!-- horizontal alignment attributes for cell contents
+
+ char alignment char, e.g. char=':'
+ charoff offset for alignment char
+-->
+<!ENTITY % cellhalign
+ "align (left|center|right|justify|char) #IMPLIED
+ char %Character; #IMPLIED
+ charoff %Length; #IMPLIED"
+ >
+
+<!-- vertical alignment attributes for cell contents -->
+<!ENTITY % cellvalign
+ "valign (top|middle|bottom|baseline) #IMPLIED"
+ >
+
+<!ELEMENT table
+ (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
+<!ELEMENT caption %Inline;>
+<!ELEMENT thead (tr)+>
+<!ELEMENT tfoot (tr)+>
+<!ELEMENT tbody (tr)+>
+<!ELEMENT colgroup (col)*>
+<!ELEMENT col EMPTY>
+<!ELEMENT tr (th|td)+>
+<!ELEMENT th %Flow;>
+<!ELEMENT td %Flow;>
+
+<!ATTLIST table
+ %attrs;
+ summary %Text; #IMPLIED
+ width %Length; #IMPLIED
+ border %Pixels; #IMPLIED
+ frame %TFrame; #IMPLIED
+ rules %TRules; #IMPLIED
+ cellspacing %Length; #IMPLIED
+ cellpadding %Length; #IMPLIED
+ align %TAlign; #IMPLIED
+ bgcolor %Color; #IMPLIED
+ >
+
+<!ENTITY % CAlign "(top|bottom|left|right)">
+
+<!ATTLIST caption
+ %attrs;
+ align %CAlign; #IMPLIED
+ >
+
+<!--
+colgroup groups a set of col elements. It allows you to group
+several semantically related columns together.
+-->
+<!ATTLIST colgroup
+ %attrs;
+ span %Number; "1"
+ width %MultiLength; #IMPLIED
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!--
+ col elements define the alignment properties for cells in
+ one or more columns.
+
+ The width attribute specifies the width of the columns, e.g.
+
+ width=64 width in screen pixels
+ width=0.5* relative width of 0.5
+
+ The span attribute causes the attributes of one
+ col element to apply to more than one column.
+-->
+<!ATTLIST col
+ %attrs;
+ span %Number; "1"
+ width %MultiLength; #IMPLIED
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!--
+ Use thead to duplicate headers when breaking table
+ across page boundaries, or for static headers when
+ tbody sections are rendered in scrolling panel.
+
+ Use tfoot to duplicate footers when breaking table
+ across page boundaries, or for static footers when
+ tbody sections are rendered in scrolling panel.
+
+ Use multiple tbody sections when rules are needed
+ between groups of table rows.
+-->
+<!ATTLIST thead
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tfoot
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tbody
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ >
+
+<!ATTLIST tr
+ %attrs;
+ %cellhalign;
+ %cellvalign;
+ bgcolor %Color; #IMPLIED
+ >
+
+<!-- Scope is simpler than headers attribute for common tables -->
+<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
+
+<!-- th is for headers, td for data and for cells acting as both -->
+
+<!ATTLIST th
+ %attrs;
+ abbr %Text; #IMPLIED
+ axis CDATA #IMPLIED
+ headers IDREFS #IMPLIED
+ scope %Scope; #IMPLIED
+ rowspan %Number; "1"
+ colspan %Number; "1"
+ %cellhalign;
+ %cellvalign;
+ nowrap (nowrap) #IMPLIED
+ bgcolor %Color; #IMPLIED
+ width %Length; #IMPLIED
+ height %Length; #IMPLIED
+ >
+
+<!ATTLIST td
+ %attrs;
+ abbr %Text; #IMPLIED
+ axis CDATA #IMPLIED
+ headers IDREFS #IMPLIED
+ scope %Scope; #IMPLIED
+ rowspan %Number; "1"
+ colspan %Number; "1"
+ %cellhalign;
+ %cellvalign;
+ nowrap (nowrap) #IMPLIED
+ bgcolor %Color; #IMPLIED
+ width %Length; #IMPLIED
+ height %Length; #IMPLIED
+ >
+
diff --git a/src/site/doxy/Doxyfile.in b/src/site/doxy/Doxyfile.in
index f39ae74..8f26948 100644
--- a/src/site/doxy/Doxyfile.in
+++ b/src/site/doxy/Doxyfile.in
@@ -13,1294 +13,2328 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-# Doxyfile 1.5.3
+# Doxyfile 1.8.6
# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
+# doxygen (www.doxygen.org) for a project.
#
-# All text after a hash (#) is considered a comment and will be ignored
+# All text after a double hash (##) is considered a comment and is placed in
+# front of the TAG it is preceding.
+#
+# All text after a single hash (#) is considered a comment and will be ignored.
# The format is:
-# TAG = value [value, ...]
-# For lists items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
+# TAG = value [value, ...]
+# For lists, items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (\" \").
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
-# This tag specifies the encoding used for all characters in the config file that
-# follow. The default is UTF-8 which is also the encoding used for all text before
-# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into
-# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of
-# possible encodings.
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all text
+# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
+# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
+# for the list of possible encodings.
+# The default value is: UTF-8.
DOXYFILE_ENCODING = UTF-8
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
-# by quotes) that should identify the project.
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
+# double-quotes, unless you are using Doxywizard) that should identify the
+# project for which the documentation is generated. This name is used in the
+# title of most generated pages and in a few other places.
+# The default value is: My Project.
+
+PROJECT_NAME = "Apache log4cxx (Incubating)"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
+# could be handy for archiving the generated documentation or if some version
+# control system is used.
+
+PROJECT_NUMBER = "Version @version@"
-PROJECT_NAME = "Apache log4cxx"
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer a
+# quick idea about the purpose of the project. Keep the description short.
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
+PROJECT_BRIEF =
-PROJECT_NUMBER = "Version @VERSION@"
+# With the PROJECT_LOGO tag one can specify an logo or icon that is included in
+# the documentation. The maximum height of the logo should not exceed 55 pixels
+# and the maximum width should not exceed 200 pixels. Doxygen will copy the logo
+# to the output directory.
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
+PROJECT_LOGO =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
+# into which the generated documentation will be written. If a relative path is
+# entered, it will be relative to the location where doxygen was started. If
+# left blank the current directory will be used.
OUTPUT_DIRECTORY = .
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub-
+# directories (in 2 levels) under the output directory of each output format and
+# will distribute the generated files over these directories. Enabling this
+# option can be useful when feeding doxygen a huge amount of source files, where
+# putting all generated files in the same directory would otherwise causes
+# performance problems for the file system.
+# The default value is: NO.
CREATE_SUBDIRS = NO
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
-# Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian,
-# Italian, Japanese, Japanese-en (Japanese with English messages), Korean,
-# Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian,
-# Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
+# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
+# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
+# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
+# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
+# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
+# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
+# Ukrainian and Vietnamese.
+# The default value is: English.
OUTPUT_LANGUAGE = English
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
+# If the BRIEF_MEMBER_DESC tag is set to YES doxygen will include brief member
+# descriptions after the members that are listed in the file and class
+# documentation (similar to Javadoc). Set to NO to disable this.
+# The default value is: YES.
BRIEF_MEMBER_DESC = YES
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# If the REPEAT_BRIEF tag is set to YES doxygen will prepend the brief
+# description of a member or function before the detailed description
+#
+# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
# brief descriptions will be completely suppressed.
+# The default value is: YES.
REPEAT_BRIEF = YES
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
+# This tag implements a quasi-intelligent brief description abbreviator that is
+# used to form the text in various listings. Each string in this list, if found
+# as the leading text of the brief description, will be stripped from the text
+# and the result, after processing the whole list, is used as the annotated
+# text. Otherwise, the brief description is used as-is. If left blank, the
+# following values are used ($name is automatically replaced with the name of
+# the entity):The $name class, The $name widget, The $name file, is, provides,
+# specifies, contains, represents, a, an and the.
-ABBREVIATE_BRIEF =
+ABBREVIATE_BRIEF =
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# doxygen will generate a detailed section even if there is only a brief
# description.
+# The default value is: NO.
ALWAYS_DETAILED_SEC = NO
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
# operators of the base classes will not be shown.
+# The default value is: NO.
INLINE_INHERITED_MEMB = NO
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
+# If the FULL_PATH_NAMES tag is set to YES doxygen will prepend the full path
+# before files name in the file list and in the header files. If set to NO the
+# shortest path that makes the file name unique will be used
+# The default value is: YES.
FULL_PATH_NAMES = NO
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip.
+# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
+# Stripping is only done if one of the specified strings matches the left-hand
+# part of the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the path to
+# strip.
+#
+# Note that you can specify absolute paths here, but also relative paths, which
+# will be relative from the directory where doxygen is started.
+# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-STRIP_FROM_PATH =
+STRIP_FROM_PATH =
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
+# path mentioned in the documentation of a class, which tells the reader which
+# header file to include in order to use a class. If left blank only the name of
+# the header file containing the class definition is used. Otherwise one should
+# specify the list of include paths that are normally passed to the compiler
+# using the -I flag.
-STRIP_FROM_INC_PATH =
+STRIP_FROM_INC_PATH =
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful is your file systems
-# doesn't support long names like on DOS, Mac, or CD-ROM.
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
+# less readable) file names. This can be useful is your file systems doesn't
+# support long names like on DOS, Mac, or CD-ROM.
+# The default value is: NO.
SHORT_NAMES = NO
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like regular Qt-style comments
-# (thus requiring an explicit @brief command for a brief description.)
+# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
+# first line (until the first dot) of a Javadoc-style comment as the brief
+# description. If set to NO, the Javadoc-style will behave just like regular Qt-
+# style comments (thus requiring an explicit @brief command for a brief
+# description.)
+# The default value is: NO.
JAVADOC_AUTOBRIEF = YES
-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
-# interpret the first line (until the first dot) of a Qt-style
-# comment as the brief description. If set to NO, the comments
-# will behave just like regular Qt-style comments (thus requiring
-# an explicit \brief command for a brief description.)
+# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
+# line (until the first dot) of a Qt-style comment as the brief description. If
+# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
+# requiring an explicit \brief command for a brief description.)
+# The default value is: NO.
QT_AUTOBRIEF = NO
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
+# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
+# a brief description. This used to be the default behavior. The new default is
+# to treat a multi-line C++ comment block as a detailed description. Set this
+# tag to YES if you prefer the old behavior instead.
+#
+# Note that setting this tag to YES also means that rational rose comments are
+# not recognized any more.
+# The default value is: NO.
MULTILINE_CPP_IS_BRIEF = NO
-# If the DETAILS_AT_TOP tag is set to YES then Doxygen
-# will output the detailed description near the top, like JavaDoc.
-# If set to NO, the detailed description appears after the member
-# documentation.
-
-DETAILS_AT_TOP = YES
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
+# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
+# documentation from any documented member that it re-implements.
+# The default value is: YES.
INHERIT_DOCS = YES
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce a
+# new page for each member. If set to NO, the documentation of a member will be
+# part of the file/class/namespace that contains it.
+# The default value is: NO.
SEPARATE_MEMBER_PAGES = NO
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
+# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
+# uses this value to replace tabs by spaces in code fragments.
+# Minimum value: 1, maximum value: 16, default value: 4.
+
+TAB_SIZE = 4
-TAB_SIZE = 8
+# This tag can be used to specify a number of aliases that act as commands in
+# the documentation. An alias has the form:
+# name=value
+# For example adding
+# "sideeffect=@par Side Effects:\n"
+# will allow you to put the command \sideeffect (or @sideeffect) in the
+# documentation, which will result in a user-defined paragraph with heading
+# "Side Effects:". You can put \n's in the value part of an alias to insert
+# newlines.
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
+ALIASES =
-ALIASES =
+# This tag can be used to specify a number of word-keyword mappings (TCL only).
+# A mapping has the form "name=value". For example adding "class=itcl::class"
+# will allow you to use the command class in the itcl::class meaning.
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
+TCL_SUBST =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
+# only. Doxygen will then generate output that is more tailored for C. For
+# instance, some of the names that are used will be different. The list of all
+# members will be omitted, etc.
+# The default value is: NO.
OPTIMIZE_OUTPUT_FOR_C = NO
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for Java.
-# For instance, namespaces will be presented as packages, qualified scopes
-# will look different, etc.
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
+# Python sources only. Doxygen will then generate output that is more tailored
+# for that language. For instance, namespaces will be presented as packages,
+# qualified scopes will look different, etc.
+# The default value is: NO.
OPTIMIZE_OUTPUT_JAVA = NO
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to
-# include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also make the inheritance and collaboration
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources. Doxygen will then generate output that is tailored for Fortran.
+# The default value is: NO.
+
+OPTIMIZE_FOR_FORTRAN = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for VHDL.
+# The default value is: NO.
+
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it
+# parses. With this tag you can assign which parser to use for a given
+# extension. Doxygen has a built-in mapping, but you can override or extend it
+# using this tag. The format is ext=language, where ext is a file extension, and
+# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
+# C#, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL. For instance to make
+# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C
+# (default is Fortran), use: inc=Fortran f=C.
+#
+# Note For files without extension you can use no_extension as a placeholder.
+#
+# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
+# the files are not read by doxygen.
+
+EXTENSION_MAPPING =
+
+# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
+# according to the Markdown format, which allows for more readable
+# documentation. See http://daringfireball.net/projects/markdown/ for details.
+# The output of markdown processing is further processed by doxygen, so you can
+# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
+# case of backward compatibilities issues.
+# The default value is: YES.
+
+MARKDOWN_SUPPORT = YES
+
+# When enabled doxygen tries to link words that correspond to documented
+# classes, or namespaces to their corresponding documentation. Such a link can
+# be prevented in individual cases by by putting a % sign in front of the word
+# or globally by setting AUTOLINK_SUPPORT to NO.
+# The default value is: YES.
+
+AUTOLINK_SUPPORT = YES
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should set this
+# tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string);
+# versus func(std::string) {}). This also make the inheritance and collaboration
# diagrams that involve STL classes more complete and accurate.
+# The default value is: NO.
-BUILTIN_STL_SUPPORT = NO
+BUILTIN_STL_SUPPORT = YES
# If you use Microsoft's C++/CLI language, you should set this option to YES to
# enable parsing support.
+# The default value is: NO.
CPP_CLI_SUPPORT = NO
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
+# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
+# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
+# will parse them like normal C++ but will assume all classes use public instead
+# of private inheritance when no explicit protection keyword is present.
+# The default value is: NO.
+
+SIP_SUPPORT = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate
+# getter and setter methods for a property. Setting this option to YES will make
+# doxygen to replace the get and set methods by a property in the documentation.
+# This will only work if the methods are indeed getting or setting a simple
+# type. If this is not the case, or you want to show the methods anyway, you
+# should set this option to NO.
+# The default value is: YES.
+
+IDL_PROPERTY_SUPPORT = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
# all members of a group must be documented explicitly.
+# The default value is: NO.
DISTRIBUTE_GROUP_DOC = NO
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
+# Set the SUBGROUPING tag to YES to allow class member groups of the same type
+# (for instance a group of public functions) to be put as a subgroup of that
+# type (e.g. under the Public Functions section). Set it to NO to prevent
+# subgrouping. Alternatively, this can be done per class using the
+# \nosubgrouping command.
+# The default value is: YES.
SUBGROUPING = YES
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
+# are shown inside the group in which they are included (e.g. using \ingroup)
+# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
+# and RTF).
+#
+# Note that this feature does not work in combination with
+# SEPARATE_MEMBER_PAGES.
+# The default value is: NO.
+
+INLINE_GROUPED_CLASSES = NO
+
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
+# with only public data fields or simple typedef fields will be shown inline in
+# the documentation of the scope in which they are defined (i.e. file,
+# namespace, or group documentation), provided this scope is documented. If set
+# to NO, structs, classes, and unions are shown on a separate page (for HTML and
+# Man pages) or section (for LaTeX and RTF).
+# The default value is: NO.
+
+INLINE_SIMPLE_STRUCTS = NO
+
+# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
+# enum is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically be
+# useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+# The default value is: NO.
+
+TYPEDEF_HIDES_STRUCT = NO
+
+# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
+# cache is used to resolve symbols given their name and scope. Since this can be
+# an expensive process and often the same symbol appears multiple times in the
+# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
+# doxygen will become slower. If the cache is too large, memory is wasted. The
+# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
+# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
+# symbols. At the end of a run doxygen will report the cache usage and suggest
+# the optimal cache size from a speed point of view.
+# Minimum value: 0, maximum value: 9, default value: 0.
+
+LOOKUP_CACHE_SIZE = 0
+
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available. Private
+# class members and static file members will be hidden unless the
+# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
+# Note: This will also disable the warnings about undocumented members that are
+# normally produced when WARNINGS is set to YES.
+# The default value is: NO.
EXTRACT_ALL = YES
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class will
+# be included in the documentation.
+# The default value is: NO.
EXTRACT_PRIVATE = NO
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
+# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+# scope will be included in the documentation.
+# The default value is: NO.
+
+EXTRACT_PACKAGE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file will be
+# included in the documentation.
+# The default value is: NO.
EXTRACT_STATIC = YES
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) defined
+# locally in source files will be included in the documentation. If set to NO
+# only classes defined in header files are included. Does not have any effect
+# for Java sources.
+# The default value is: YES.
EXTRACT_LOCAL_CLASSES = NO
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
+# This flag is only useful for Objective-C code. When set to YES local methods,
+# which are defined in the implementation section but not in the interface are
+# included in the documentation. If set to NO only methods in the interface are
+# included.
+# The default value is: NO.
EXTRACT_LOCAL_METHODS = NO
-# If this flag is set to YES, the members of anonymous namespaces will be extracted
-# and appear in the documentation as a namespace called 'anonymous_namespace{file}',
-# where file will be replaced with the base name of the file that contains the anonymous
-# namespace. By default anonymous namespace are hidden.
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base name of
+# the file that contains the anonymous namespace. By default anonymous namespace
+# are hidden.
+# The default value is: NO.
EXTRACT_ANON_NSPACES = NO
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
+# undocumented members inside documented classes or files. If set to NO these
+# members will be included in the various overviews, but no documentation
+# section is generated. This option has no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
HIDE_UNDOC_MEMBERS = NO
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
+# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy. If set
+# to NO these classes will be included in the various overviews. This option has
+# no effect if EXTRACT_ALL is enabled.
+# The default value is: NO.
HIDE_UNDOC_CLASSES = NO
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
+# (class|struct|union) declarations. If set to NO these declarations will be
+# included in the documentation.
+# The default value is: NO.
HIDE_FRIEND_COMPOUNDS = NO
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
+# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
+# documentation blocks found inside the body of a function. If set to NO these
+# blocks will be appended to the function's detailed documentation block.
+# The default value is: NO.
HIDE_IN_BODY_DOCS = NO
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
+# The INTERNAL_DOCS tag determines if documentation that is typed after a
+# \internal command is included. If the tag is set to NO then the documentation
+# will be excluded. Set it to YES to include the internal documentation.
+# The default value is: NO.
INTERNAL_DOCS = NO
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
+# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
+# names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
# and Mac users are advised to set this option to NO.
+# The default value is: system dependent.
CASE_SENSE_NAMES = NO
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
+# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
+# their full class and namespace scopes in the documentation. If set to YES the
+# scope will be hidden.
+# The default value is: NO.
HIDE_SCOPE_NAMES = YES
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
+# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
+# the files that are included by a file in the documentation of that file.
+# The default value is: YES.
SHOW_INCLUDE_FILES = NO
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
+# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
+# grouped member an include statement to the documentation, telling the reader
+# which file to include in order to use the member.
+# The default value is: NO.
+
+SHOW_GROUPED_MEMB_INC = NO
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
+# files with double quotes in the documentation rather than with sharp brackets.
+# The default value is: NO.
+
+FORCE_LOCAL_INCLUDES = NO
+
+# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
+# documentation for inline members.
+# The default value is: YES.
INLINE_INFO = YES
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
+# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
+# (detailed) documentation of file and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order.
+# The default value is: YES.
SORT_MEMBER_DOCS = YES
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
+# descriptions of file, namespace and class members alphabetically by member
+# name. If set to NO the members will appear in declaration order. Note that
+# this will also influence the order of the classes in the class list.
+# The default value is: NO.
SORT_BRIEF_DOCS = NO
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
+# (brief and detailed) documentation of class members so that constructors and
+# destructors are listed first. If set to NO the constructors will appear in the
+# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
+# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
+# member documentation.
+# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
+# detailed member documentation.
+# The default value is: NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
+# of group names into alphabetical order. If set to NO the group names will
+# appear in their defined order.
+# The default value is: NO.
+
+SORT_GROUP_NAMES = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
+# fully-qualified names, including namespaces. If set to NO, the class list will
+# be sorted only by class name, not including the namespace part.
# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
+# Note: This option applies only to the class list, not to the alphabetical
+# list.
+# The default value is: NO.
SORT_BY_SCOPE_NAME = NO
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
+# type resolution of all parameters of a function it will reject a match between
+# the prototype and the implementation of a member function even if there is
+# only one candidate or it is obvious which candidate to choose by doing a
+# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
+# accept a match between prototype and implementation in such cases.
+# The default value is: NO.
+
+STRICT_PROTO_MATCHING = NO
+
+# The GENERATE_TODOLIST tag can be used to enable ( YES) or disable ( NO) the
+# todo list. This list is created by putting \todo commands in the
+# documentation.
+# The default value is: YES.
GENERATE_TODOLIST = YES
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
+# The GENERATE_TESTLIST tag can be used to enable ( YES) or disable ( NO) the
+# test list. This list is created by putting \test commands in the
+# documentation.
+# The default value is: YES.
GENERATE_TESTLIST = YES
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
+# The GENERATE_BUGLIST tag can be used to enable ( YES) or disable ( NO) the bug
+# list. This list is created by putting \bug commands in the documentation.
+# The default value is: YES.
GENERATE_BUGLIST = YES
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
+# The GENERATE_DEPRECATEDLIST tag can be used to enable ( YES) or disable ( NO)
+# the deprecated list. This list is created by putting \deprecated commands in
+# the documentation.
+# The default value is: YES.
GENERATE_DEPRECATEDLIST= NO
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
+# The ENABLED_SECTIONS tag can be used to enable conditional documentation
+# sections, marked by \if <section_label> ... \endif and \cond <section_label>
+# ... \endcond blocks.
-ENABLED_SECTIONS =
+ENABLED_SECTIONS =
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or define consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and defines in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
+# initial value of a variable or macro / define can have for it to appear in the
+# documentation. If the initializer consists of more lines than specified here
+# it will be hidden. Use a value of 0 to hide initializers completely. The
+# appearance of the value of individual variables and macros / defines can be
+# controlled using \showinitializer or \hideinitializer command in the
+# documentation regardless of this setting.
+# Minimum value: 0, maximum value: 10000, default value: 30.
MAX_INITIALIZER_LINES = 30
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
+# the bottom of the documentation of classes and structs. If set to YES the list
+# will mention the files that were used to generate the documentation.
+# The default value is: YES.
SHOW_USED_FILES = YES
-# If the sources in your project are distributed over multiple directories
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
-# in the documentation. The default is NO.
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
+# will remove the Files entry from the Quick Index and from the Folder Tree View
+# (if specified).
+# The default value is: YES.
+
+SHOW_FILES = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
+# page. This will remove the Namespaces entry from the Quick Index and from the
+# Folder Tree View (if specified).
+# The default value is: YES.
+
+SHOW_NAMESPACES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command command input-file, where command is the value of the
+# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
+# by doxygen. Whatever the program writes to standard output is used as the file
+# version. For an example see the documentation.
-SHOW_DIRECTORIES = NO
+FILE_VERSION_FILTER =
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from the
-# version control system). Doxygen will invoke the program by executing (via
-# popen()) the command <command> <input-file>, where <command> is the value of
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+# by doxygen. The layout file controls the global structure of the generated
+# output files in an output format independent way. To create the layout file
+# that represents doxygen's defaults, run doxygen with the -l option. You can
+# optionally specify a file name after the option, if omitted DoxygenLayout.xml
+# will be used as the name of the layout file.
+#
+# Note that if you run doxygen from a directory containing a file called
+# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
+# tag is left empty.
+
+LAYOUT_FILE =
+
+# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
+# the reference definitions. This must be a list of .bib files. The .bib
+# extension is automatically appended if omitted. This requires the bibtex tool
+# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
+# For LaTeX the style of the bibliography can be controlled using
+# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
+# search path. Do not use file names with spaces, bibtex cannot handle them. See
+# also \cite for info how to create references.
-FILE_VERSION_FILTER =
+CITE_BIB_FILES =
#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
+# Configuration options related to warning and progress messages
#---------------------------------------------------------------------------
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
+# The QUIET tag can be used to turn on/off the messages that are generated to
+# standard output by doxygen. If QUIET is set to YES this implies that the
+# messages are off.
+# The default value is: NO.
QUIET = NO
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated to standard error ( stderr) by doxygen. If WARNINGS is set to YES
+# this implies that the warnings are on.
+#
+# Tip: Turn warnings on while writing the documentation.
+# The default value is: YES.
WARNINGS = YES
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
+# If the WARN_IF_UNDOCUMENTED tag is set to YES, then doxygen will generate
+# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
+# will automatically be disabled.
+# The default value is: YES.
WARN_IF_UNDOCUMENTED = NO
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
+# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some parameters
+# in a documented function, or documenting parameters that don't exist or using
+# markup commands wrongly.
+# The default value is: YES.
WARN_IF_DOC_ERROR = YES
-# This WARN_NO_PARAMDOC option can be abled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
+# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
+# are documented, but have no documentation for their parameters or return
+# value. If set to NO doxygen will only warn about wrong or incomplete parameter
+# documentation, but not about the absence of documentation.
+# The default value is: NO.
WARN_NO_PARAMDOC = NO
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
+# The WARN_FORMAT tag determines the format of the warning messages that doxygen
+# can produce. The string should contain the $file, $line, and $text tags, which
+# will be replaced by the file and line number from which the warning originated
+# and the warning text. Optionally the format may contain $version, which will
+# be replaced by the version of the file (if it could be obtained via
+# FILE_VERSION_FILTER)
+# The default value is: $file:$line: $text.
-WARN_FORMAT = "$file:$line: $text "
+WARN_FORMAT = "$file:$line: $text"
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
+# The WARN_LOGFILE tag can be used to specify a file to which warning and error
+# messages should be written. If left blank the output is written to standard
+# error (stderr).
-WARN_LOGFILE =
+WARN_LOGFILE =
#---------------------------------------------------------------------------
-# configuration options related to the input files
+# Configuration options related to the input files
#---------------------------------------------------------------------------
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
+# The INPUT tag is used to specify the files and/or directories that contain
+# documented source files. You may enter file names like myfile.cpp or
+# directories like /usr/src/myproject. Separate the files or directories with
+# spaces.
+# Note: If this tag is empty the current directory is searched.
-INPUT = \
- @base_dir@/src/main/include \
- @base_dir@/src/site/doxy/mainpage.dox
+INPUT = @base_dir@/src/main/include \
+ @base_dir@/target/mainpage.dox
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
+# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
+# documentation (see: http://www.gnu.org/software/libiconv) for the list of
+# possible encodings.
+# The default value is: UTF-8.
+
+INPUT_ENCODING = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank the
+# following patterns are tested:*.c, *.cc, *.cxx, *.cpp, *.c++, *.java, *.ii,
+# *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp,
+# *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown,
+# *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf,
+# *.qsf, *.as and *.js.
FILE_PATTERNS = *.h
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
+# The RECURSIVE tag can be used to specify whether or not subdirectories should
+# be searched for input files as well.
+# The default value is: NO.
RECURSIVE = YES
-# The EXCLUDE tag can be used to specify files and/or directories that should
-# excluded from the INPUT source files. This way you can easily exclude a
+# The EXCLUDE tag can be used to specify files and/or directories that should be
+# excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag.
+#
+# Note that relative paths are relative to the directory from which doxygen is
+# run.
-EXCLUDE =
+EXCLUDE =
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
-# directories that are symbolic links (a Unix filesystem feature) are excluded
+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+# directories that are symbolic links (a Unix file system feature) are excluded
# from the input.
+# The default value is: NO.
EXCLUDE_SYMLINKS = NO
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories.
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories for example use the pattern */test/*
-EXCLUDE_PATTERNS =
+EXCLUDE_PATTERNS =
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the output.
-# The symbol name can be a fully qualified name, a word, or if the wildcard * is used,
-# a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+#
+# Note that the wildcards are matched against the file with absolute path, so to
+# exclude all test directories use the pattern */test/*
-EXCLUDE_SYMBOLS =
+EXCLUDE_SYMBOLS =
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
+# The EXAMPLE_PATH tag can be used to specify one or more files or directories
+# that contain example code fragments that are included (see the \include
+# command).
-EXAMPLE_PATH =
+EXAMPLE_PATH =
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
+# *.h) to filter out the source-files in the directories. If left blank all
+# files are included.
-EXAMPLE_PATTERNS =
+EXAMPLE_PATTERNS =
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude commands
+# irrespective of the value of the RECURSIVE tag.
+# The default value is: NO.
EXAMPLE_RECURSIVE = NO
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
+# The IMAGE_PATH tag can be used to specify one or more files or directories
+# that contain images that are to be included in the documentation (see the
+# \image command).
-IMAGE_PATH =
+IMAGE_PATH =
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output. If FILTER_PATTERNS is specified, this tag will be
-# ignored.
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command:
+#
+# <filter> <input-file>
+#
+# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
+# name of an input file. Doxygen will then use the output that the filter
+# program writes to standard output. If FILTER_PATTERNS is specified, this tag
+# will be ignored.
+#
+# Note that the filter must not add or remove lines; it is applied before the
+# code is scanned, but not when the output code is generated. If lines are added
+# or removed, the anchors will not be placed correctly.
-INPUT_FILTER =
+INPUT_FILTER =
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
-# is applied to all files.
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form: pattern=filter
+# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
+# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
+# patterns match the file name, INPUT_FILTER is applied.
-FILTER_PATTERNS =
+FILTER_PATTERNS =
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER ) will also be used to filter the input files that are used for
+# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
+# The default value is: NO.
FILTER_SOURCE_FILES = NO
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
+# it is also possible to disable source filtering for a specific pattern using
+# *.ext= (so without naming a filter).
+# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
+
+FILTER_SOURCE_PATTERNS =
+
+# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
+# is part of the input, its contents will be placed on the main page
+# (index.html). This can be useful if you have a project on for instance GitHub
+# and want to reuse the introduction page also for the doxygen output.
+
+USE_MDFILE_AS_MAINPAGE =
+
#---------------------------------------------------------------------------
-# configuration options related to source browsing
+# Configuration options related to source browsing
#---------------------------------------------------------------------------
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO. If you have enabled CALL_GRAPH or CALLER_GRAPH
-# then you must also enable this option. If you don't then doxygen will produce
-# a warning and turn it on anyway
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
+# generated. Documented entities will be cross-referenced with these sources.
+#
+# Note: To get rid of all source code in the generated output, make sure that
+# also VERBATIM_HEADERS is set to NO.
+# The default value is: NO.
SOURCE_BROWSER = NO
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
+# Setting the INLINE_SOURCES tag to YES will include the body of functions,
+# classes and enums directly into the documentation.
+# The default value is: NO.
INLINE_SOURCES = NO
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
+# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
+# special comment blocks from generated source code fragments. Normal C, C++ and
+# Fortran comments will always remain visible.
+# The default value is: YES.
STRIP_CODE_COMMENTS = YES
-# If the REFERENCED_BY_RELATION tag is set to YES (the default)
-# then for each documented function all documented
-# functions referencing it will be listed.
+# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
+# function all documented functions referencing it will be listed.
+# The default value is: NO.
REFERENCED_BY_RELATION = NO
-# If the REFERENCES_RELATION tag is set to YES (the default)
-# then for each documented function all documented entities
-# called/used by that function will be listed.
+# If the REFERENCES_RELATION tag is set to YES then for each documented function
+# all documented entities called/used by that function will be listed.
+# The default value is: NO.
REFERENCES_RELATION = NO
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code. Otherwise they will link to the documentstion.
+# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
+# to YES, then the hyperlinks from functions in REFERENCES_RELATION and
+# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
+# link to the documentation.
+# The default value is: YES.
REFERENCES_LINK_SOURCE = YES
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
+# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
+# source code will show a tooltip with additional information such as prototype,
+# brief description and links to the definition and documentation. Since this
+# will make the HTML file larger and loading of large files a bit slower, you
+# can opt to disable this feature.
+# The default value is: YES.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
+
+SOURCE_TOOLTIPS = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code will
+# point to the HTML generated by the htags(1) tool instead of doxygen built-in
+# source browser. The htags tool is part of GNU's global source tagging system
+# (see http://www.gnu.org/software/global/global.html). You will need version
+# 4.8.6 or higher.
+#
+# To use it do the following:
+# - Install the latest version of global
+# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
+# - Make sure the INPUT points to the root of the source tree
+# - Run doxygen as normal
+#
+# Doxygen will invoke htags (and that will in turn invoke gtags), so these
+# tools must be available from the command line (i.e. in the search path).
+#
+# The result: instead of the source browser generated by doxygen, the links to
+# source code will now point to the output of htags.
+# The default value is: NO.
+# This tag requires that the tag SOURCE_BROWSER is set to YES.
USE_HTAGS = NO
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
+# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
+# verbatim copy of the header file for each class for which an include is
+# specified. Set to NO to disable this.
+# See also: Section \class.
+# The default value is: YES.
VERBATIM_HEADERS = NO
+# If the CLANG_ASSISTED_PARSING tag is set to YES, then doxygen will use the
+# clang parser (see: http://clang.llvm.org/) for more acurate parsing at the
+# cost of reduced performance. This can be particularly helpful with template
+# rich C++ code for which doxygen's built-in parser lacks the necessary type
+# information.
+# Note: The availability of this option depends on whether or not doxygen was
+# compiled with the --with-libclang option.
+# The default value is: NO.
+
+CLANG_ASSISTED_PARSING = NO
+
+# If clang assisted parsing is enabled you can provide the compiler with command
+# line options that you would normally use when invoking the compiler. Note that
+# the include paths will already be set by doxygen for the files and directories
+# specified with INPUT and INCLUDE_PATH.
+# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
+
+CLANG_OPTIONS =
+
#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
+# Configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
+# compounds will be generated. Enable this if the project contains a lot of
+# classes, structs, unions or interfaces.
+# The default value is: YES.
ALPHABETICAL_INDEX = YES
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
+# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
+# which the alphabetical index list will be split.
+# Minimum value: 1, maximum value: 20, default value: 5.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
COLS_IN_ALPHA_INDEX = 2
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
+# In case all classes in a project start with a common prefix, all classes will
+# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
+# can be used to specify a prefix (or a list of prefixes) that should be ignored
+# while generating the index headers.
+# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-IGNORE_PREFIX =
+IGNORE_PREFIX =
#---------------------------------------------------------------------------
-# configuration options related to the HTML output
+# Configuration options related to the HTML output
#---------------------------------------------------------------------------
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
+# If the GENERATE_HTML tag is set to YES doxygen will generate HTML output
+# The default value is: YES.
GENERATE_HTML = YES
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_OUTPUT = @manual_dest@
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
+# generated HTML page (for example: .htm, .php, .asp).
+# The default value is: .html.
+# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_FILE_EXTENSION = .html
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
+# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
+# each generated HTML page. If the tag is left blank doxygen will generate a
# standard header.
-
-HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
+#
+# To get valid HTML the header file that includes any scripts and style sheets
+# that doxygen needs, which is dependent on the configuration options used (e.g.
+# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
+# default header using
+# doxygen -w html new_header.html new_footer.html new_stylesheet.css
+# YourConfigFile
+# and then modify the file new_header.html. See also section "Doxygen usage"
+# for information on how to generate the default header that doxygen normally
+# uses.
+# Note: The header is subject to change so you typically have to regenerate the
+# default header when upgrading to a newer version of doxygen. For a description
+# of the possible markers and block names see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
+# generated HTML page. If the tag is left blank doxygen will generate a standard
+# footer. See HTML_HEADER for more information on how to generate a default
+# footer and what special commands can be used inside the footer. See also
+# section "Doxygen usage" for information on how to generate the default footer
+# that doxygen normally uses.
+# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_FOOTER = @base_dir@/src/site/doxy/license_notice_footer.txt
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET =
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
+# sheet that is used by each HTML page. It can be used to fine-tune the look of
+# the HTML output. If left blank doxygen will generate a default style sheet.
+# See also section "Doxygen usage" for information on how to generate the style
+# sheet that doxygen normally uses.
+# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
+# it is more robust and this tag (HTML_STYLESHEET) will in the future become
+# obsolete.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_STYLESHEET =
+
+# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional user-
+# defined cascading style sheet that is included after the standard style sheets
+# created by doxygen. Using this option one can overrule certain style aspects.
+# This is preferred over using HTML_STYLESHEET since it does not replace the
+# standard style sheet and is therefor more robust against future updates.
+# Doxygen will copy the style sheet file to the output directory. For an example
+# see the documentation.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_STYLESHEET =
+
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the HTML output directory. Note
+# that these files will be copied to the base HTML output directory. Use the
+# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
+# files will be copied as-is; there are no commands or markers available.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_EXTRA_FILES =
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
+# will adjust the colors in the stylesheet and background images according to
+# this color. Hue is specified as an angle on a colorwheel, see
+# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
+# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
+# purple, and 360 is red again.
+# Minimum value: 0, maximum value: 359, default value: 220.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_HUE = 220
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
+# in the HTML output. For a value of 0 the output will use grayscales only. A
+# value of 255 will produce the most vivid colors.
+# Minimum value: 0, maximum value: 255, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_SAT = 100
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
+# luminance component of the colors in the HTML output. Values below 100
+# gradually make the output lighter, whereas values above 100 make the output
+# darker. The value divided by 100 is the actual gamma applied, so 80 represents
+# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
+# change the gamma.
+# Minimum value: 40, maximum value: 240, default value: 80.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_COLORSTYLE_GAMMA = 80
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting this
+# to NO can help when comparing the output of multiple runs.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_TIMESTAMP = NO
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS = YES
+HTML_DYNAMIC_SECTIONS = NO
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
-# of the generated HTML documentation.
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
+# shown in the various tree structured indices initially; the user can expand
+# and collapse entries dynamically later on. Doxygen will expand the tree to
+# such a level that at most the specified number of entries are visible (unless
+# a fully collapsed tree already exceeds this amount). So setting the number of
+# entries 1 will produce a full collapsed tree by default. 0 is a special value
+# representing an infinite number of entries and will result in a full expanded
+# tree by default.
+# Minimum value: 0, maximum value: 9999, default value: 100.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+HTML_INDEX_NUM_ENTRIES = 100
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files will be
+# generated that can be used as input for Apple's Xcode 3 integrated development
+# environment (see: http://developer.apple.com/tools/xcode/), introduced with
+# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
+# Makefile in the HTML output directory. Running make will produce the docset in
+# that directory and running make install will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
+# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+# for more information.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_DOCSET = NO
+
+# This tag determines the name of the docset feed. A documentation feed provides
+# an umbrella under which multiple documentation sets from a single provider
+# (such as a company or product suite) can be grouped.
+# The default value is: Doxygen generated docs.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_FEEDNAME = "Doxygen generated docs"
+
+# This tag specifies a string that should uniquely identify the documentation
+# set bundle. This should be a reverse domain-name style string, e.g.
+# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_BUNDLE_ID = org.doxygen.Project
+
+# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
+# the documentation publisher. This should be a reverse domain-name style
+# string, e.g. com.mycompany.MyDocSet.documentation.
+# The default value is: org.doxygen.Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_ID = org.doxygen.Publisher
+
+# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
+# The default value is: Publisher.
+# This tag requires that the tag GENERATE_DOCSET is set to YES.
+
+DOCSET_PUBLISHER_NAME = Publisher
+
+# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
+# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
+# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
+# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
+# Windows.
+#
+# The HTML Help Workshop contains a compiler that can convert all HTML output
+# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
+# files are now used as the Windows 98 help format, and will replace the old
+# Windows help format (.hlp) on all Windows platforms in the future. Compressed
+# HTML files also contain an index, a table of contents, and you can search for
+# words in the documentation. The HTML workshop also contains a viewer for
+# compressed HTML files.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_HTMLHELP = NO
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded. For this to work a browser that supports
-# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
-# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
-
-HTML_DYNAMIC_SECTIONS = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
+# The CHM_FILE tag can be used to specify the file name of the resulting .chm
+# file. You can add a path in front of the file if the result should not be
# written to the html output directory.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-CHM_FILE =
+CHM_FILE =
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
+# The HHC_LOCATION tag can be used to specify the location (absolute path
+# including file name) of the HTML help compiler ( hhc.exe). If non-empty
+# doxygen will try to run the HTML help compiler on the generated index.hhp.
+# The file has to be specified with full path.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-HHC_LOCATION =
+HHC_LOCATION =
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
+# The GENERATE_CHI flag controls if a separate .chi index file is generated (
+# YES) or that it should be included in the master .chm file ( NO).
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
GENERATE_CHI = NO
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
+# The CHM_INDEX_ENCODING is used to encode HtmlHelp index ( hhk), content ( hhc)
+# and project file content.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
+CHM_INDEX_ENCODING =
+
+# The BINARY_TOC flag controls whether a binary table of contents is generated (
+# YES) or a normal table of contents ( NO) in the .chm file.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
BINARY_TOC = NO
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
+# The TOC_EXPAND flag can be set to YES to add extra items for group members to
+# the table of contents of the HTML help documentation and to the tree view.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
TOC_EXPAND = NO
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
+# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
+# (.qch) of the generated HTML documentation.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_QHP = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
+# the file name of the resulting .qch file. The path specified is relative to
+# the HTML output folder.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QCH_FILE =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
+# Project output. For more information please see Qt Help Project / Namespace
+# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_NAMESPACE = org.doxygen.Project
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
+# Help Project output. For more information please see Qt Help Project / Virtual
+# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
+# folders).
+# The default value is: doc.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
+# filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_NAME =
+
+# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see Qt Help Project / Custom
+# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
+# filters).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_CUST_FILTER_ATTRS =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's filter section matches. Qt Help Project / Filter Attributes (see:
+# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHP_SECT_FILTER_ATTRS =
+
+# The QHG_LOCATION tag can be used to specify the location of Qt's
+# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
+# generated .qhp file.
+# This tag requires that the tag GENERATE_QHP is set to YES.
+
+QHG_LOCATION =
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
+# generated, together with the HTML files, they form an Eclipse help plugin. To
+# install this plugin and make it available under the help contents menu in
+# Eclipse, the contents of the directory containing the HTML and XML files needs
+# to be copied into the plugins directory of eclipse. The name of the directory
+# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
+# After copying Eclipse needs to be restarted before the help appears.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+GENERATE_ECLIPSEHELP = NO
+
+# A unique identifier for the Eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have this
+# name. Each documentation set should have its own identifier.
+# The default value is: org.doxygen.Project.
+# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
+
+ECLIPSE_DOC_ID = org.doxygen.Project
+
+# If you want full control over the layout of the generated HTML pages it might
+# be necessary to disable the index and replace it with your own. The
+# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
+# of each HTML page. A value of NO enables the index and the value YES disables
+# it. Since the tabs in the index contain the same information as the navigation
+# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
DISABLE_INDEX = NO
-# This tag can be used to set the number of enum values (range [1..20])
-# that doxygen will group on one line in the generated HTML documentation.
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information. If the tag
+# value is set to YES, a side panel will be generated containing a tree-like
+# index structure (just like the one that is generated for HTML Help). For this
+# to work a browser that supports JavaScript, DHTML, CSS and frames is required
+# (i.e. any modern browser). Windows users are probably better off using the
+# HTML help feature. Via custom stylesheets (see HTML_EXTRA_STYLESHEET) one can
+# further fine-tune the look of the index. As an example, the default style
+# sheet generated by doxygen has an example that shows how to put an image at
+# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
+# the same information as the tab index, you could consider setting
+# DISABLE_INDEX to YES when enabling this option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
-ENUM_VALUES_PER_LINE = 4
+GENERATE_TREEVIEW = YES
-# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
-# generated containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
-# probably better off using the HTML help feature.
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
+# doxygen will group on one line in the generated HTML documentation.
+#
+# Note that a value of 0 will completely suppress the enum values from appearing
+# in the overview section.
+# Minimum value: 0, maximum value: 20, default value: 4.
+# This tag requires that the tag GENERATE_HTML is set to YES.
-GENERATE_TREEVIEW = YES
+ENUM_VALUES_PER_LINE = 4
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
+# to set the initial width (in pixels) of the frame in which the tree is shown.
+# Minimum value: 0, maximum value: 1500, default value: 250.
+# This tag requires that the tag GENERATE_HTML is set to YES.
TREEVIEW_WIDTH = 250
+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open links to
+# external symbols imported via tag files in a separate window.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+EXT_LINKS_IN_WINDOW = NO
+
+# Use this tag to change the font size of LaTeX formulas included as images in
+# the HTML documentation. When you change the font size after a successful
+# doxygen run you need to manually remove any form_*.png images from the HTML
+# output directory to force them to be regenerated.
+# Minimum value: 8, maximum value: 50, default value: 10.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_FONTSIZE = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are not
+# supported properly for IE 6.0, but are supported on all modern browsers.
+#
+# Note that when changing this option you need to delete any form_*.png files in
+# the HTML output directory before the changes have effect.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+FORMULA_TRANSPARENT = YES
+
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
+# http://www.mathjax.org) which uses client side Javascript for the rendering
+# instead of using prerendered bitmaps. Use this if you do not have LaTeX
+# installed or if you want to formulas look prettier in the HTML output. When
+# enabled you may also need to install MathJax separately and configure the path
+# to it using the MATHJAX_RELPATH option.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+USE_MATHJAX = NO
+
+# When MathJax is enabled you can set the default output format to be used for
+# the MathJax output. See the MathJax site (see:
+# http://docs.mathjax.org/en/latest/output.html) for more details.
+# Possible values are: HTML-CSS (which is slower, but has the best
+# compatibility), NativeMML (i.e. MathML) and SVG.
+# The default value is: HTML-CSS.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_FORMAT = HTML-CSS
+
+# When MathJax is enabled you need to specify the location relative to the HTML
+# output directory using the MATHJAX_RELPATH option. The destination directory
+# should contain the MathJax.js script. For instance, if the mathjax directory
+# is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
+# Content Delivery Network so you can quickly see the result without installing
+# MathJax. However, it is strongly recommended to install a local copy of
+# MathJax from http://www.mathjax.org before deployment.
+# The default value is: http://cdn.mathjax.org/mathjax/latest.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
+
+# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
+# extension names that should be enabled during MathJax rendering. For example
+# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_EXTENSIONS =
+
+# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
+# of code that will be used on startup of the MathJax code. See the MathJax site
+# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
+# example see the documentation.
+# This tag requires that the tag USE_MATHJAX is set to YES.
+
+MATHJAX_CODEFILE =
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
+# the HTML output. The underlying search engine uses javascript and DHTML and
+# should work on any modern browser. Note that when using HTML help
+# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
+# there is already a search function so this one should typically be disabled.
+# For large projects the javascript based search engine can be slow, then
+# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
+# search using the keyboard; to jump to the search box use <access key> + S
+# (what the <access key> is depends on the OS and browser, but it is typically
+# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
+# key> to jump into the search results window, the results can be navigated
+# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
+# the search. The filter options can be selected when the cursor is inside the
+# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
+# to select a filter and <Enter> or <escape> to activate or cancel the filter
+# option.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_HTML is set to YES.
+
+SEARCHENGINE = YES
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a web server instead of a web client using Javascript. There
+# are two flavours of web server based searching depending on the
+# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
+# searching and an index file used by the script. When EXTERNAL_SEARCH is
+# enabled the indexing and searching needs to be provided by external tools. See
+# the section "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SERVER_BASED_SEARCH = NO
+
+# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
+# script for searching. Instead the search results are written to an XML file
+# which needs to be processed by an external indexer. Doxygen will invoke an
+# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
+# search results.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/).
+#
+# See the section "External Indexing and Searching" for details.
+# The default value is: NO.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH = NO
+
+# The SEARCHENGINE_URL should point to a search engine hosted by a web server
+# which will return the search results when EXTERNAL_SEARCH is enabled.
+#
+# Doxygen ships with an example indexer ( doxyindexer) and search engine
+# (doxysearch.cgi) which are based on the open source search engine library
+# Xapian (see: http://xapian.org/). See the section "External Indexing and
+# Searching" for details.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHENGINE_URL =
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
+# search data is written to a file for indexing by an external tool. With the
+# SEARCHDATA_FILE tag the name of this file can be specified.
+# The default file is: searchdata.xml.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+SEARCHDATA_FILE = searchdata.xml
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
+# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
+# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
+# projects and redirect the results back to the right project.
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTERNAL_SEARCH_ID =
+
+# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
+# projects other than the one defined by this configuration file, but that are
+# all added to the same external search index. Each project needs to have a
+# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
+# to a relative location where the documentation can be found. The format is:
+# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
+# This tag requires that the tag SEARCHENGINE is set to YES.
+
+EXTRA_SEARCH_MAPPINGS =
+
#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
+# Configuration options related to the LaTeX output
#---------------------------------------------------------------------------
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
+# If the GENERATE_LATEX tag is set to YES doxygen will generate LaTeX output.
+# The default value is: YES.
GENERATE_LATEX = NO
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_OUTPUT = latex
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked.
+#
+# Note that when enabling USE_PDFLATEX this option is only used for generating
+# bitmaps for formulas in the HTML output, but not in the Makefile that is
+# written to the output directory.
+# The default file is: latex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_CMD_NAME = latex
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
+# index for LaTeX.
+# The default file is: makeindex.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
MAKEINDEX_CMD_NAME = makeindex
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
+# If the COMPACT_LATEX tag is set to YES doxygen generates more compact LaTeX
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
COMPACT_LATEX = NO
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, a4wide, letter, legal and
-# executive. If left blank a4wide will be used.
+# The PAPER_TYPE tag can be used to set the paper type that is used by the
+# printer.
+# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
+# 14 inches) and executive (7.25 x 10.5 inches).
+# The default value is: a4.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
PAPER_TYPE = a4wide
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
+# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
+# that should be included in the LaTeX output. To get the times font for
+# instance you can specify
+# EXTRA_PACKAGES=times
+# If left blank no extra packages will be included.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
+# generated LaTeX document. The header should contain everything until the first
+# chapter. If it is left blank doxygen will generate a standard header. See
+# section "Doxygen usage" for information on how to let doxygen write the
+# default header to a separate file.
+#
+# Note: Only use a user-defined header if you know what you are doing! The
+# following commands have a special meaning inside the header: $title,
+# $datetime, $date, $doxygenversion, $projectname, $projectnumber. Doxygen will
+# replace them by respectively the title of the page, the current date and time,
+# only the current date, the version number of doxygen, the project name (see
+# PROJECT_NAME), or the project number (see PROJECT_NUMBER).
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_HEADER =
+
+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
+# generated LaTeX document. The footer should contain everything after the last
+# chapter. If it is left blank doxygen will generate a standard footer.
+#
+# Note: Only use a user-defined footer if you know what you are doing!
+# This tag requires that the tag GENERATE_LATEX is set to YES.
-EXTRA_PACKAGES =
+LATEX_FOOTER =
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
+# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the LATEX_OUTPUT output
+# directory. Note that the files will be copied as-is; there are no commands or
+# markers available.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
-LATEX_HEADER =
+LATEX_EXTRA_FILES =
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
+# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
+# contain links (just like the HTML output) instead of page references. This
+# makes the output suitable for online browsing using a PDF viewer.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
PDF_HYPERLINKS = NO
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
+# If the LATEX_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
+# the PDF file directly from the LaTeX files. Set this option to YES to get a
# higher quality PDF documentation.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
USE_PDFLATEX = NO
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
+# command to the generated LaTeX files. This will instruct LaTeX to keep running
+# if errors occur, instead of asking the user for help. This option is also used
+# when generating formulas in HTML.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_BATCHMODE = NO
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
+# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
+# index chapters (such as File Index, Compound Index, etc.) in the output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_HIDE_INDICES = NO
+# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
+# code with syntax highlighting in the LaTeX output.
+#
+# Note that which sources are shown also depends on other settings such as
+# SOURCE_BROWSER.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_SOURCE_CODE = NO
+
+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
+# bibliography, e.g. plainnat, or ieeetr. See
+# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
+# The default value is: plain.
+# This tag requires that the tag GENERATE_LATEX is set to YES.
+
+LATEX_BIB_STYLE = plain
+
#---------------------------------------------------------------------------
-# configuration options related to the RTF output
+# Configuration options related to the RTF output
#---------------------------------------------------------------------------
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
+# If the GENERATE_RTF tag is set to YES doxygen will generate RTF output. The
+# RTF output is optimized for Word 97 and may not look too pretty with other RTF
+# readers/editors.
+# The default value is: NO.
GENERATE_RTF = NO
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: rtf.
+# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_OUTPUT = rtf
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
+# If the COMPACT_RTF tag is set to YES doxygen generates more compact RTF
+# documents. This may be useful for small projects and may help to save some
+# trees in general.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
COMPACT_RTF = NO
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
+# contain hyperlink fields. The RTF file will contain links (just like the HTML
+# output) instead of page references. This makes the output suitable for online
+# browsing using Word or some other Word compatible readers that support those
+# fields.
+#
+# Note: WordPad (write) and others do not support links.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_HYPERLINKS = NO
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
+# Load stylesheet definitions from file. Syntax is similar to doxygen's config
+# file, i.e. a series of assignments. You only have to provide replacements,
+# missing definitions are set to their default value.
+#
+# See also section "Doxygen usage" for information on how to generate the
+# default style sheet that doxygen normally uses.
+# This tag requires that the tag GENERATE_RTF is set to YES.
-RTF_STYLESHEET_FILE =
+RTF_STYLESHEET_FILE =
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
+# Set optional variables used in the generation of an RTF document. Syntax is
+# similar to doxygen's config file. A template extensions file can be generated
+# using doxygen -e rtf extensionFile.
+# This tag requires that the tag GENERATE_RTF is set to YES.
-RTF_EXTENSIONS_FILE =
+RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
-# configuration options related to the man page output
+# Configuration options related to the man page output
#---------------------------------------------------------------------------
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
+# If the GENERATE_MAN tag is set to YES doxygen will generate man pages for
+# classes and files.
+# The default value is: NO.
GENERATE_MAN = NO
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it. A directory man3 will be created inside the directory specified by
+# MAN_OUTPUT.
+# The default directory is: man.
+# This tag requires that the tag GENERATE_MAN is set to YES.
MAN_OUTPUT = man
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
+# The MAN_EXTENSION tag determines the extension that is added to the generated
+# man pages. In case the manual section does not start with a number, the number
+# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
+# optional.
+# The default value is: .3.
+# This tag requires that the tag GENERATE_MAN is set to YES.
MAN_EXTENSION = .3
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
+# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
+# will generate one additional man file for each entity documented in the real
+# man page(s). These additional files only source the real man page, but without
+# them the man command would be unable to find the correct page.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_MAN is set to YES.
MAN_LINKS = NO
#---------------------------------------------------------------------------
-# configuration options related to the XML output
+# Configuration options related to the XML output
#---------------------------------------------------------------------------
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
+# If the GENERATE_XML tag is set to YES doxygen will generate an XML file that
+# captures the structure of the code including all documentation.
+# The default value is: NO.
GENERATE_XML = NO
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
+# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+# it.
+# The default directory is: xml.
+# This tag requires that the tag GENERATE_XML is set to YES.
XML_OUTPUT = xml
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
+# The XML_SCHEMA tag can be used to specify a XML schema, which can be used by a
+# validating XML parser to check the syntax of the XML files.
+# This tag requires that the tag GENERATE_XML is set to YES.
-XML_SCHEMA =
+XML_SCHEMA =
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
+# The XML_DTD tag can be used to specify a XML DTD, which can be used by a
+# validating XML parser to check the syntax of the XML files.
+# This tag requires that the tag GENERATE_XML is set to YES.
-XML_DTD =
+XML_DTD =
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
+# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
+# listings (including syntax highlighting and cross-referencing information) to
+# the XML output. Note that enabling this will significantly increase the size
+# of the XML output.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_XML is set to YES.
XML_PROGRAMLISTING = YES
#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
+# Configuration options related to the DOCBOOK output
#---------------------------------------------------------------------------
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
+# If the GENERATE_DOCBOOK tag is set to YES doxygen will generate Docbook files
+# that can be used to generate PDF.
+# The default value is: NO.
+
+GENERATE_DOCBOOK = NO
+
+# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
+# front of it.
+# The default directory is: docbook.
+# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
+DOCBOOK_OUTPUT = docbook
+
+#---------------------------------------------------------------------------
+# Configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES doxygen will generate an AutoGen
+# Definitions (see http://autogen.sf.net) file that captures the structure of
+# the code including all documentation. Note that this feature is still
+# experimental and incomplete at the moment.
+# The default value is: NO.
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
+# Configuration options related to the Perl module output
#---------------------------------------------------------------------------
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
+# If the GENERATE_PERLMOD tag is set to YES doxygen will generate a Perl module
+# file that captures the structure of the code including all documentation.
+#
+# Note that this feature is still experimental and incomplete at the moment.
+# The default value is: NO.
GENERATE_PERLMOD = NO
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
+# If the PERLMOD_LATEX tag is set to YES doxygen will generate the necessary
+# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
+# output from the Perl module output.
+# The default value is: NO.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
PERLMOD_LATEX = NO
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader. This is useful
-# if you want to understand what is going on. On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be nicely
+# formatted so it can be parsed by a human reader. This is useful if you want to
+# understand what is going on. On the other hand, if this tag is set to NO the
+# size of the Perl module output will be much smaller and Perl will parse it
+# just the same.
+# The default value is: YES.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
PERLMOD_PRETTY = YES
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
+# The names of the make variables in the generated doxyrules.make file are
+# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
+# so different doxyrules.make files included by the same Makefile don't
+# overwrite each other's variables.
+# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-PERLMOD_MAKEVAR_PREFIX =
+PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
+# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
+# If the ENABLE_PREPROCESSING tag is set to YES doxygen will evaluate all
+# C-preprocessor directives found in the sources and include files.
+# The default value is: YES.
ENABLE_PREPROCESSING = YES
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
+# If the MACRO_EXPANSION tag is set to YES doxygen will expand all macro names
+# in the source code. If set to NO only conditional compilation will be
+# performed. Macro expansion can be done in a controlled way by setting
+# EXPAND_ONLY_PREDEF to YES.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
MACRO_EXPANSION = YES
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
+# the macro expansion is limited to the macros specified with the PREDEFINED and
+# EXPAND_AS_DEFINED tags.
+# The default value is: NO.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
EXPAND_ONLY_PREDEF = NO
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
+# If the SEARCH_INCLUDES tag is set to YES the includes files in the
+# INCLUDE_PATH will be searched if a #include is found.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
SEARCH_INCLUDES = YES
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by the
+# preprocessor.
+# This tag requires that the tag SEARCH_INCLUDES is set to YES.
-INCLUDE_PATH =
+INCLUDE_PATH =
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will be
+# used.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-INCLUDE_FILE_PATTERNS =
+INCLUDE_FILE_PATTERNS =
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
+# The PREDEFINED tag can be used to specify one or more macro names that are
+# defined before the preprocessor is started (similar to the -D option of e.g.
+# gcc). The argument of the tag is a list of macros of the form: name or
+# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
+# is assumed. To prevent a macro definition from being undefined via #undef or
+# recursively expanded use the := operator instead of the = operator.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
PREDEFINED = LOG4CXX_WCHAR_T_API \
LOG4CXX_UNICHAR_API \
LOG4CXX_CFSTRING_API
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition.
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
+# tag can be used to specify a list of macro names that should be expanded. The
+# macro definition that is found in the sources will be used. Use the PREDEFINED
+# tag if you want to use a different macro definition that overrules the
+# definition found in the source code.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-EXPAND_AS_DEFINED =
+EXPAND_AS_DEFINED =
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all function-like macros that are alone
-# on a line, have an all uppercase name, and do not end with a semicolon. Such
-# function macros are typically used for boiler-plate code, and will confuse
-# the parser if not removed.
+# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
+# remove all refrences to function-like macros that are alone on a line, have an
+# all uppercase name, and do not end with a semicolon. Such function macros are
+# typically used for boiler-plate code, and will confuse the parser if not
+# removed.
+# The default value is: YES.
+# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
-# Configuration::additions related to external references
+# Configuration options related to external references
#---------------------------------------------------------------------------
-# The TAGFILES option can be used to specify one or more tagfiles.
-# Optionally an initial location of the external documentation
-# can be added for each tagfile. The format of a tag file without
-# this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths or
-# URLs. If a location is present for each tag, the installdox tool
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen
-# is run, you must also specify the path to the tagfile here.
+# The TAGFILES tag can be used to specify one or more tag files. For each tag
+# file the location of the external documentation should be added. The format of
+# a tag file without this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where loc1 and loc2 can be relative or absolute paths or URLs. See the
+# section "Linking to external documentation" for more information about the use
+# of tag files.
+# Note: Each tag file must have an unique name (where the name does NOT include
+# the path). If a tag file is not located in the directory in which doxygen is
+# run, you must also specify the path to the tagfile here.
-TAGFILES =
+TAGFILES =
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
+# tag file that is based on the input files it reads. See section "Linking to
+# external documentation" for more information about the usage of tag files.
-GENERATE_TAGFILE =
+GENERATE_TAGFILE =
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
+# If the ALLEXTERNALS tag is set to YES all external class will be listed in the
+# class index. If set to NO only the inherited external classes will be listed.
+# The default value is: NO.
ALLEXTERNALS = NO
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed in
+# the modules index. If set to NO, only the current project's groups will be
+# listed.
+# The default value is: YES.
EXTERNAL_GROUPS = YES
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
+# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed in
+# the related pages index. If set to NO, only the current project's pages will
+# be listed.
+# The default value is: YES.
+
+EXTERNAL_PAGES = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of 'which perl').
+# The default file (with absolute path) is: /usr/bin/perl.
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
+# Configuration options related to the dot tool
#---------------------------------------------------------------------------
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option is superseded by the HAVE_DOT option below. This is only a
-# fallback. It is recommended to install and use dot, since it yields more
+# If the CLASS_DIAGRAMS tag is set to YES doxygen will generate a class diagram
+# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
+# NO turns the diagrams off. Note that this option also works with HAVE_DOT
+# disabled, but it is recommended to install and use dot, since it yields more
# powerful graphs.
+# The default value is: YES.
+
+CLASS_DIAGRAMS = YES
-CLASS_DIAGRAMS = NO
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see:
+# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to
-# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to
-# specify the directory where the mscgen tool resides. If left empty the tool is assumed to
-# be found in the default search path.
+MSCGEN_PATH =
-MSCGEN_PATH =
+# You can include diagrams made with dia in doxygen documentation. Doxygen will
+# then run dia to produce the diagram and insert it in the documentation. The
+# DIA_PATH tag allows you to specify the directory where the dia binary resides.
+# If left empty dia is assumed to be found in the default search path.
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
+DIA_PATH =
+
+# If set to YES, the inheritance and collaboration graphs will hide inheritance
+# and usage relations if the target is undocumented or is not a class.
+# The default value is: YES.
HIDE_UNDOC_RELATIONS = YES
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz (see:
+# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
+# Bell Labs. The other options in this section have no effect if this option is
+# set to NO
+# The default value is: NO.
HAVE_DOT = NO
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
+# to run in parallel. When set to 0 doxygen will base this on the number of
+# processors available in the system. You can set it explicitly to a value
+# larger than 0 to get control over the balance between CPU load and processing
+# speed.
+# Minimum value: 0, maximum value: 32, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_NUM_THREADS = 0
+
+# When you want a differently looking font n the dot files that doxygen
+# generates you can specify the font name using DOT_FONTNAME. You need to make
+# sure dot is able to find the font, which can be done by putting it in a
+# standard location or by setting the DOTFONTPATH environment variable or by
+# setting DOT_FONTPATH to the directory containing the font.
+# The default value is: Helvetica.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTNAME = Helvetica
+
+# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
+# dot graphs.
+# Minimum value: 4, maximum value: 24, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTSIZE = 10
+
+# By default doxygen will tell dot to use the default font as specified with
+# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
+# the path where dot can find it using this tag.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_FONTPATH =
+
+# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
+# each documented class showing the direct and indirect inheritance relations.
+# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
CLASS_GRAPH = YES
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
+# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
+# graph for each documented class showing the direct and indirect implementation
+# dependencies (inheritance, containment, and class references variables) of the
+# class with other documented classes.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
COLLABORATION_GRAPH = YES
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
+# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
+# groups, showing the direct groups dependencies.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
GROUP_GRAPHS = YES
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
# Language.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
UML_LOOK = NO
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
+# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
+# class node. If there are many fields or methods and many nodes the graph may
+# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
+# number of items for each type to make the size more manageable. Set this to 0
+# for no limit. Note that the threshold may be exceeded by 50% before the limit
+# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
+# but if the number exceeds 15, the total amount of fields shown is limited to
+# 10.
+# Minimum value: 0, maximum value: 100, default value: 10.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+UML_LIMIT_NUM_FIELDS = 10
+
+# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
+# collaboration graphs will show the relations between templates and their
+# instances.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
TEMPLATE_RELATIONS = YES
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
+# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
+# YES then doxygen will generate a graph for each documented file showing the
+# direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
INCLUDE_GRAPH = YES
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
+# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
+# set to YES then doxygen will generate a graph for each documented file showing
+# the direct and indirect include dependencies of the file with other documented
+# files.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
INCLUDED_BY_GRAPH = YES
-# If the CALL_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will
-# generate a call dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
+# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
# functions only using the \callgraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
CALL_GRAPH = NO
-# If the CALLER_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will
-# generate a caller dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
+# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
+# dependency graph for every global function or class method.
+#
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable caller graphs for selected
# functions only using the \callergraph command.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
CALLER_GRAPH = NO
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
+# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
+# hierarchy of all classes instead of a textual one.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
GRAPHICAL_HIERARCHY = NO
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
+# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
+# dependencies a directory has on other directories in a graphical way. The
+# dependency relations are determined by the #include relations between the
+# files in the directories.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
DIRECTORY_GRAPH = YES
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot.
+# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
+# to make the SVG files visible in IE 9+ (other browsers do not have this
+# requirement).
+# Possible values are: png, jpg, gif and svg.
+# The default value is: png.
+# This tag requires that the tag HAVE_DOT is set to YES.
DOT_IMAGE_FORMAT = png
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
+# enable generation of interactive SVG images that allow zooming and panning.
+#
+# Note that this requires a modern browser other than Internet Explorer. Tested
+# and working are Firefox, Chrome, Safari, and Opera.
+# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
+# the SVG files visible. Older versions of IE do not have SVG support.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+INTERACTIVE_SVG = NO
+
+# The DOT_PATH tag can be used to specify the path where the dot tool can be
# found. If left blank, it is assumed the dot tool can be found in the path.
+# This tag requires that the tag HAVE_DOT is set to YES.
+
+DOT_PATH =
-DOT_PATH =
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the \dotfile
+# command).
+# This tag requires that the tag HAVE_DOT is set to YES.
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
+DOTFILE_DIRS =
-DOTFILE_DIRS =
+# The MSCFILE_DIRS tag can be used to specify one or more directories that
+# contain msc files that are included in the documentation (see the \mscfile
+# command).
-# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
-# nodes that will be shown in the graph. If the number of nodes in a graph
-# becomes larger than this value, doxygen will truncate the graph, which is
-# visualized by representing a node as a red box. Note that doxygen if the number
-# of direct children of the root node in a graph is already larger than
-# MAX_DOT_GRAPH_NOTES then the graph will not be shown at all. Also note
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+MSCFILE_DIRS =
+
+# The DIAFILE_DIRS tag can be used to specify one or more directories that
+# contain dia files that are included in the documentation (see the \diafile
+# command).
+
+DIAFILE_DIRS =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
+# that will be shown in the graph. If the number of nodes in a graph becomes
+# larger than this value, doxygen will truncate the graph, which is visualized
+# by representing a node as a red box. Note that doxygen if the number of direct
+# children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
+# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+# Minimum value: 0, maximum value: 10000, default value: 50.
+# This tag requires that the tag HAVE_DOT is set to YES.
DOT_GRAPH_MAX_NODES = 50
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that the size of a graph can be further restricted by
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
+# generated by dot. A depth value of 3 means that only nodes reachable from the
+# root by following a path via at most 3 edges will be shown. Nodes that lay
+# further from the root node will be omitted. Note that setting this option to 1
+# or 2 may greatly reduce the computation time needed for large code bases. Also
+# note that the size of a graph can be further restricted by
# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+# Minimum value: 0, maximum value: 1000, default value: 0.
+# This tag requires that the tag HAVE_DOT is set to YES.
MAX_DOT_GRAPH_DEPTH = 0
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, which results in a white background.
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not seem
+# to support this out of the box.
+#
+# Warning: Depending on the platform used, enabling this option may lead to
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
# read).
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
DOT_TRANSPARENT = NO
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10) support
+# this, this feature is disabled by default.
+# The default value is: NO.
+# This tag requires that the tag HAVE_DOT is set to YES.
DOT_MULTI_TARGETS = NO
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
+# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
+# explaining the meaning of the various boxes and arrows in the dot generated
+# graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
GENERATE_LEGEND = YES
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
+# If the DOT_CLEANUP tag is set to YES doxygen will remove the intermediate dot
+# files that are used to generate the various graphs.
+# The default value is: YES.
+# This tag requires that the tag HAVE_DOT is set to YES.
DOT_CLEANUP = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE = NO
diff --git a/src/site/doxy/Makefile.am b/src/site/doxy/Makefile.am
index 0c7293d..e5741f9 100644
--- a/src/site/doxy/Makefile.am
+++ b/src/site/doxy/Makefile.am
@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-EXTRA_DIST = Doxyfile mainpage.dox license_notice_footer.txt
+EXTRA_DIST = Doxyfile license_notice_footer.txt
# DOC is defined if installer requests doc generation.
@@ -61,7 +61,7 @@ endif
all-local: dox
-@manual_dest@/index.html: Doxyfile mainpage.dox
+@manual_dest@/index.html: Doxyfile
"@DOXYGEN@"
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)
diff --git a/src/site/doxy/license_notice_footer.txt b/src/site/doxy/license_notice_footer.txt
index 53eb256..7e37a54 100644
--- a/src/site/doxy/license_notice_footer.txt
+++ b/src/site/doxy/license_notice_footer.txt
@@ -1 +1 @@
-<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> </BODY> </HTML> \ No newline at end of file
+<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> </body> </html> \ No newline at end of file
diff --git a/src/site/doxy/mainpage.dox b/src/site/doxy/mainpage.dox
deleted file mode 100755
index b87d2c8..0000000
--- a/src/site/doxy/mainpage.dox
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-*/
-/** @mainpage
-
-\ref Introduction
-<p>
-\ref LoggingMacros
diff --git a/src/site/doxy/mainpage.dox.xsl b/src/site/doxy/mainpage.dox.xsl
new file mode 100755
index 0000000..8681b7d
--- /dev/null
+++ b/src/site/doxy/mainpage.dox.xsl
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+ -->
+<xsl:stylesheet version="2.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:saxon="http://saxon.sf.net/"
+ xmlns:xhtml="http://www.w3.org/1999/xhtml"
+ exclude-result-prefixes="saxon xhtml">
+
+ <!--
+ We need textual output with XHTML nodes, which is only possible for methods other than text
+ and without xml declaration or such.
+ -->
+ <xsl:output method="xml"
+ omit-xml-declaration="yes"
+ media-type="text/plain"
+ indent="yes"
+ encoding="UTF-8"
+ saxon:indent-spaces="4"
+ />
+
+ <xsl:template match="/">
+ /*
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+ /** @mainpage
+
+ <xsl:apply-templates select="//xhtml:div[@id = 'contentBox']/xhtml:div[@class = 'section']/*"
+ mode="copy-no-namespaces"
+ />
+
+ */
+ </xsl:template>
+
+ <!-- http://stackoverflow.com/a/20001084/2055163 -->
+ <xsl:template match="*" mode="copy-no-namespaces">
+ <xsl:element name="{local-name()}">
+ <xsl:copy-of select="@*" />
+ <xsl:apply-templates select="node()"
+ mode="copy-no-namespaces"
+ />
+ </xsl:element>
+ </xsl:template>
+ </xsl:stylesheet> \ No newline at end of file
diff --git a/src/site/maven-site.vm b/src/site/maven-site.vm
new file mode 100644
index 0000000..96c2cc9
--- /dev/null
+++ b/src/site/maven-site.vm
@@ -0,0 +1,522 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<!-- Generated by Apache Maven Doxia at $dateFormat.format( $currentDate ) -->
+#macro ( link $href $name $target $img $position $alt $border $width $height )
+ #set ( $linkTitle = ' title="' + $name + '"' )
+ #if( $target )
+ #set ( $linkTarget = ' target="' + $target + '"' )
+ #else
+ #set ( $linkTarget = "" )
+ #end
+ #if ( ( $href.toLowerCase().startsWith("http") || $href.toLowerCase().startsWith("https") ) )
+ #set ( $linkClass = ' class="externalLink"' )
+ #else
+ #set ( $linkClass = "" )
+ #end
+ #if ( $img )
+ #if ( $position == "left" )
+ <a href="$href"$linkClass$linkTarget$linkTitle>#image($img $alt $border $width $height)$name</a>
+ #else
+ <a href="$href"$linkClass$linkTarget$linkTitle>$name #image($img $alt $border $width $height)</a>
+ #end
+ #else
+ <a href="$href"$linkClass$linkTarget$linkTitle>$name</a>
+ #end
+#end
+##
+#macro ( image $img $alt $border $width $height )
+ #if( $img )
+ #if ( ! ( $img.toLowerCase().startsWith("http") || $img.toLowerCase().startsWith("https") ) )
+ #set ( $imgSrc = $PathTool.calculateLink( $img, $relativePath ) )
+ #set ( $imgSrc = $imgSrc.replaceAll( '\\', '/' ) )
+ #set ( $imgSrc = ' src="' + $imgSrc + '"' )
+ #else
+ #set ( $imgSrc = ' src="' + $img + '"' )
+ #end
+ #if( $alt )
+ #set ( $imgAlt = ' alt="' + $alt + '"' )
+ #else
+ #set ( $imgAlt = ' alt=""' )
+ #end
+ #if( $border )
+ #set ( $imgBorder = ' border="' + $border + '"' )
+ #else
+ #set ( $imgBorder = "" )
+ #end
+ #if( $width )
+ #set ( $imgWidth = ' width="' + $width + '"' )
+ #else
+ #set ( $imgWidth = "" )
+ #end
+ #if( $height )
+ #set ( $imgHeight = ' height="' + $height + '"' )
+ #else
+ #set ( $imgHeight = "" )
+ #end
+ <img class="imageLink"$imgSrc$imgAlt$imgBorder$imgWidth$imgHeight/>
+ #end
+#end
+#macro ( banner $banner $id )
+ #if ( $banner )
+ #if( $banner.href )
+ <a href="$banner.href" id="$id"#if( $banner.alt ) title="$banner.alt"#end>
+ #else
+ <div id="$id">
+ #end
+##
+ #if( $banner.src )
+ #set ( $src = $banner.src )
+ #if ( ! ( $src.toLowerCase().startsWith("http") || $src.toLowerCase().startsWith("https") ) )
+ #set ( $src = $PathTool.calculateLink( $src, $relativePath ) )
+ #set ( $src = $src.replaceAll( '\\', '/' ) )
+ #end
+ #if ( $banner.alt )
+ #set ( $alt = $banner.alt )
+ #else
+ #set ( $alt = $banner.name )
+ #end
+ <img src="$src" alt="$alt" />
+ #else
+ $banner.name
+ #end
+##
+ #if( $banner.href )
+ </a>
+ #else
+ </div>
+ #end
+ #end
+#end
+##
+#macro ( links $links )
+ #set ( $counter = 0 )
+ #foreach( $item in $links )
+ #set ( $counter = $counter + 1 )
+ #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) )
+ #set ( $currentItemHref = $currentItemHref.replaceAll( '\\', '/' ) )
+ #link( $currentItemHref $item.name $item.target $item.img $item.position $item.alt $item.border $item.width $item.height )
+ #if ( $links.size() > $counter )
+ |
+ #end
+ #end
+#end
+##
+#macro ( breadcrumbs $breadcrumbs )
+ #set ( $counter = 0 )
+ #foreach( $item in $breadcrumbs )
+ #set ( $counter = $counter + 1 )
+ #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) )
+ #set ( $currentItemHref = $currentItemHref.replaceAll( '\\', '/' ) )
+##
+ #if ( $currentItemHref == $alignedFileName || $currentItemHref == "" )
+ $item.name
+ #else
+ #link( $currentItemHref $item.name $item.target $item.img $item.position $item.alt $item.border $item.width $item.height )
+ #end
+ #if ( $breadcrumbs.size() > $counter )
+ &gt;
+ #end
+ #end
+#end
+##
+#macro ( displayTree $display $item )
+ #if ( $item && $item.items && $item.items.size() > 0 )
+ #foreach( $subitem in $item.items )
+ #set ( $subitemHref = $PathTool.calculateLink( $subitem.href, $relativePath ) )
+ #set ( $subitemHref = $subitemHref.replaceAll( '\\', '/' ) )
+ #if ( $alignedFileName == $subitemHref )
+ #set ( $display = true )
+ #end
+##
+ #displayTree( $display $subitem )
+ #end
+ #end
+#end
+##
+#macro ( menuItem $item )
+ #set ( $collapse = "none" )
+ #set ( $currentItemHref = $PathTool.calculateLink( $item.href, $relativePath ) )
+ #set ( $currentItemHref = $currentItemHref.replaceAll( '\\', '/' ) )
+##
+ #if ( $item && $item.items && $item.items.size() > 0 )
+ #if ( $item.collapse == false )
+ #set ( $collapse = "expanded" )
+ #else
+ ## By default collapsed
+ #set ( $collapse = "collapsed" )
+ #end
+##
+ #set ( $display = false )
+ #displayTree( $display $item )
+##
+ #if ( $alignedFileName == $currentItemHref || $display )
+ #set ( $collapse = "expanded" )
+ #end
+ #end
+ <li class="$collapse">
+ #if ( $item.img )
+ #if ( $item.position == "left" )
+ #if ( $alignedFileName == $currentItemHref )
+ <strong>#image($item.img $item.alt $item.border $item.width $item.height) $item.name</strong>
+ #else
+ #link($currentItemHref $item.name $item.target $item.img $item.position $item.alt $item.border $item.width $item.height)
+ #end
+ #else
+ #if ( $alignedFileName == $currentItemHref )
+ <strong>$item.name #image($item.img $item.alt $item.border $item.width $item.height)</strong>
+ #else
+ #link($currentItemHref $item.name $item.target $item.img $item.position $item.alt $item.border $item.width $item.height)
+ #end
+ #end
+ #else
+ #if ( $alignedFileName == $currentItemHref )
+ <strong>$item.name</strong>
+ #else
+ #link( $currentItemHref $item.name $item.target $item.img $item.position $item.alt $item.border $item.width $item.height )
+ #end
+ #end
+ #if ( $item && $item.items && $item.items.size() > 0 )
+ #if ( $collapse == "expanded" )
+ <ul>
+ #foreach( $subitem in $item.items )
+ #menuItem( $subitem )
+ #end
+ </ul>
+ #end
+ #end
+ </li>
+#end
+##
+#macro ( mainMenu $menus )
+ #foreach( $menu in $menus )
+ #if ( $menu.name )
+ #if ( $menu.img )
+ #if( $menu.position )
+ #set ( $position = $menu.position )
+ #else
+ #set ( $position = "left" )
+ #end
+##
+ #if ( ! ( $menu.img.toLowerCase().startsWith("http") || $menu.img.toLowerCase().startsWith("https") ) )
+ #set ( $src = $PathTool.calculateLink( $menu.img, $relativePath ) )
+ #set ( $src = $src.replaceAll( '\\', '/' ) )
+ #set ( $src = ' src="' + $src + '"' )
+ #else
+ #set ( $src = ' src="' + $menu.img + '"' )
+ #end
+##
+ #if( $menu.alt )
+ #set ( $alt = ' alt="' + $menu.alt + '"' )
+ #else
+ #set ( $alt = ' alt="' + $menu.name + '"' )
+ #end
+##
+ #if( $menu.border )
+ #set ( $border = ' border="' + $menu.border + '"' )
+ #else
+ #set ( $border = ' border="0"' )
+ #end
+##
+ #if( $menu.width )
+ #set ( $width = ' width="' + $menu.width + '"' )
+ #else
+ #set ( $width = "" )
+ #end
+ #if( $menu.height )
+ #set ( $height = ' height="' + $menu.height + '"' )
+ #else
+ #set ( $height = "" )
+ #end
+##
+ #set ( $img = '<img class="imageLink"' + $src + $alt + $border + $width + $height + "/>" )
+##
+ #if ( $position == "left" )
+ <h5>$img $menu.name</h5>
+ #else
+ <h5>$menu.name $img</h5>
+ #end
+ #else
+ <h5>$menu.name</h5>
+ #end
+ #end
+ #if ( $menu.items && $menu.items.size() > 0 )
+ <ul>
+ #foreach( $item in $menu.items )
+ #menuItem( $item )
+ #end
+ </ul>
+ #end
+ #end
+#end
+##
+#macro ( copyright )
+ #if ( $project )
+ #if ( ${project.organization} && ${project.organization.name} )
+ #set ( $period = "" )
+ #else
+ #set ( $period = "." )
+ #end
+##
+ #set ( $currentYear = ${currentDate.year} + 1900 )
+##
+ #if ( ${project.inceptionYear} && ( ${project.inceptionYear} != ${currentYear.toString()} ) )
+ ${project.inceptionYear}-${currentYear}${period}
+ #else
+ ${currentYear}${period}
+ #end
+##
+ #if ( ${project.organization} )
+ #if ( ${project.organization.name} && ${project.organization.url} )
+ <a href="$project.organization.url">${project.organization.name}</a>.
+ #elseif ( ${project.organization.name} )
+ ${project.organization.name}.
+ #end
+ #end
+ #end
+#end
+##
+#macro ( publishDate $position $publishDate $version )
+ #if ( $publishDate && $publishDate.format )
+ #set ( $format = $publishDate.format )
+ #else
+ #set ( $format = "yyyy-MM-dd" )
+ #end
+##
+ $dateFormat.applyPattern( $format )
+##
+ #set ( $dateToday = $dateFormat.format( $currentDate ) )
+##
+ #if ( $publishDate && $publishDate.position )
+ #set ( $datePosition = $publishDate.position )
+ #else
+ #set ( $datePosition = "left" )
+ #end
+##
+ #if ( $version )
+ #if ( $version.position )
+ #set ( $versionPosition = $version.position )
+ #else
+ #set ( $versionPosition = "left" )
+ #end
+ #else
+ #set ( $version = "" )
+ #set ( $versionPosition = "left" )
+ #end
+##
+ #set ( $breadcrumbs = $decoration.body.breadcrumbs )
+ #set ( $links = $decoration.body.links )
+
+ #if ( $datePosition.equalsIgnoreCase( "right" ) && $links && $links.size() > 0 )
+ #set ( $prefix = "&nbsp;|" )
+ #else
+ #set ( $prefix = "" )
+ #end
+##
+ #if ( $datePosition.equalsIgnoreCase( $position ) )
+ #if ( ( $datePosition.equalsIgnoreCase( "right" ) ) || ( $datePosition.equalsIgnoreCase( "bottom" ) ) )
+ $prefix <span id="publishDate">$i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday</span>
+ #if ( $versionPosition.equalsIgnoreCase( $position ) )
+ &nbsp;| <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
+ #end
+ #elseif ( ( $datePosition.equalsIgnoreCase( "navigation-bottom" ) ) || ( $datePosition.equalsIgnoreCase( "navigation-top" ) ) )
+ <div id="lastPublished">
+ <span id="publishDate">$i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday</span>
+ #if ( $versionPosition.equalsIgnoreCase( $position ) )
+ &nbsp;| <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
+ #end
+ </div>
+ #elseif ( $datePosition.equalsIgnoreCase("left") )
+ <div class="xleft">
+ <span id="publishDate">$i18n.getString( "site-renderer", $locale, "template.lastpublished" ): $dateToday</span>
+ #if ( $versionPosition.equalsIgnoreCase( $position ) )
+ &nbsp;| <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
+ #end
+ #if ( $breadcrumbs && $breadcrumbs.size() > 0 )
+ | #breadcrumbs( $breadcrumbs )
+ #end
+ </div>
+ #end
+ #elseif ( $versionPosition.equalsIgnoreCase( $position ) )
+ #if ( ( $versionPosition.equalsIgnoreCase( "right" ) ) || ( $versionPosition.equalsIgnoreCase( "bottom" ) ) )
+ $prefix <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
+ #elseif ( ( $versionPosition.equalsIgnoreCase( "navigation-bottom" ) ) || ( $versionPosition.equalsIgnoreCase( "navigation-top" ) ) )
+ <div id="lastPublished">
+ <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
+ </div>
+ #elseif ( $versionPosition.equalsIgnoreCase("left") )
+ <div class="xleft">
+ <span id="projectVersion">$i18n.getString( "site-renderer", $locale, "template.version" ): ${project.version}</span>
+ #if ( $breadcrumbs && $breadcrumbs.size() > 0 )
+ | #breadcrumbs( $breadcrumbs )
+ #end
+ </div>
+ #end
+ #elseif ( $position.equalsIgnoreCase( "left" ) )
+ #if ( $breadcrumbs && $breadcrumbs.size() > 0 )
+ <div class="xleft">
+ #breadcrumbs( $breadcrumbs )
+ </div>
+ #end
+ #end
+#end
+##
+#macro ( poweredByLogo $poweredBy )
+ #if( $poweredBy )
+ #foreach ($item in $poweredBy)
+ #if( $item.href )
+ #set ( $href = $PathTool.calculateLink( $item.href, $relativePath ) )
+ #set ( $href = $href.replaceAll( '\\', '/' ) )
+ #else
+ #set ( $href="http://maven.apache.org/" )
+ #end
+##
+ #if( $item.name )
+ #set ( $name = $item.name )
+ #else
+ #set ( $name = $i18n.getString( "site-renderer", $locale, "template.builtby" ) )
+ #set ( $name = "${name} Maven" )
+ #end
+##
+ #if( $item.img )
+ #set ( $img = $item.img )
+ #else
+ #set ( $img = "images/logos/maven-feather.png" )
+ #end
+##
+ #if ( ! ( $img.toLowerCase().startsWith("http") || $img.toLowerCase().startsWith("https") ) )
+ #set ( $img = $PathTool.calculateLink( $img, $relativePath ) )
+ #set ( $img = $src.replaceAll( '\\', '/' ) )
+ #end
+##
+ #if( $item.alt )
+ #set ( $alt = ' alt="' + $item.alt + '"' )
+ #else
+ #set ( $alt = ' alt="' + $name + '"' )
+ #end
+##
+ #if( $item.border )
+ #set ( $border = ' border="' + $item.border + '"' )
+ #else
+ #set ( $border = "" )
+ #end
+##
+ #if( $item.width )
+ #set ( $width = ' width="' + $item.width + '"' )
+ #else
+ #set ( $width = "" )
+ #end
+ #if( $item.height )
+ #set ( $height = ' height="' + $item.height + '"' )
+ #else
+ #set ( $height = "" )
+ #end
+##
+ <a href="$href" title="$name" class="poweredBy">
+ <img class="poweredBy" $alt src="$img" $border $width $height />
+ </a>
+ #end
+ #if( $poweredBy.isEmpty() )
+ <a href="http://maven.apache.org/" title="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" class="poweredBy">
+ <img class="poweredBy" alt="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" src="$relativePath/images/logos/maven-feather.png" />
+ </a>
+ #end
+ #else
+ <a href="http://maven.apache.org/" title="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" class="poweredBy">
+ <img class="poweredBy" alt="$i18n.getString( "site-renderer", $locale, "template.builtby" ) Maven" src="$relativePath/images/logos/maven-feather.png" />
+ </a>
+ #end
+#end
+##
+<html xmlns="http://www.w3.org/1999/xhtml"#if ( $locale ) xml:lang="$locale.language" lang="$locale.language"#end>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=${outputEncoding}" />
+ <title>$title</title>
+ <style type="text/css" media="all">
+ @import url("$relativePath/css/maven-base.css");
+ @import url("$relativePath/css/maven-theme.css");
+ @import url("$relativePath/css/site.css");
+ </style>
+ <link rel="stylesheet" href="$relativePath/css/print.css" type="text/css" media="print" />
+#foreach( $author in $authors )
+ <meta name="author" content="$author" />
+#end
+#if ( $dateCreation )
+ <meta name="Date-Creation-yyyymmdd" content="$dateCreation" />
+#end
+#if ( $dateRevision )
+ <meta name="Date-Revision-yyyymmdd" content="$dateRevision" />
+#end
+#if ( $locale )
+ <meta http-equiv="Content-Language" content="$locale.language" />
+#end
+ #if ( $decoration.body.head )
+ #foreach( $item in $decoration.body.head.getChildren() )
+ ## Workaround for DOXIA-150 due to a non-desired behaviour in p-u
+ ## @see org.codehaus.plexus.util.xml.Xpp3Dom#toString()
+ ## @see org.codehaus.plexus.util.xml.Xpp3Dom#toUnescapedString()
+ #set ( $documentHeader = '<?xml version="1.0" encoding="UTF-8"?>' )
+ #if ( $item.name == "script" )
+ $StringUtils.replace( $item.toUnescapedString(), $documentHeader, "" )
+ #else
+ $StringUtils.replace( $item.toString(), $documentHeader, "" )
+ #end
+ #end
+ #end
+ </head>
+ <body class="composite">
+ <div id="banner">
+ #banner( $decoration.bannerLeft "bannerLeft" )
+ #banner( $decoration.bannerRight "bannerRight" )
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ <div id="breadcrumbs">
+ #publishDate( "left" $decoration.publishDate $decoration.version )
+ <div class="xright">#links( $decoration.body.links )#publishDate( "right" $decoration.publishDate $decoration.version )</div>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ <div id="leftColumn">
+ <div id="navcolumn">
+ #publishDate( "navigation-top" $decoration.publishDate $decoration.version )
+ #mainMenu( $decoration.body.menus )
+ #poweredByLogo( $decoration.poweredBy )
+ #publishDate( "navigation-bottom" $decoration.publishDate $decoration.version )
+ </div>
+ </div>
+ <div id="bodyColumn">
+ <div id="contentBox">
+ $bodyContent
+ </div>
+ </div>
+ <div class="clear">
+ <hr/>
+ </div>
+ <div id="footer">
+ <div class="xleft">Copyright &#169;#copyright()#publishDate( "bottom" $decoration.publishDate $decoration.version ) Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License, Version 2.0</a>.</div>
+ <div class="xleft">Apache log4cxx, Apache, the Apache feather logo,
+ the Apache Logging Services project logo and the Built by Maven logo are trademarks of The Apache Software Foundation.</div>
+ <div class="clear">
+ <hr/>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/src/site/resources/css/colors.css b/src/site/resources/css/colors.css
new file mode 100644
index 0000000..3aaf37b
--- /dev/null
+++ b/src/site/resources/css/colors.css
@@ -0,0 +1,35 @@
+@charset "UTF-8";
+
+/*
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+*/
+
+pre
+{
+ background-color: #CCCCCC;
+}
+
+strong.log-level.compare-a,
+.activity-flag-highlight
+{
+ color: green;
+}
+strong.log-level.compare-b,
+.set-level-highlight
+{
+ color: blue;
+} \ No newline at end of file
diff --git a/src/site/resources/css/img.css b/src/site/resources/css/img.css
new file mode 100644
index 0000000..f0321d8
--- /dev/null
+++ b/src/site/resources/css/img.css
@@ -0,0 +1,21 @@
+@charset "UTF-8";
+
+/*
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+*/
+
+
diff --git a/src/site/resources/css/maven-base.css b/src/site/resources/css/maven-base.css
new file mode 100644
index 0000000..7ef9c54
--- /dev/null
+++ b/src/site/resources/css/maven-base.css
@@ -0,0 +1,168 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+*/
+body {
+ margin: 0px;
+ padding: 0px;
+}
+img {
+ border:none;
+}
+table {
+ padding:0px;
+ width: 100%;
+ margin-left: -2px;
+ margin-right: -2px;
+}
+acronym {
+ cursor: help;
+ border-bottom: 1px dotted #feb;
+}
+table.bodyTable th, table.bodyTable td {
+ padding: 2px 4px 2px 4px;
+ vertical-align: top;
+}
+div.clear{
+ clear:both;
+ visibility: hidden;
+}
+div.clear hr{
+ display: none;
+}
+#bannerLeft, #bannerRight {
+ font-size: xx-large;
+ font-weight: bold;
+}
+#bannerLeft img, #bannerRight img {
+ margin: 0px;
+}
+.xleft, #bannerLeft img {
+ float:left;
+}
+.xright, #bannerRight {
+ float:right;
+}
+#banner {
+ padding: 0px;
+}
+#banner img {
+ border: none;
+}
+#breadcrumbs {
+ padding: 3px 10px 3px 10px;
+}
+#leftColumn {
+ width: 170px;
+ float:left;
+ overflow: auto;
+}
+#bodyColumn {
+ margin-right: 1.5em;
+ margin-left: 197px;
+}
+#legend {
+ padding: 8px 0 8px 0;
+}
+#navcolumn {
+ padding: 8px 4px 0 8px;
+}
+#navcolumn h5 {
+ margin: 0;
+ padding: 0;
+ font-size: small;
+}
+#navcolumn ul {
+ margin: 0;
+ padding: 0;
+ font-size: small;
+}
+#navcolumn li {
+ list-style-type: none;
+ background-image: none;
+ background-repeat: no-repeat;
+ background-position: 0 0.4em;
+ padding-left: 16px;
+ list-style-position: outside;
+ line-height: 1.2em;
+ font-size: smaller;
+}
+#navcolumn li.expanded {
+ background-image: url(../images/expanded.gif);
+}
+#navcolumn li.collapsed {
+ background-image: url(../images/collapsed.gif);
+}
+#poweredBy {
+ text-align: center;
+}
+#navcolumn img {
+ margin-top: 10px;
+ margin-bottom: 3px;
+}
+#poweredBy img {
+ display:block;
+ margin: 20px 0 20px 17px;
+}
+#search img {
+ margin: 0px;
+ display: block;
+}
+#search #q, #search #btnG {
+ border: 1px solid #999;
+ margin-bottom:10px;
+}
+#search form {
+ margin: 0px;
+}
+#lastPublished {
+ font-size: x-small;
+}
+.navSection {
+ margin-bottom: 2px;
+ padding: 8px;
+}
+.navSectionHead {
+ font-weight: bold;
+ font-size: x-small;
+}
+.section {
+ padding: 4px;
+}
+#footer {
+ padding: 3px 10px 3px 10px;
+ font-size: x-small;
+}
+#breadcrumbs {
+ font-size: x-small;
+ margin: 0pt;
+}
+.source {
+ padding: 12px;
+ margin: 1em 7px 1em 7px;
+}
+.source pre {
+ margin: 0px;
+ padding: 0px;
+}
+#navcolumn img.imageLink, .imageLink{
+ padding-left: 0px;
+ padding-bottom: 0px;
+ padding-top: 0px;
+ padding-right: 2px;
+ border: 0px;
+ margin: 0px;
+}
diff --git a/src/site/resources/css/site.css b/src/site/resources/css/site.css
index 1e70f6c..19e9d77 100644
--- a/src/site/resources/css/site.css
+++ b/src/site/resources/css/site.css
@@ -1,3 +1,5 @@
+@charset "UTF-8";
+
/*
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -15,3 +17,7 @@
limitations under the License.
*/
+
+@import url('styles.css');
+@import url('colors.css');
+@import url('img.css');
diff --git a/src/site/resources/css/styles.css b/src/site/resources/css/styles.css
new file mode 100644
index 0000000..fe9c05e
--- /dev/null
+++ b/src/site/resources/css/styles.css
@@ -0,0 +1,25 @@
+@charset "UTF-8";
+
+/*
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+*/
+
+pre
+{
+ margin-top: 0px;
+ margin-bottom: 0px;
+}
diff --git a/src/site/resources/images/logos/egg-logo.png b/src/site/resources/images/logos/egg-logo.png
new file mode 100644
index 0000000..c04e70d
--- /dev/null
+++ b/src/site/resources/images/logos/egg-logo.png
Binary files differ
diff --git a/src/site/resources/images/logos/ls-logo.jpg b/src/site/resources/images/logos/ls-logo.jpg
new file mode 100644
index 0000000..35f2f47
--- /dev/null
+++ b/src/site/resources/images/logos/ls-logo.jpg
Binary files differ
diff --git a/src/site/resources/images/logos/maven-feather.png b/src/site/resources/images/logos/maven-feather.png
new file mode 100644
index 0000000..b5ada83
--- /dev/null
+++ b/src/site/resources/images/logos/maven-feather.png
Binary files differ
diff --git a/src/site/resources/images/ls-logo.jpg b/src/site/resources/images/ls-logo.jpg
deleted file mode 100755
index 611c5c3..0000000
--- a/src/site/resources/images/ls-logo.jpg
+++ /dev/null
Binary files differ
diff --git a/src/site/site.xml b/src/site/site.xml
index 55f3d77..146ab44 100644
--- a/src/site/site.xml
+++ b/src/site/site.xml
@@ -15,55 +15,131 @@
limitations under the License.
-->
-<project name="log4cxx">
- <bannerLeft>
- <name>Logging Services</name>
- <src>images/ls-logo.jpg</src>
- <href>http://logging.apache.org/</href>
- </bannerLeft>
- <body>
- <breadcrumbs>
- <item name="Apache" href="http://www.apache.org/"/>
- <item name="Logging Services" href="http://logging.apache.org/"/>
- <item name="log4cxx" href="http://logging.apache.org:80/log4cxx/"/>
- </breadcrumbs>
-
- <menu name="Get log4cxx">
- <item name="Download" href="/download.html"/>
- <item name="Changes" href="/changes-report.html"/>
- <item name="License" href="/license.html"/>
- </menu>
+<project xmlns="http://maven.apache.org/DECORATION/1.4.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/DECORATION/1.4.0 http://maven.apache.org/xsd/decoration-1.4.0.xsd"
+ name="log4cxx">
+ <bannerLeft>
+ <name>Logging Services</name>
+ <src>images/logos/ls-logo.jpg</src>
+ <href>http://logging.apache.org</href>
+ <title>Open the Apache Logging homepage</title>
+ </bannerLeft>
- <menu name="About log4cxx">
- <item name="What is log4cxx?" href="/index.html"/>
- <item name="API Documentation" href="/apidocs/index.html"/>
- <item name="FAQ" href="/faq.html"/>
- </menu>
+ <bannerRight>
+ <name>Apache Incubator</name>
+ <src>images/logos/egg-logo.png</src>
+ <href>http://incubator.apache.org</href>
+ <title>Open the Apache Incubator homepage</title>
+ </bannerRight>
- <menu name="Community">
- <item name="Mailing Lists" href="/mail-lists.html"/>
- <item name="Issue Tracking" href="/issue-tracking.html"/>
- <item name="Wiki" href="http://wiki.apache.org/logging-log4cxx"/>
- </menu>
-
- <menu name="Development">
- <item name="Repository" href="/source-repository.html"/>
-
- <item name="Building">
- <item name="autotools" href="/building/autotools.html"/>
- <item name="Apache Ant" href="/building/ant.html"/>
- <item name="Apache Maven 2" href="/building/maven.html"/>
- <item name="Microsoft Visual Studio" href="/building/vstudio.html"/>
- <item name="Apple Xcode" href="/building/xcode.html"/>
- </item>
- </menu>
+ <skin>
+ <groupId>org.apache.maven.skins</groupId>
+ <artifactId>maven-default-skin</artifactId>
+ <version>1.1</version>
+ </skin>
- <menu name="Apache">
- <item name="Home" href="http://www.apache.org"/>
- <item name="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html"/>
- <item name="Thanks" href="http://www.apache.org/foundation/thanks.html"/>
- <item name="Conferences" href="http://www.apachecon.com"/>
- </menu>
+ <body>
+ <breadcrumbs>
+ <item name="Apache"
+ href="http://www.apache.org/"
+ />
+ <item name="Logging Services"
+ href="http://logging.apache.org/"
+ />
+ <item name="log4cxx"
+ href="http://incubator.apache.org/log4cxx"
+ />
+ </breadcrumbs>
- </body>
+ <menu name="About">
+ <item name="What is log4cxx?"
+ href="/index.html"
+ />
+ <item name="Project Information"
+ href="project-info.html"
+ />
+ <item name="Generated Reports"
+ href="project-reports.html"
+ />
+ </menu>
+
+ <menu name="Usage">
+ <item name="How to use log4cxx?"
+ href="/usage.html"
+ />
+ <item name="API Documentation"
+ href="/apidocs/index.html"
+ />
+ <item name="FAQ"
+ href="/faq.html"
+ />
+ </menu>
+
+ <menu name="Get">
+ <item name="Download"
+ href="/download.html"
+ />
+ <item name="Changes"
+ href="/changes-report.html"
+ />
+ <item name="License"
+ href="/license.html"
+ />
+ </menu>
+
+ <menu name="Community">
+ <item name="Mailing Lists"
+ href="/mail-lists.html"
+ />
+ <item name="Issue Tracking"
+ href="/issue-tracking.html"
+ />
+ <item name="Wiki"
+ href="http://wiki.apache.org/logging-log4cxx"
+ />
+ </menu>
+
+ <menu name="Development">
+ <item name="Repository"
+ href="/source-repository.html"
+ />
+ <item name="Dependencies"
+ href="dependencies.html"
+ />
+ <item name="Building"
+ href="/building/index.html">
+ <item name="autotools"
+ href="/building/autotools.html"
+ />
+ <item name="Apache Ant"
+ href="/building/ant.html"
+ />
+ <item name="Apache Maven 2"
+ href="/building/maven.html"
+ />
+ <item name="Microsoft Visual Studio"
+ href="/building/vstudio.html"
+ />
+ <item name="Apple Xcode"
+ href="/building/xcode.html"
+ />
+ </item>
+ </menu>
+
+ <menu name="Apache">
+ <item name="Home"
+ href="http://www.apache.org"
+ />
+ <item name="Sponsorship"
+ href="http://www.apache.org/foundation/sponsorship.html"
+ />
+ <item name="Thanks"
+ href="http://www.apache.org/foundation/thanks.html"
+ />
+ <item name="Conferences"
+ href="http://www.apachecon.com"
+ />
+ </menu>
+ </body>
</project>
diff --git a/src/site/xdoc/building/index.xml b/src/site/xdoc/building/index.xml
new file mode 100644
index 0000000..1a28ce1
--- /dev/null
+++ b/src/site/xdoc/building/index.xml
@@ -0,0 +1,187 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<document>
+ <properties>
+ <title>Building Apache log4cxx</title>
+ </properties>
+
+ <body>
+ <section name="Building Apache log4cxx">
+ <p>
+ The project supports different build tools on different platforms, have a look at
+ the menu to find the platform you need. If your environment is not covered already,
+ feel free to ask about it on one of the <a href="../mail-lists.html">Mailing Lists</a>
+ or leave a bug in our <a href="../issue-tracking.html">Issue Tracker</a>. In this
+ case it would be very helpful of course if you could already provide some patches
+ to support your environment or at least provide some technical details about the
+ build tools, compiler etc. you use.
+ </p>
+ </section>
+
+ <section name="Covered by the team">
+ <p>
+ The following table provides an overview about the environments some of the team
+ members have access to and therefore normally should work out of the box or at
+ least were used sometimes in the past. This list by no means tells something about
+ how good the support on each platform is, it's just a guide.
+ </p>
+
+ <table>
+ <caption>Environments in use</caption>
+ <thead>
+ <tr>
+ <th id="os">OS</th>
+ <th id="os_x86_x64">x86 vs. x64</th>
+ <th id="environment">Environment</th>
+ <th id="compiler">Compiler</th>
+ <th id="compiler_x86_x64">x86 vs. x64</th>
+ </tr>
+ </thead>
+ <tbody>
+ <!-- Windows -->
+ <tr>
+ <td headers="os"
+ rowspan="9">
+ Windows 7
+ </td>
+ <td headers="os_x86_x64"
+ rowspan="9">
+ x64
+ </td>
+ <td headers="environment"
+ rowspan="6">
+ Win32
+ </td>
+ <td headers="compiler">
+ MS Visual Studio 2008
+ </td>
+ <td headers="compiler_x86_x64"
+ rowspan="5">
+ both
+ </td>
+ </tr>
+ <tr>
+ <td headers="compiler">MS Visual Studio 2010 (Pro)</td>
+ </tr>
+ <tr>
+ <td headers="compiler">MS Visual Studio 2010 (Express)</td>
+ </tr>
+ <tr>
+ <td headers="compiler">MS Visual Studio 2012</td>
+ </tr>
+ <tr>
+ <td headers="compiler">MS Visual Studio 2013 (Express)</td>
+ </tr>
+ <tr>
+ <td headers="compiler">Embarcadero C++ Builder XE 4</td>
+ <td headers="compiler_x86_x64">x86</td>
+ </tr>
+ <tr>
+ <td headers="environment"
+ rowspan="2">
+ MinGW
+ </td>
+ <td headers="compiler">
+ gcc 4.5.4
+ </td>
+ <td headers="compiler_x86_x64"
+ rowspan="3">
+ both
+ </td>
+ </tr>
+ <tr>
+ <td headers="compiler">gcc 4.6.4</td>
+ </tr>
+ <tr>
+ <td headers="environment">Cygwin</td>
+ <td headers="compiler">gcc 4.8.2</td>
+ </tr>
+ <!-- Linux -->
+ <tr>
+ <td headers="os"
+ rowspan="2">
+ Debian
+ </td>
+ <td headers="os_x86_x64"
+ rowspan="2">
+ x86
+ </td>
+ <td headers="environment"
+ rowspan="11">
+ Posix
+ </td>
+ <td headers="compiler">
+ gcc
+ </td>
+ <td headers="compiler_x86_x64"
+ rowspan="2">
+ x86
+ </td>
+ </tr>
+ <tr>
+ <td headers="compiler">clang</td>
+ </tr>
+ <tr>
+ <td headers="os" rowspan="7">
+ Ubuntu and Scientific Linux
+ </td>
+ <td headers="os_x86_x64"
+ rowspan="9">
+ x64
+ </td>
+ <td headers="compiler">
+ gcc 4.5
+ </td>
+ <td headers="compiler_x86_x64"
+ rowspan="8">
+ both
+ </td>
+ </tr>
+ <tr>
+ <td headers="compiler">gcc 4.6</td>
+ </tr>
+ <tr>
+ <td headers="compiler">gcc 4.7</td>
+ </tr>
+ <tr>
+ <td headers="compiler">gcc 4.8</td>
+ </tr>
+ <tr>
+ <td headers="compiler">Intel 11.1</td>
+ </tr>
+ <tr>
+ <td headers="compiler">Intel 12.1</td>
+ </tr>
+ <tr>
+ <td headers="compiler">Intel 13.1</td>
+ </tr>
+ <tr>
+ <td headers="os">Red Hat</td>
+ <td headers="compiler">gcc</td>
+ </tr>
+ <!-- Mac OS X -->
+ <tr>
+ <td headers="os">Mac OS X 10.9 Mavericks</td>
+ <td headers="compiler">Xcode 5.0.2</td>
+ <td headers="compiler_x86_x64">x64</td>
+ </tr>
+ </tbody>
+ </table>
+ </section>
+ </body>
+</document> \ No newline at end of file
diff --git a/src/site/xdoc/index.xml b/src/site/xdoc/index.xml
deleted file mode 100644
index 929cd96..0000000
--- a/src/site/xdoc/index.xml
+++ /dev/null
@@ -1,936 +0,0 @@
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-<document>
-
- <properties>
- <title>Short introduction to Apache log4cxx</title>
- </properties>
- <body>
-<section name="Short introduction to Apache log4cxx">
-
-<h2>Introduction</h2>
-
-Apache log4cxx is a logging framework for C++ patterned after
-<a href="http://logging.apache.org/log4j">Apache log4j</a>.
-Apache log4cxx uses <a href="http://apr.apache.org">Apache Portable Runtime</a>
-for most platform-specific code and should be usable on any
-platform supported by APR. Apache log4cxx is licensed under the
-<a href="http://www.apache.org/licenses/">Apache License</a>,
-an open source license certified by the
-<a href="http://www.opensource.org/">Open Source Initiative</a>.
-
-<p>Almost every large application includes its own logging or tracing
-API. Inserting log statements into code is a low-tech method for
-debugging it. It may also be the only way because debuggers are not
-always available or applicable. This is usually the case for
-multithreaded applications and distributed applications at large.</p>
-
-<p>Experience indicates that logging is an important component of the
-development cycle. It offeres several advantages. It provides precise
-<em>context</em> about a run of the application. Once inserted into
-the code, the generation of logging output requires no human
-intervention. Moreover, log output can be saved in persistent medium
-to be studied at a later time. In addition to its use in the
-development cycle, a sufficiently rich logging package can also be
-viewed as an auditing tool.</p>
-
-<p>Logging does have its drawbacks. It can slow down an
-application. If too verbose, it can cause scrolling blindness. To
-alleviate these concerns, log4cxx is designed to be reliable, fast and
-extensible. Since logging is rarely the main focus of an application,
-the log4cxx API strives to be simple to understand and to use.</p>
-
-<h2>Loggers, Appenders and Layouts</h2>
-
-<p>Log4cxx has three main components: <em>loggers</em>,
-<em>appenders</em> and <em>layouts</em>. These three types of
-components work together to enable developers to log messages according
-to message type and level, and to control at runtime how these
-messages are formatted and where they are reported.</p>
-
-<h3>Logger hierarchy</h3>
-
-<p>The first and foremost advantage of any logging API over plain
-<code>std::cout</code> resides in its ability to disable
-certain log statements while allowing others to print unhindered. This
-capability assumes that the logging space, that is, the space of all
-possible logging statements, is categorized according to some
-developer-chosen criteria.</p>
-
-<p>Loggers are named entities. Logger names are case-sensitive and
-they follow the hierarchical naming rule:</p>
-
-<p>
-<table bgcolor="#EEEE99">
- <tr>
- <td>
- <dl>
- <dt><b>Named Hierarchy</b></dt>
-
- <dd>A logger is said to be an <em>ancestor</em> of another
- logger if its name followed by a dot is a prefix of the
- <em>descendant</em> logger name. A logger is said to be a
- <em>parent</em> of a <em>child</em> logger if there are no
- ancestors between itself and the descendant logger.</dd>
-
-
- </dl>
-</td></tr></table></p>
-
-
-<p>For example, the logger named <code>"com.foo"</code> is a parent
-of the logger named <code>"com.foo.Bar"</code>. Similarly,
-<code>"java"</code> is a parent of <code>"java.util"</code> and an
-ancestor of <code>"java.util.Vector"</code>. This naming scheme
-should be familiar to most developers.</p>
-
-<p>The root logger resides at the top of the logger hierarchy. It
-is exceptional in two ways:
-
-<ol>
-<li> it always exists,</li>
-<li> it cannot be retrieved by name.</li>
-</ol></p>
-<p>Invoking the class static <a
-href="apidocs/classlog4cxx_1_1Logger.html#e3">log4cxx::Logger::getRootLogger</a>
-method retrieves it. All other loggers are instantiated and
-retrieved with the class static <a
-href="apidocs/classlog4cxx_1_1Logger.html#e0">log4cxx::Logger::getLogger</a>
-method. This method takes the name of the desired logger as a
-parameter. Some of the basic methods in the Logger class are listed
-below.</p>
-
-<p><table>
-<tr bgcolor="CCCCCC">
-<td>
-<pre>
- namespace log4cxx {
-
- class <b>Logger</b> {
- public:
- // Creation &amp; retrieval methods:
- static LoggerPtr getRootLogger();
- static LoggerPtr getLogger(const std::string&amp; name);
- static LoggerPtr getLogger(const std::wstring&amp; name);
-
- }
- }
-//
-// Use these macros instead of calling Logger methods directly.
-// Macros will handle char or wchar_t pointers or strings
-// or most right-hand side expressions of an
-// std::basic_string::operator&lt;&lt;.
-//
-#define LOG4CXX_TRACE(logger, expression) ...
-#define LOG4CXX_DEBUG(logger, expression) ...
-#define LOG4CXX_INFO(logger, expression) ...
-#define LOG4CXX_WARN(logger, expression) ...
-#define LOG4CXX_ERROR(logger, expression) ...
-#define LOG4CXX_FATAL(logger, expression) ...
-</pre>
-</td>
-</tr>
-</table></p>
-
-<p>Loggers <em>may</em> be assigned levels. The pre-defined
-levels: TRACE, DEBUG, INFO, WARN, ERROR and FATAL are defined in the <code><a
-href="apidocs/classlog4cxx_1_1Level.html">log4cxx::Level</a></code>
-class which provides accessor functions.</p>
-
-<p>If a given logger is not assigned a level, then it inherits
-one from its closest ancestor with an assigned level. More
-formally:</p>
-
-
-<p>
-<table bgcolor="#EEEE99">
- <tr>
- <td>
- <dl>
- <dt><b>Level Inheritance</b></dt>
-
- <dd><p>The <em>inherited level</em> for a given logger
-<i>C</i>, is equal to the first non-null level in the logger
-hierarchy, starting at <i>C</i> and proceeding upwards in the
-hierarchy towards the <code>root</code> logger.</p></dd>
-
- </dl>
- </td>
- </tr>
-</table></p>
-
-<p>To ensure that all loggers can eventually inherit a level,
-the root logger always has an assigned level.</p>
-
-<p>Below are four tables with various assigned level values and the
-resulting inherited levels according to the above rule.</p>
-
-<p>
-<table border="1" >
- <tr><th>Logger<br/>name</th><th>Assigned<br/>level</th>
- <th>Inherited<br/>level</th></tr>
- <tr align="left"><td>root</td> <td>Proot</td> <td>Proot</td></tr>
- <tr align="left"><td>X </td> <td>none</td> <td>Proot</td></tr>
- <tr align="left"><td>X.Y </td> <td>none</td> <td>Proot</td></tr>
- <tr align="left"><td>X.Y.Z</td> <td>none</td> <td>Proot</td></tr>
- <caption align="bottom">Example 1</caption>
-</table></p>
-
-<p>In example 1 above, only the root logger is assigned a
-level. This level value, <code>Proot</code>, is inherited by the
-other loggers <code>X</code>, <code>X.Y</code> and
-<code>X.Y.Z</code>.</p>
-
-
-<p>
-<table border="1">
- <tr><th>Logger<br/>name</th><th>Assigned<br/>level</th>
- <th>Inherited<br/>level</th></tr>
- <tr align="left"><td>root</td> <td>Proot</td> <td>Proot</td></tr>
- <tr align="left"><td>X </td> <td>Px</td> <td>Px</td></tr>
- <tr align="left"><td>X.Y </td> <td>Pxy</td> <td>Pxy</td></tr>
- <tr align="left"><td>X.Y.Z</td> <td>Pxyz</td> <td>Pxyz</td></tr>
- <caption align="bottom">Example 2</caption>
- </table></p>
-
-<p>In example 2, all loggers have an assigned level value. There
-is no need for level inheritence.</p>
-
-<p><table border="1">
- <tr><th>Logger<br/>name</th><th>Assigned<br/>level</th>
- <th>Inherited<br/>level</th></tr>
- <tr align="left"><td>root</td> <td>Proot</td> <td>Proot</td></tr>
- <tr align="left"><td>X </td> <td>Px</td> <td>Px</td></tr>
- <tr align="left"><td>X.Y </td> <td>none</td> <td>Px</td></tr>
- <tr align="left"><td>X.Y.Z</td> <td>Pxyz</td> <td>Pxyz</td></tr>
- <caption align="bottom">Example 3</caption>
-</table></p>
-
-<p>In example 3, the loggers <code>root</code>, <code>X</code> and
-<code>X.Y.Z</code> are assigned the levels <code>Proot</code>,
-<code>Px</code> and <code>Pxyz</code> respectively. The logger
-<code>X.Y</code> inherits its level value from its parent
-<code>X</code>.</p>
-
-<table border="1">
- <tr><th>Logger<br/>name</th><th>Assigned<br/>level</th>
- <th>Inherited<br/>level</th></tr>
- <tr align="left"><td>root</td> <td>Proot</td> <td>Proot</td></tr>
- <tr align="left"><td>X </td> <td>Px</td> <td>Px</td></tr>
- <tr align="left"><td>X.Y </td> <td>none</td> <td>Px</td></tr>
- <tr align="left"><td>X.Y.Z</td> <td>none</td> <td>Px</td></tr>
- <caption align="bottom">Example 4</caption>
-</table>
-
-<p>In example 4, the loggers <code>root</code> and <code>X</code>
-and are assigned the levels <code>Proot</code> and <code>Px</code>
-respectively. The loggers <code>X.Y</code> and <code>X.Y.Z</code>
-inherits their level value from their nearest parent <code>X</code>
-having an assigned level.</p>
-
-
-<p>Logging requests are made by invoking a method of
-a logger instance, preferrably through the use of LOG4CXX_INFO or similar
-macros which support short-circuiting if the threshold is not satisfied
-and use of the insertion operator (&lt;&lt;) in the message parameter.</p>
-
-<p><table bgcolor="CCCCCC"><tr><td><pre>
- log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger(<strong>"com.foo"</strong>));
- const char* region = "World";
- LOG4CXX_INFO(logger, "Simple message text.");
- LOG4CXX_INFO(logger, "Hello, " &lt;&lt; region);
- LOG4CXX_DEBUG(logger, L"Iteration " &lt;&lt; i);
- LOG4CXX_DEBUG(logger, "e^10 = " &lt;&lt; std::scientific &lt;&lt; exp(10.0));
- //
- // Use a wchar_t first operand to force use of wchar_t based stream.
- //
- LOG4CXX_WARN(logger, L"" &lt;&lt; i &lt;&lt; L" is the number of the iteration.");
-</pre></td></tr></table></p>
-
-<p>A logging request is said to be <em>enabled</em> if its level is
-higher than or equal to the level of its logger. Otherwise, the
-request is said to be <em>disabled</em>. A logger without an
-assigned level will inherit one from the hierarchy. This rule is
-summarized below.</p>
-
-
-<p>
-<a name="selectionRule"/><table bgcolor="#EEEE99">
- <tr>
- <td>
- <dl>
- <dt><b>Basic Selection Rule</b></dt>
-
- <dd><p>A log request of level <i>p</i> in a logger with
- (either assigned or inherited, whichever is appropriate) level <i>q</i>, is enabled if <i> p &gt;=
- q</i>.</p></dd>
- </dl>
-</td></tr></table></p>
-
-<p>This rule is at the heart of log4cxx. It assumes that levels are
-ordered. For the standard levels, we have <code>TRACE &lt; DEBUG &lt; INFO
-&lt; WARN &lt; ERROR &lt; FATAL</code>.</p>
-
-<p>Here is an example of this rule.</p>
-
-<p><table bgcolor="CCCCCC">
-<tr><td>
-<pre>
-
- // get a logger instance named "com.foo"
- log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger(<strong>"com.foo"</strong>));
-
- // Now set its level. Normally you do not need to set the
- // level of a logger programmatically. This is usually done
- // in configuration files.
- <strong>logger</strong>->setLevel(<font
- color="0000AA"><strong>log4cxx::Level::getInfo()</strong></font>);
-
- log4cxx::LoggerPtr barlogger(log4cxx::Logger::getLogger(<strong>"com.foo.Bar"</strong>);
-
- // This request is enabled, because <font color="00AA00"><strong>WARN</strong></font> &gt;= <font color="0000AA"><strong>INFO</strong></font>.
- LOG4CXX_WARN(logger, "Low fuel level.");
-
- // This request is disabled, because <font color="00AA00"><strong>DEBUG</strong></font> &lt; <font color="0000AA"><strong>INFO</strong></font>.
- LOG4CXX_DEBUG(logger, "Starting search for nearest gas station.");
-
- // The logger instance barlogger, named "com.foo.Bar",
- // will inherit its level from the logger named
- // "com.foo" Thus, the following request is enabled
- // because <font color="00AA00"><strong>INFO</strong></font> &gt;= <font color="0000AA"><strong>INFO</strong></font>.
- LOG4CXX_INFO(barlogger. "Located nearest gas station.");
-
- // This request is disabled, because <font color="00AA00"><strong>DEBUG</strong></font> &lt; <font color="0000AA"><strong>INFO</strong></font>.
- LOG4CXX_DEBUG(barlogger, "Exiting gas station search");
-</pre>
-</td></tr>
-</table></p>
-
-<p>Calling the <code>getLogger</code> method with the same name will
-always return a reference to the exact same logger object.</p>
-
-<p>For example, in
-
-<table bgcolor="CCCCCC">
-<tr><td>
-<pre>
- log4cxx::LoggerPtr x = log4cxx::Logger::getLogger("wombat");
- log4cxx::LoggerPtr y = log4cxx::Logger::getLogger("wombat");</pre>
-</td></tr>
-</table>
-<code>x</code> and <code>y</code> refer to <em>exactly</em> the same
-logger object.</p>
-
-<p>Thus, it is possible to configure a logger and then to retrieve
-the same instance somewhere else in the code without passing around
-references. In fundamental contradiction to biological parenthood,
-where parents always preceed their children, log4cxx loggers can be
-created and configured in any order. In particular, a "parent"
-logger will find and link to its descendants even if it is
-instantiated after them.</p>
-
-<p>Configuration of the log4cxx environment is typically done at
-application initialization. The preferred way is by reading a
-configuration file. This approach will be discussed shortly.</p>
-
-<p>Log4cxx makes it easy to name loggers by <em>software
-component</em>. This can be accomplished by statically instantiating
-a logger in each class, with the logger name equal to the fully
-qualified name of the class. This is a useful and straightforward
-method of defining loggers. As the log output bears the name of the
-generating logger, this naming strategy makes it easy to identify
-the origin of a log message. However, this is only one possible,
-albeit common, strategy for naming loggers. Log4cxx does not restrict
-the possible set of loggers. The developer is free to name the
-loggers as desired.</p>
-
-<p>Nevertheless, naming loggers after the class where they are
-located seems to be the best strategy known so far.</p>
-
-<h2>Appenders and Layouts</h2>
-
-<p>The ability to selectively enable or disable logging requests based
-on their logger is only part of the picture. Log4cxx allows logging
-requests to print to multiple destinations. In log4cxx speak, an output
-destination is called an <em>appender</em>. Currently, appenders exist
-for the <a href="apidocs/classlog4cxx_1_1ConsoleAppender.html">console</a>, <a
-href="apidocs/classlog4cxx_1_1FileAppender.html">files</a>, GUI
-components, <a
-href="apidocs/classlog4cxx_1_1net_1_1SocketAppender.html">remote socket</a>
-servers, <a href="apidocs/classlog4cxx_1_1nt_1_1NTEventLogAppender.html"> NT
-Event Loggers</a>, and remote UNIX <a
-href="apidocs/classlog4cxx_1_1net_1_1SyslogAppender.html">Syslog</a>
-daemons. It is also possible to log <a href="apidocs/classlog4cxx_1_1AsyncAppender.html">asynchronously</a>.</p>
-
-<p>More than one appender can be attached to a logger.</p>
-
-<p>The <a
-href="apidocs/classlog4cxx_1_1Logger.html#a3">addAppender</a>
-method adds an appender to a given logger.
-
-<b>Each enabled logging
-request for a given logger will be forwarded to all the appenders in
-that logger as well as the appenders higher in the hierarchy.</b> In
-other words, appenders are inherited additively from the logger
-hierarchy. For example, if a console appender is added to the root
-logger, then all enabled logging requests will at least print on the
-console. If in addition a file appender is added to a logger, say
-<em>C</em>, then enabled logging requests for <em>C</em> and
-<em>C</em>'s children will print on a file <em>and</em> on the
-console. It is possible to override this default behavior so that
-appender accumulation is no longer additive by <a
-href="apidocs/classlog4cxx_1_1Logger.html#a46">setting
-the additivity flag</a> to <code>false</code>.</p>
-
-<p>The rules governing appender additivity are summarized below.</p>
-
-<p>
-<a name="additivity"/><table bgcolor="#EEEE99">
- <tr>
- <td>
- <dl>
- <dt><b>Appender Additivity</b></dt>
-
- <dd><p>The output of a log statement of logger <i>C</i> will
- go to all the appenders in <i>C</i> and its ancestors. This is
- the meaning of the term "appender additivity".</p>
-
- <p>However, if an ancestor of logger <i>C</i>, say <i>P</i>,
- has the additivity flag set to <code>false</code>, then
- <i>C</i>'s output will be directed to all the appenders in
- <i>C</i> and it's ancestors upto and including <i>P</i> but
- not the appenders in any of the ancestors of <i>P</i>.</p>
-
- <p>Loggers have their additivity flag set to
- <code>true</code> by default.</p></dd>
- </dl></td></tr>
-</table></p>
-
-
-<p>The table below shows an example:</p>
-
-<p><table align="center" border="3" cellpadding="10">
- <tr rowspan="2">
- <th>Logger<br/>Name </th><th>Added<br/>Appenders</th> <th>Additivity<br/>Flag</th> <th>Output Targets</th> <th>Comment</th>
- </tr>
-<tr><td>root </td><td>A1 </td><td>not applicable </td><td>A1</td>
-
- <td>The root logger is anonymous but can be accessed with the
- log4cxx::Logger::getRootLogger() method. There is no default appender
- attached to root.</td></tr>
-
-<tr><td>x </td><td>A-x1, A-x2 </td><td>true </td><td>A1, A-x1, A-x2</td>
- <td>Appenders of "x" and root.</td></tr>
-
-<tr><td>x.y </td><td>none </td><td>true </td><td>A1, A-x1, A-x2</td>
- <td>Appenders of "x" and root.</td></tr>
-
-<tr><td>x.y.z </td><td>A-xyz1 </td><td>true </td><td>A1, A-x1, A-x2, A-xyz1</td>
- <td>Appenders in "x.y.z", "x" and root.</td></tr>
-
-<tr><td>security </td><td>A-sec </td><td><font color="blue">false</font></td>
- <td>A-sec</td>
-
- <td>No appender accumulation since the additivity flag is set to
- <code>false</code>.</td></tr>
-
-<tr><td>security.access </td><td>none </td><td> true </td><td> A-sec </td><td>Only
- appenders of "security" because the additivity flag in "security" is
- set to <code>false</code>.</td></tr>
-
-</table>
-
-
-<p>More often than not, users wish to customize not only the output
-destination but also the output format. This is accomplished by
-associating a <em>layout</em> with an appender. The layout is
-responsible for formatting the logging request according to the user's
-wishes, whereas an appender takes care of sending the formatted output
-to its destination.</p>
-
-The <a
-href="apidocs/classlog4cxx_1_1PatternLayout.html">PatternLayout</a>, part
-of the standard log4cxx distribution, lets the user specify the output
-format according to conversion patterns similar to the C language
-<code>printf</code> function.</p>
-
-<p>For example, the PatternLayout with the conversion pattern "%r [%t]
-%-5p %c - %m%n" will output something akin to:<br/>
-
-<pre>
-176 [main] INFO org.foo.Bar - Located nearest gas station.
-</pre></p>
-
-<p>The first field is the number of milliseconds elapsed since the
-start of the program. The second field is the thread making the log
-request. The third field is the level of the log statement. The
-fourth field is the name of the logger associated with the log
-request. The text after the '-' is the message of the statement.</p>
-
-
-<h2>Configuration</h2>
-
-<p>Inserting log requests into the application code requires a fair
-amount of planning and effort. Observation shows that approximately 4
-percent of code is dedicated to logging. Consequently, even moderately
-sized applications will have thousands of logging statements embedded
-within their code. Given their number, it becomes imperative to
-manage these log statements without the need to modify them manually.</p>
-
-<p>The log4cxx environment is fully configurable programmatically.
-However, it is far more flexible to configure log4cxx using
-configuration files. Currently, configuration files can be written in
-XML or in Java properties (key=value) format.</p>
-
-<p>Let us give a taste of how this is done with the help of an
-imaginary application <code>MyApp</code> that uses log4cxx.</p>
-
-<p><table bgcolor="CCCCCC"><tr><td>
-<pre>
-#include "com/foo/bar.h"
-using namespace com::foo;
-
-// include log4cxx header files.
-#include "log4cxx/logger.h"
-#include "log4cxx/basicconfigurator.h"
-#include "log4cxx/helpers/exception.h"
-
-using namespace log4cxx;
-using namespace log4cxx::helpers;
-
-LoggerPtr logger(Logger::getLogger("MyApp"));
-
-int main(int argc, char **argv)
-{
- int result = EXIT_SUCCESS;
- try
- {
- // Set up a simple configuration that logs on the console.
- BasicConfigurator::configure();
-
- LOG4CXX_INFO(logger, "Entering application.");
- Bar bar;
- bar.doIt();
- LOG4CXX_INFO(logger, "Exiting application.");
- }
- catch(Exception&amp;)
- {
- result = EXIT_FAILURE;
- }
-
- return result;
-}
-</pre>
-</td></tr>
-</table></p>
-
-<p><code>MyApp</code> begins by including log4cxx headers. It
-then defines a static logger variable with the name
-<code>MyApp</code> which happens to be the fully qualified name of the
-class.</p>
-
-<p><code>MyApp</code> uses the <code>Bar</code> class defined in header
-file <code>com/foo/bar.h</code>.</p>
-
-<p><table bgcolor="CCCCCC"><tr><td>
-<pre>
-// file com/foo/bar.h
-#include "log4cxx/logger.h"
-
-namespace com {
- namespace foo {
- class Bar {
- static log4cxx::LoggerPtr logger;
-
- public:
- void doIt();
- }
- }
-}
-</pre>
-
-<pre>
-// file bar.cpp
-#include "com/foo/bar.h"
-
-using namespace com::foo;
-using namespace log4cxx;
-
-LoggerPtr Bar::logger(Logger::getLogger("com.foo.bar"));
-
-void Bar::doIt() {
- LOG4CXX_DEBUG(logger, "Did it again!");
-}
-</pre>
-</td></tr>
-</table></p>
-
-<p>The invocation of the <a
-href="apidocs/classlog4cxx_1_1BasicConfigurator.html#e0">BasicConfigurator::configure</a>
-method creates a rather simple log4cxx setup. This method is hardwired
-to add to the root logger a <a
-href="apidocs/classlog4cxx_1_1ConsoleAppender.html">
-ConsoleAppender</a>. The output will be formatted using a <a
-href="apidocs/classlog4cxx_1_1PatternLayout.html">PatternLayout</a> set
-to the pattern "%-4r [%t] %-5p %c %x - %m%n".</p>
-
-<p>Note that by default, the root logger is assigned to
-<code>Level::getDebug()</code>.</p>
-
-<p>The output of MyApp is:
-<pre>
-0 [12345] INFO MyApp - Entering application.
-36 [12345] DEBUG com.foo.Bar - Did it again!
-51 [12345] INFO MyApp - Exiting application.
-</pre></p>
-
-<p>The previous example always outputs the same log information.
-Fortunately, it is easy to modify <code>MyApp</code> so that the log
-output can be controlled at run-time. Here is a slightly modified
-version.</p>
-
-<p><table bgcolor="CCCCCC"><tr><td>
-<pre>
-// file MyApp2.cpp
-
-#include "com/foo/bar.h"
-using namespace com::foo;
-
-// include log4cxx header files.
-#include "log4cxx/logger.h"
-#include "log4cxx/basicconfigurator.h"
-#include "log4cxx/propertyconfigurator.h"
-#include "log4cxx/helpers/exception.h"
-
-using namespace log4cxx;
-using namespace log4cxx::helpers;
-// Define a static logger variable so that it references the
-// Logger instance named "MyApp".
-LoggerPtr logger(Logger::getLogger("MyApp"));
-
-int main(int argc, char **argv)
-{
- int result = EXIT_SUCCESS;
- try
- {
- if (argc > 1)
- {
- // BasicConfigurator replaced with PropertyConfigurator.
- PropertyConfigurator::configure(argv[1]);
- }
- else
- {
- BasicConfigurator::configure();
- }
-
- LOG4CXX_INFO(logger, "Entering application.");
- Bar bar
- bar.doIt();
- LOG4CXX_INFO(logger, "Exiting application.");
- }
- catch(Exception&amp;)
- {
- result = EXIT_FAILURE;
- }
-
- return result;
-}
-</pre>
-</td></tr>
-</table>
-
-<p>This version of <code>MyApp</code> instructs
-<code>PropertyConfigurator</code> to parse a configuration file and
-set up logging accordingly.</p>
-
-<p>Here is a sample configuration file that results in exactly same
-output as the previous <code>BasicConfigurator</code> based example.</p>
-
-<p><table bgcolor="CCAAAA"><tr><td>
-<pre>
-# Set root logger level to DEBUG and its only appender to A1.
-log4j.rootLogger=DEBUG, A1
-
-# A1 is set to be a ConsoleAppender.
-log4j.appender.A1=org.apache.log4j.ConsoleAppender
-
-# A1 uses PatternLayout.
-log4j.appender.A1.layout=org.apache.log4j.PatternLayout
-log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
-</pre>
-</td></tr></table></p>
-
-<p>It can be noticed that the PropertyConfigurator file format is the same as log4j.</p>
-
-<p>Suppose we are no longer interested in seeing the output of any
-component belonging to the <code>com::foo</code> package. The following
-configuration file shows one possible way of achieving this.</p>
-
-<p><table bgcolor="CCAAAA"><tr><td>
-<pre>
-log4j.rootLogger=DEBUG, A1
-log4j.appender.A1=org.apache.log4j.ConsoleAppender
-log4j.appender.A1.layout=org.apache.log4j.PatternLayout
-
-# <strong>Print the date in ISO 8601 format</strong>
-log4j.appender.A1.layout.ConversionPattern=<strong>%d</strong> [%t] %-5p %c - %m%n
-
-# Print only messages of level WARN or above in the package com.foo.
-<strong>log4j.logger.com.foo=WARN</strong>
-</pre>
-</td></tr></table></p>
-
-<p>The output of <code>MyApp</code> configured with this file is shown below.</p>
-
-<pre>
-<strong>2000-09-07 14:07:41,508</strong> [12345] INFO MyApp - Entering application.
-<strong>2000-09-07 14:07:41,529</strong> [12345] INFO MyApp - Exiting application.
-</pre>
-
-<p>As the logger <code>com.foo.Bar</code> does not have an assigned
-level, it inherits its level from <code>com.foo</code>, which
-was set to WARN in the configuration file. The log statement from the
-<code>Bar::doIt</code> method has the level DEBUG, lower than the
-logger level WARN. Consequently, <code>doIt()</code> method's log
-request is suppressed.</p>
-
-<p>Here is another configuration file that uses multiple appenders.</p>
-
-<p><table bgcolor="CCAAAA"><tr><td>
-<pre>
-log4j.rootLogger=debug, <strong>stdout, R</strong>
-
-log4j.appender.<strong>stdout</strong>=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-
-# Pattern to output the caller's file name and line number.
-log4j.appender.stdout.layout.ConversionPattern=%5p [%t] <strong>(%F:%L)</strong> - %m%n
-
-log4j.appender.<strong>R</strong>=org.apache.log4j.RollingFileAppender
-log4j.appender.R.File=example.log
-
-log4j.appender.R.MaxFileSize=<strong>100KB</strong>
-# Keep one backup file
-log4j.appender.R.MaxBackupIndex=1
-
-log4j.appender.R.layout=org.apache.log4j.PatternLayout
-log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
-</pre>
-</td></tr></table></p>
-
-<p>Calling the enhanced MyApp with the this configuration file will
-output the following on the console.</p>
-
-<pre>
- INFO [12345] <strong>(MyApp2.cpp:31)</strong> - Entering application.
-DEBUG [12345] (Bar.h:16) - Doing it again!
- INFO [12345] (MyApp2.cpp:34) - Exiting application.
-</pre></p>
-
-<p>In addition, as the root logger has been allocated a second
-appender, output will also be directed to the <code>example.log</code>
-file. This file will be rolled over when it reaches 100KB. When
-roll-over occurs, the old version of <code>example.log</code> is
-automatically moved to <code>example.log.1</code>.</p>
-
-<p>Note that to obtain these different logging behaviors we did not
-need to recompile code. We could just as easily have logged to a UNIX
-Syslog daemon, redirected all <code>com.foo</code> output to an NT
-Event logger, or forwarded logging events to a remote log4cxx server,
-which would log according to local server policy, for example by
-forwarding the log event to a second log4cxx server.</p>
-
-<a name="defaultInit"/><h2>Default Initialization Procedure</h2>
-
-<p>The log4cxx library does not make any assumptions about its
-environment. In particular, there are no default log4cxx
-appenders. Under certain well-defined circumstances however, the
-static inializer of the <code>Logger</code> class will attempt to
-automatically configure log4cxx.</p>
-
-<p>The exact default initialization algorithm is defined as follows:</p>
-
-<ol>
-
- <li><p>Set the configurationOptionStr string variable to the value of the
- <b>LOG4CXX_CONFIGURATION</b> environment variable if set, otherwise
- the value of the <b>log4j.configuration</b> or <b>LOG4CXX_CONFIGURATION</b>
- environment variable if set,
- otherwise the first of the following file names which exist in the
- current working directory, "log4cxx.xml", "log4cxx.properties",
- "log4j.xml" and "log4j.properties".
- If configurationOptionStr has not been set, then disable logging.</p></li>
-
- <li><p>Unless a custom configurator is specified using the
- <b>LOG4CXX_CONFIGURATOR_CLASS</b> or <b>log4j.configuratorClass</b>
- environment variable, the PropertyConfigurator will be used to configure
- log4cxx unless the file name ends with the ".xml" extension,
- in which case the DOMConfigurator will be used.
- If a custom configurator is specified, the environment variable
- should contain a fully qualified class name of a class that
- implements the Configurator interface.</p>
- </li>
-
-</ol>
-
-
-<h2> Nested Diagnostic Contexts</h2>
-
-<p>Most real-world systems have to deal with multiple clients
-simultaneously. In a typical multithreaded implementation of such a
-system, different threads will handle different clients. Logging is
-especially well suited to trace and debug complex distributed
-applications. A common approach to differentiate the logging output of
-one client from another is to instantiate a new separate logger for
-each client. This promotes the proliferation of loggers and
-increases the management overhead of logging.</p>
-
-<p>A lighter technique is to uniquely stamp each log request initiated
-from the same client interaction. Neil Harrison described this method
-in the book "Patterns for Logging Diagnostic Messages," in <em>Pattern
-Languages of Program Design 3</em>, edited by R. Martin, D. Riehle,
-and F. Buschmann (Addison-Wesley, 1997).</p>
-
-
-
-<p> To uniquely stamp each request, the
-user pushes contextual information into the NDC, the abbreviation of
-<em>Nested Diagnostic Context</em>. The NDC class is shown below.
-
-<pre>
-namespace log4cxx {
- class NDC {
- public:
- // pushes the value on construction and pops on destruction.
- NDC(const std::string&amp; value);
- NDC(const std::wstring&amp; value);
-
- // Remove the top of the context from the NDC.
- <strong>static</strong> LogString pop();
-
- // Add diagnostic context for the current thread.
- <strong>static</strong> void push(const std::string&amp; message);
- <strong>static</strong> void push(const std::wstring&amp; message);
- }
-</pre></p>
-
-<p>The NDC is managed per thread as a <em>stack</em> of contextual
-information. Note that all methods of the <code>log4cxx::NDC</code>
-class are static. Assuming that NDC printing is turned on, every time
-a log request is made, the appropriate log4cxx component will include
-the <em>entire</em> NDC stack for the current thread in the log
-output. This is done without the intervention of the user, who is
-responsible only for placing the correct information in the NDC by
-using the <code>push</code> and <code>pop</code> methods at a few
-well-defined points in the code. In contrast, the per-client logger
-approach commands extensive changes in the code.</p>
-
-<p>To illustrate this point, let us take the example of a servlet
-delivering content to numerous clients. The servlet can build the NDC
-at the very beginning of the request before executing other code. The
-contextual information can be the client's host name and other
-information inherent to the request, typically information contained
-in cookies. Hence, even if the servlet is serving multiple clients
-simultaneously, the logs initiated by the same code, i.e. belonging to
-the same logger, can still be distinguished because each client
-request will have a different NDC stack. Contrast this with the
-complexity of passing a freshly instantiated logger to all code
-exercised during the client's request.</p>
-
-<p>Nevertheless, some sophisticated applications, such as virtual
-hosting web servers, must log differently depending on the virtual
-host context and also depending on the software component issuing the
-request. Recent log4cxx releases support multiple hierarchy trees. This
-enhancement allows each virtual host to possess its own copy of the
-logger hierarchy.</p>
-
-
-<a name="performance"/><h2>Performance</h2>
-
-<p>One of the often-cited arguments against logging is its
-computational cost. This is a legitimate concern as even moderately
-sized applications can generate thousands of log requests. Much
-effort was spent measuring and tweaking logging performance. Log4cxx
-claims to be fast and flexible: speed first, flexibility second.</p>
-
-<p>The user should be aware of the following performance issues.</p>
-
-<ol>
- <li><b>Logging performance when logging is turned off.</b><br/>
-
- <p>When logging is turned
- off entirely or just for a set
- of levels, the cost of a log request consists of a method
- invocation plus an integer comparison. The LOG4CXX_DEBUG and similar
- macros suppress unnecessary expression evaluation if the
- request is not enabled.</p></li>
-
- <li><b>The performance of deciding whether to log or not to log when
- logging is turned on.</b><br/>
-
- <p>This is essentially the performance of walking the logger
- hierarchy. When logging is turned on, log4cxx still needs to compare
- the level of the log request with the level of the request
- logger. However, loggers may not have an assigned
- level; they can inherit them from the logger hierarchy. Thus,
- before inheriting a level, the logger may need to search its
- ancestors.</p>
-
- <p>There has been a serious effort to make this hierarchy walk to
-be as fast as possible. For example, child loggers link only to
-their existing ancestors. In the <code>BasicConfigurator</code>
-example shown earlier, the logger named <code>com.foo.Bar</code> is
-linked directly to the root logger, thereby circumventing the
-nonexistent <code>com</code> or <code>com.foo</code> loggers. This
-significantly improves the speed of the walk, especially in "sparse"
-hierarchies.</p>
-
- <p>The cost of walking the hierarchy is typically 3
- times slower than when logging is turned off entirely.</p></li>
-
- <li><b>Actually outputting log messages</b><br/>
-
- <p>This is the cost of formatting the log output and sending it to
- its target destination. Here again, a serious effort was made to
- make layouts (formatters) perform as quickly as possible. The same
- is true for appenders.</p>
-
- </li>
-
-</ol>
-
-
-<h2>Conclusions</h2>
-
-<p>Apache Log4cxx is a popular logging package written in C++. One of its
-distinctive features is the notion of inheritance in loggers. Using
-a logger hierarchy it is possible to control which log statements
-are output at arbitrary granularity. This helps reduce the volume of
-logged output and minimize the cost of logging.</p>
-
-<p>One of the advantages of the log4cxx API is its manageability. Once
-the log statements have been inserted into the code, they can be
-controlled with configuration files. They can be selectively enabled
-or disabled, and sent to different and multiple output targets in
-user-chosen formats. The log4cxx package is designed so that log
-statements can remain in shipped code without incurring a heavy
-performance cost.</p>
-
-</section>
-</body>
-</document> \ No newline at end of file
diff --git a/src/site/xdoc/stylesheets/project.xml b/src/site/xdoc/stylesheets/project.xml
deleted file mode 100755
index 29d68e8..0000000
--- a/src/site/xdoc/stylesheets/project.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
-<project name="Logging Services"
- href="http://logging.apache.org/">
-
- <title>log4cxx</title>
- <!-- <logo href="images/logo.jpg">Apache Logging Services</logo> -->
- <copyright year="2004-2006" />
-
- <body>
-
- <menu name="Apache">
- <item name="Apache Home" href="http://www.apache.org" />
- <item name="Logging Services" href="http://logging.apache.org/" />
- </menu>
-
- <menu name="log4cxx project">
- <item name="Introduction" href="/index.html"/>
- <item name="Download" href="/download.html"/>
- <item name="Documentation" href="/manual/Introduction.html"/>
- <item name="SVN Repositories" href="http://logging.apache.org/site/cvs-repositories.html"/>
- <item name="Mailing Lists" href="http://logging.apache.org/site/mailing-lists.html"/>
- <item name="Bug Reporting" href="http://logging.apache.org/site/bugreport.html"/>
- </menu>
-
- </body>
-</project>
diff --git a/src/site/xdoc/stylesheets/site.css b/src/site/xdoc/stylesheets/site.css
deleted file mode 100644
index 73cd1bb..0000000
--- a/src/site/xdoc/stylesheets/site.css
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-H1, H2, H3 {
- color: #101099;
-}
-
-A:link, A:visited {
- text-decoration: none;
- color: #006699;
-}
-
-A:link:hover {
- text-decoration: underline;
-}
-
-.centercol {
- margin-top: 120px;
- margin-left: 210px;
- margin-right:210px;
- max-width: 800px;
-}
-
-.leftcol {
- position: absolute;
- left: 10px;
- top: 130px;
- width: 190px;
-}
-
-.banner {
- position: absolute;
- left: 10px;
- top: 10px;
- height: 130px;
- width: 1000px;
-}
-
-.menu_header, .menu_item {
-/* width: 190px; */
- font-family: "trebuchet MS", Arial, Helvetica, sans-serif;
- font-size: smaller;
-}
-
-.menu_header {
- border:1px solid #AAAAAA;
- background: #CCCCCC;
- padding-left: 1ex;
-}
-
-.menu_item:hover {
- background: #DDD;
-}
-
-.menu_item {
- background: #EEEEEE;
- padding-left: 2ex;
- border-top: 0px solid #AAAAAA;
- border-right: 1px solid #AAAAAA;
- border-bottom:1px solid #AAAAAA;
- border-left: 1px solid #AAAAAA;
-}
-
-.source {
- border-top: 1px solid #DDDDDD;
- border-bottom: 1px solid #DDDDDD;
- background:#eee;
- font-family: Courier, "MS Courier New", Prestige, Everson Monocourrier, monospace;
- font-size: smaller;
- padding-bottom: 0.5ex;
- padding-top: 0.5ex;
- padding-left: 2ex;
-}
-
-table.ls {
- background: #FFFFFF;
-}
-table.ls td {
- background: #f4f4f4;
- vertical-align: top;
- padding-bottom: 1ex;
-}
-
-table.ls th {
- background: #E4E4E4;
-}
-
-.index-faqSection {
- font-size: larger;
- padding-left: 0em;
- font-weight: bolder;
-}
-.index-question {
- padding-left: 1em;
-}
-
-.faqSection {
- font-size: larger;
- font-weight: bolder;
-}
-
-.question {
- font-weight: bolder;
-}
-
-/* this class is used for screen output placed in <pre></pre> tags */
-.screen_output {
- padding-left: 1em;
- padding-right: 1em;
- border-top: 1px solid #AAAAAA;
- border-right: 1px solid #AAAAAA;
- border-bottom:1px solid #AAAAAA;
- border-left: 1px solid #AAAAAA;
-}
-
-
-.big {
- font-size: larger;
- font-weight: bold;
-}
-
-.small {
- font-size: smaller;
-}
-
-.red {
- color: #AA0000;
-}
-
-.msg_title {
- padding-left: 1ex;
- padding-right: 1ex;
- font-family: Courier, "MS Courier New", Prestige, Everson Monocourrier, monospace;
- border: 1px solid #AAAAAA;
- background: #DDDDFF;
-
-}
-
-.msg_meaning {
- padding-left: 1em;
- padding-right: 1em;
-}
diff --git a/src/site/xdoc/stylesheets/site.vsl b/src/site/xdoc/stylesheets/site.vsl
deleted file mode 100755
index 04cf801..0000000
--- a/src/site/xdoc/stylesheets/site.vsl
+++ /dev/null
@@ -1,357 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-
-<!-- Content Stylesheet for Site -->
-
- ## Defined variables
- #set ($bodybg = "#ffffff")
- #set ($bodyfg = "#000000")
- #set ($bodylink = "#525D76")
-
- #set ($titlebg = "#FFFFFF")
- #set ($titlefg = "#2222AA")
-
-## #set ($bannerbg = "#525D76")
- #set ($bannerbg = "#FFFFFF")
- #set ($bannerfg = "#2222AA")
-
- #set ($subbannerbg = "#828DA6")
- #set ($subbannerfg = "#ffffff")
- #set ($tablethbg = "#039acc")
- #set ($tabletdbg = "#a0ddf0")
-
-<!-- start the processing -->
-#document()
-<!-- end the processing -->
-
-## This is where the macro's live
-
-#macro ( table $table)
-<table>
- #foreach ( $items in $table.getChildren() )
- #if ($items.getName().equals("tr"))
- #tr ($items)
- #end
- #end
-</table>
-#end
-
-#macro ( tr $tr)
-<tr>
- #foreach ( $items in $tr.getChildren() )
- #if ($items.getName().equals("td"))
- #td ($items)
- #elseif ($items.getName().equals("th"))
- #th ($items)
- #end
- #end
-</tr>
-#end
-
-#macro ( td $value)
-#if ($value.getAttributeValue("colspan"))
-#set ($colspan = $value.getAttributeValue("colspan"))
-#end
-#if ($value.getAttributeValue("rowspan"))
-#set ($rowspan = $value.getAttributeValue("rowspan"))
-#end
-<td bgcolor="$tabletdbg" colspan="$!colspan" rowspan="$!rowspan" valign="top" align="left">
- <font color="#000000" size="-1" face="arial,helvetica,sanserif">
- #if ($value.getText().length() != 0 || $value.hasChildren())
- $value.getContent()
- #else
- &nbsp;
- #end
- </font>
-</td>
-#end
-
-#macro ( th $value)
-#if ($value.getAttributeValue("colspan"))
-#set ($colspan = $value.getAttributeValue("colspan"))
-#end
-#if ($value.getAttributeValue("rowspan"))
-#set ($rowspan = $value.getAttributeValue("rowspan"))
-#end
-<th bgcolor="$tablethbg" colspan="$!colspan" rowspan="$!rowspan" valign="top" align="left">
- <font color="#000000" size="-1" face="arial,helvetica,sanserif">
- #if ($value.getText().length() != 0 || $value.hasChildren())
- $value.getContent()
- #else
- &nbsp;
- #end
- </font>
-</th>
-#end
-
-#macro ( projectanchor $name $value )
-#if ($value.startsWith("http://"))
- <a href="$value">$name</a>
-## #elseif ($value.startsWith("/site"))
-## <a href="http://logging.apache.org/site/$value">$name</a>
-#else
- <a href="$relativePath$value">$name</a>
-#end
-#end
-
-#macro ( metaauthor $author $email )
- <meta name="author" value="$author">
- <meta name="email" value="$email">
-#end
-
-#macro ( image $value )
-#if ($value.getAttributeValue("width"))
-#set ($width=$value.getAttributeValue("width"))
-#end
-#if ($value.getAttributeValue("height"))
-#set ($height=$value.getAttributeValue("height"))
-#end
-#if ($value.getAttributeValue("align"))
-#set ($align=$value.getAttributeValue("align"))
-#end
-<img src="$relativePath$value.getAttributeValue("src")" width="$!width" height="$!height" align="$!align">
-#end
-
-#macro ( source $value)
- <div align="left">
- <table cellspacing="4" cellpadding="0" border="0">
- <tr>
- <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
- <td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
- <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
- </tr>
- <tr>
- <td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
- <td bgcolor="#ffffff"><pre>$escape.getText($value.getText())</pre></td>
- <td bgcolor="#023264" width="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
- </tr>
- <tr>
- <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
- <td bgcolor="#023264" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
- <td bgcolor="#023264" width="1" height="1"><img src="/images/void.gif" width="1" height="1" vspace="0" hspace="0" border="0"/></td>
- </tr>
- </table>
- </div>
-#end
-
-## ============================================
-## subsection macro
-## ============================================
-#macro ( subsection $subsection)
- <h3>$subsection.getAttributeValue("name")</strong></h3>
- #foreach ( $items in $subsection.getChildren() )
- #if ($items.getName().equals("img"))
- #image ($items)
- #elseif ($items.getName().equals("source"))
- #source ($items)
- #elseif ($items.getName().equals("table"))
- #table ($items)
- #else
- $items
- #end
- #end
-#end
-
-## ===================================
-## titleSection macro
-## ===================================
-#macro ( titleSection $titleSection)
- <font size="+2" color="$titlefg"><b>$titleSection.getAttributeValue("name")</b></font>
-#end
-
-## ================================
-## section macro
-## ================================
-#macro ( section $section)
- <h1>$section.getAttributeValue("name")</strong></h1>
- #foreach ( $items in $section.getChildren() )
- #if ($items.getName().equals("img"))
- #image ($items)
- #elseif ($items.getName().equals("source"))
- #source ($items)
- #elseif ($items.getName().equals("table"))
- #table ($items)
- #elseif ($items.getName().equals("subsection"))
- #subsection ($items)
- #else
- $items
- #end
- #end
-#end
-
-## ===================================
-## make navigation bar
-## ===================================
-
-#macro ( makeNavigationBar )
- <!-- ============================================================ -->
- <table id="navbar" border="0" cellspacing="0" cellpadding="0">
- #set ($menus = $project.getChild("body").getChildren("menu"))
- #foreach ( $menu in $menus )
- #if ( $velocityCount != 1 )
-## <tr bgcolor="#999999">
-## <td><html:img page="/images/space2.gif" height="1"></html:img></td>
-## </tr>
- #end
- <tr >
- <td class="navbarHeader" nowrap="true">
- <strong>$menu.getAttributeValue("name")</strong>
- </td>
- </tr>
- #foreach ( $item in $menu.getChildren() )
- #set ($name = $item.getAttributeValue("name"))
- <tr><td class="navbarItem"><small>#projectanchor($name $item.getAttributeValue("href"))</small></td></tr>
- #end
- #end
- </table>
-
-#end
-
-## ====================================
-## getProjectImage
-## ====================================
-#macro (getProjectImage)
- #if ($project.getChild("logo"))
- <td align="left">
- <a href="http://logging.apache.org">
- <img src="http://logging.apache.org/images/ls-logo.jpg" border="0"/></a>
- </td>
- <td align="right">
- #set ( $logoString = $project.getChild("logo").getAttributeValue("href") )
- #if ( $logoString.startsWith("/") )
- <a href="$project.getAttributeValue("href")">
- <img src="$relativePath$logoString"
- alt="$project.getChild("logo").getText()" border="0"/>
- </a>
- #else
- <a href="$project.getAttributeValue("href")">
- <img src="$relativePath/$logoString" alt="$project.getChild("logo").getText()" border="0"/>
- </a>
- #end
- </td>
-
- #else
- <td colspan="2">
- <a href="http://logging.apache.org">
- <img src="http://logging.apache.org/images/ls-logo.jpg" align="left" border="0"/>
- </a>
- </td>
- #end
-
-#end
-
-#macro (printMeta $metaElement)
-<meta #set ($attribs = $metaElement.getAttributes())
-#foreach ($a in $attribs) $a.getName()="$a.getValue()" #end />
-#end
-
-#macro (document)
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
- <!-- ====================================================================== -->
- <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
- <!-- Main Page Section -->
- <!-- ====================================================================== -->
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
-
- #set ($authors = $root.getChild("properties").getChildren("author"))
- #foreach ( $au in $authors )
- #metaauthor ( $au.getText() $au.getAttributeValue("email") )
- #end
-
- #set ($metas = $root.getChildren("meta"))
-
- ## Parse meta directives such as
- ## <meta name="keyword" content="jakarta, java"/>
- #foreach ($meta in $metas) #printMeta($meta) #end
-
- ## Support for <base> tags.
- #if ($root.getChild("properties").getChild("base"))
- #set ($url = $root.getChild("properties").getChild("base").getAttributeValue("href"))
- <base href="$url"/>
- #end
-
- <link href="$relativePath/css/site.css" rel="stylesheet" type="text/css"/>
-
- <title>$project.getChild("title").getText() - $root.getChild("properties").getChild("title").getText()</title>
- </head>
-
- <body bgcolor="$bodybg" text="$bodyfg" link="$bodylink">
- <!-- START Header table -->
- <table border="0" cellspacing="0" width="90%">
- <!-- TOP IMAGE -->
- <tr>
- #getProjectImage()
- </tr>
- </table>
- <!-- END Header table -->
-
- <!-- START main table -->
- <table id="main" border="0" width="90%" cellspacing="2" cellpadding="0">
- <tr><td colspan="2">
- <hr noshade="" size="1"/>
- </td></tr>
-
- <tr>
- <!-- LEFT SIDE NAVIGATION -->
- <td id="navbar" valign="top">
- #makeNavigationBar()
- </td>
- <td id="mainContents" align="left" valign="top">
- #foreach ( $item in $root.getChild("body").getChildren() )
- #if ($item.getName().equals("img"))
- #image ($item)
- #elseif ($item.getName().equals("section"))
- #section ($item)
- #elseif ($item.getName().equals("source"))
- #source ($item)
- #elseif ($item.getName().equals("table"))
- #table ($item)
- #elseif ($item.getName().equals("subsection"))
- #subsection ($item)
- #else
- $item
- #end
- #end
-
-## #if ($root.getChild("body").getChild("titleSection"))
-## #set ($titleSection = $root.getChild("body").getChild("titleSection"))
-## #titleSection($titleSection)
-## #end
-##
-## #set ($allSections = $root.getChild("body").getChildren("section"))
-## #foreach ( $section in $allSections )
-## #section ($section)
-## #end
- </td>
- </tr>
-
- <!-- FOOTER -->
- <tr><td colspan="2">
- <hr noshade="" size="1"/>
- </td></tr>
- </table>
- <!-- END main table -->
- </body>
- </html>
-#end
-
-
-
-
-
diff --git a/src/site/xdoc/usage.xml b/src/site/xdoc/usage.xml
new file mode 100644
index 0000000..82104d0
--- /dev/null
+++ b/src/site/xdoc/usage.xml
@@ -0,0 +1,1063 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<document>
+ <properties>
+ <title>How to use Apache log4cxx</title>
+ </properties>
+
+ <body>
+ <section name="Loggers">
+ <p>
+ Log4cxx has three main components: <em>loggers</em>,
+ <em>appenders</em> and <em>layouts</em>. These three types of
+ components work together to enable developers to log messages according
+ to message type and level, and to control at runtime how these
+ messages are formatted and where they are reported.
+ </p>
+
+ <subsection name="Hierarchy">
+ <p>
+ The first and foremost advantage of any logging API over plain
+ <code>std::cout</code> resides in its ability to disable
+ certain log statements while allowing others to print unhindered. This
+ capability assumes that the logging space, that is, the space of all
+ possible logging statements, is categorized according to some
+ developer-chosen criteria.
+ </p>
+
+ <p>
+ Loggers are named entities. Logger names are case-sensitive and
+ they follow the hierarchical naming rule:
+ </p>
+
+ <dl>
+ <dt><strong>Named Hierarchy</strong></dt>
+ <dd>
+ A logger is said to be an <em>ancestor</em> of another
+ logger if its name followed by a dot is a prefix of the
+ <em>descendant</em> logger name. A logger is said to be a
+ <em>parent</em> of a <em>child</em> logger if there are no
+ ancestors between itself and the descendant logger.
+ </dd>
+ </dl>
+
+ <p>
+ For example, the logger named <code>"com.foo"</code> is a parent
+ of the logger named <code>"com.foo.Bar"</code>. Similarly,
+ <code>"java"</code> is a parent of <code>"java.util"</code> and an
+ ancestor of <code>"java.util.Vector"</code>. This naming scheme
+ should be familiar to most developers.
+ </p>
+
+ <p>
+ The root logger resides at the top of the logger hierarchy. It
+ is exceptional in two ways:
+ </p>
+
+ <ol>
+ <li> it always exists,</li>
+ <li> it cannot be retrieved by name.</li>
+ </ol>
+
+ <p>
+ Invoking the class static <a href="apidocs/classlog4cxx_1_1_logger.html#afc0e4d99cab7c38a2851d41e6edc1dee">log4cxx::Logger::getRootLogger</a>
+ method retrieves it. All other loggers are instantiated and retrieved with the class static
+ <a href="apidocs/classlog4cxx_1_1_logger.html#a76017df17da02bc11bfe50e47de703a3">log4cxx::Logger::getLogger</a>
+ method. This method takes the name of the desired logger as a parameter. Some of the basic methods in the Logger
+ class are listed below.
+ </p>
+
+ <pre>
+namespace log4cxx {
+ class <strong>Logger</strong> {
+ public:
+ // Creation &amp; retrieval methods:
+ static LoggerPtr getRootLogger();
+ static LoggerPtr getLogger(const std::string&amp; name);
+ static LoggerPtr getLogger(const std::wstring&amp; name);
+ }
+}
+
+//
+// Use these macros instead of calling Logger methods directly.
+// Macros will handle char or wchar_t pointers or strings
+// or most right-hand side expressions of an
+// std::basic_string::operator&lt;&lt;.
+//
+#define LOG4CXX_TRACE(logger, expression) ...
+#define LOG4CXX_DEBUG(logger, expression) ...
+#define LOG4CXX_INFO(logger, expression) ...
+#define LOG4CXX_WARN(logger, expression) ...
+#define LOG4CXX_ERROR(logger, expression) ...
+#define LOG4CXX_FATAL(logger, expression) ...</pre>
+ </subsection>
+
+ <subsection name="Levels">
+ <p>
+ Loggers <em>may</em> be assigned levels. The pre-defined
+ levels: TRACE, DEBUG, INFO, WARN, ERROR and FATAL are defined in the
+ <code> <a href="apidocs/classlog4cxx_1_1_level.html">log4cxx::Level</a></code>
+ class which provides accessor functions.
+ </p>
+
+ <p>
+ If a given logger is not assigned a level, then it inherits
+ one from its closest ancestor with an assigned level. More
+ formally:
+ </p>
+
+ <dl>
+ <dt><strong>Level Inheritance</strong></dt>
+
+ <dd>
+ The <em>inherited level</em> for a given logger <i>C</i>, is equal to the
+ first non-null level in the logger hierarchy, starting at <i>C</i> and
+ proceeding upwards in the hierarchy towards the <code>root</code> logger.
+ </dd>
+ </dl>
+
+ <p>
+ To ensure that all loggers can eventually inherit a level,
+ the root logger always has an assigned level.
+ </p>
+
+ <p>
+ Below are four tables with various assigned level values and the
+ resulting inherited levels according to the above rule.
+ </p>
+
+ <table border="1">
+ <tr>
+ <th>Logger name</th>
+ <th>Assigned level</th>
+ <th>Inherited level</th>
+ </tr>
+ <tr align="left">
+ <td>root</td>
+ <td>Proot</td>
+ <td>Proot</td>
+ </tr>
+ <tr align="left">
+ <td>X </td>
+ <td>none</td>
+ <td>Proot</td>
+ </tr>
+ <tr align="left">
+ <td>X.Y </td>
+ <td>none</td>
+ <td>Proot</td>
+ </tr>
+ <tr align="left">
+ <td>X.Y.Z</td>
+ <td>none</td>
+ <td>Proot</td>
+ </tr>
+ <caption align="bottom">Example 1</caption>
+ </table>
+
+ <p>
+ In example 1 above, only the root logger is assigned a
+ level. This level value, <code>Proot</code>, is inherited by the
+ other loggers <code>X</code>, <code>X.Y</code> and
+ <code>X.Y.Z</code>.
+ </p>
+
+ <table border="1">
+ <tr>
+ <th>Logger name</th>
+ <th>Assigned level</th>
+ <th>Inherited level</th>
+ </tr>
+ <tr align="left">
+ <td>root</td>
+ <td>Proot</td>
+ <td>Proot</td>
+ </tr>
+ <tr align="left">
+ <td>X </td>
+ <td>Px</td>
+ <td>Px</td>
+ </tr>
+ <tr align="left">
+ <td>X.Y </td>
+ <td>Pxy</td>
+ <td>Pxy</td>
+ </tr>
+ <tr align="left">
+ <td>X.Y.Z</td>
+ <td>Pxyz</td>
+ <td>Pxyz</td>
+ </tr>
+ <caption align="bottom">Example 2</caption>
+ </table>
+
+ <p>
+ In example 2, all loggers have an assigned level value. There
+ is no need for level inheritence.
+ </p>
+
+ <table border="1">
+ <tr>
+ <th>Logger name</th>
+ <th>Assigned level</th>
+ <th>Inherited level</th>
+ </tr>
+ <tr align="left">
+ <td>root</td>
+ <td>Proot</td>
+ <td>Proot</td>
+ </tr>
+ <tr align="left">
+ <td>X </td>
+ <td>Px</td>
+ <td>Px</td>
+ </tr>
+ <tr align="left">
+ <td>X.Y </td>
+ <td>none</td>
+ <td>Px</td>
+ </tr>
+ <tr align="left">
+ <td>X.Y.Z</td>
+ <td>Pxyz</td>
+ <td>Pxyz</td>
+ </tr>
+ <caption align="bottom">Example 3</caption>
+ </table>
+
+ <p>
+ In example 3, the loggers <code>root</code>, <code>X</code> and
+ <code>X.Y.Z</code> are assigned the levels <code>Proot</code>,
+ <code>Px</code> and <code>Pxyz</code> respectively. The logger
+ <code>X.Y</code> inherits its level value from its parent
+ <code>X</code>.
+ </p>
+
+ <table border="1">
+ <tr>
+ <th>Logger name</th>
+ <th>Assigned level</th>
+ <th>Inherited level</th>
+ </tr>
+ <tr align="left">
+ <td>root</td>
+ <td>Proot</td>
+ <td>Proot</td>
+ </tr>
+ <tr align="left">
+ <td>X </td>
+ <td>Px</td>
+ <td>Px</td>
+ </tr>
+ <tr align="left">
+ <td>X.Y </td>
+ <td>none</td>
+ <td>Px</td>
+ </tr>
+ <tr align="left">
+ <td>X.Y.Z</td>
+ <td>none</td>
+ <td>Px</td>
+ </tr>
+ <caption align="bottom">Example 4</caption>
+ </table>
+
+ <p>
+ In example 4, the loggers <code>root</code> and <code>X</code>
+ and are assigned the levels <code>Proot</code> and <code>Px</code>
+ respectively. The loggers <code>X.Y</code> and <code>X.Y.Z</code>
+ inherits their level value from their nearest parent <code>X</code>
+ having an assigned level.
+ </p>
+ </subsection>
+
+ <subsection name="Requests">
+ <p>
+ Logging requests are made by invoking a method of
+ a logger instance, preferrably through the use of LOG4CXX_INFO or similar
+ macros which support short-circuiting if the threshold is not satisfied
+ and use of the insertion operator (&lt;&lt;) in the message parameter.
+ </p>
+
+ <pre>
+log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger(<strong>"com.foo"</strong>));
+const char* region = "World";
+LOG4CXX_INFO(logger, "Simple message text.")
+LOG4CXX_INFO(logger, "Hello, " &lt;&lt; region)
+LOG4CXX_DEBUG(logger, L"Iteration " &lt;&lt; i)
+LOG4CXX_DEBUG(logger, "e^10 = " &lt;&lt; std::scientific &lt;&lt; exp(10.0))
+//
+// Use a wchar_t first operand to force use of wchar_t based stream.
+//
+LOG4CXX_WARN(logger, L"" &lt;&lt; i &lt;&lt; L" is the number of the iteration.")</pre>
+
+ <p>
+ A logging request is said to be <em>enabled</em> if its level is
+ higher than or equal to the level of its logger. Otherwise, the
+ request is said to be <em>disabled</em>. A logger without an
+ assigned level will inherit one from the hierarchy. This rule is
+ summarized below.
+ </p>
+
+ <dl>
+ <dt><strong>Basic Selection Rule</strong></dt>
+
+ <dd>
+ A log request of level <i>p</i> in a logger with (either assigned or
+ inherited, whichever is appropriate) level <i>q</i>, is enabled if
+ <i>p &gt;= q</i>.
+ </dd>
+ </dl>
+
+ <p>
+ This rule is at the heart of log4cxx. It assumes that levels are
+ ordered. For the standard levels, we have <code>TRACE &lt; DEBUG &lt; INFO
+ &lt; WARN &lt; ERROR &lt; FATAL</code>.
+ </p>
+
+ <p>
+ Here is an example of this rule.
+ </p>
+
+ <pre>
+// get a logger instance named "com.foo"
+log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger(<strong>"com.foo"</strong>));
+
+// Now set its level. Normally you do not need to set the
+// level of a logger programmatically. This is usually done
+// in configuration files.
+<strong>logger</strong>->setLevel(<strong class="set-level-highlight">log4cxx::Level::getInfo()</strong>);
+
+log4cxx::LoggerPtr barlogger(log4cxx::Logger::getLogger(<strong>"com.foo.Bar"</strong>));
+
+// This request is enabled, because <strong class="log-level compare-a">WARN</strong> &gt;= <strong class="log-level compare-b">INFO</strong>.
+LOG4CXX_WARN(logger, "Low fuel level.")
+
+// This request is disabled, because <strong class="log-level compare-a">DEBUG</strong> &lt; <strong class="log-level compare-b">INFO</strong>.
+LOG4CXX_DEBUG(logger, "Starting search for nearest gas station.")
+
+// The logger instance barlogger, named "com.foo.Bar",
+// will inherit its level from the logger named
+// "com.foo" Thus, the following request is enabled
+// because <strong class="log-level compare-a">INFO</strong> &gt;= <strong class="log-level compare-b">INFO</strong>.
+LOG4CXX_INFO(barlogger. "Located nearest gas station.")
+
+// This request is disabled, because <strong class="log-level compare-a">DEBUG</strong> &lt; <strong class="log-level compare-b">INFO</strong>.
+LOG4CXX_DEBUG(barlogger, "Exiting gas station search")</pre>
+
+ <p>
+ Calling the <code>getLogger</code> method with the same name will
+ always return a reference to the exact same logger object.
+ </p>
+
+ <p>
+ For example, in
+ </p>
+
+ <pre>
+log4cxx::LoggerPtr x = log4cxx::Logger::getLogger("wombat");
+log4cxx::LoggerPtr y = log4cxx::Logger::getLogger("wombat");</pre>
+ <p>
+ <code>x</code> and <code>y</code> refer to <em>exactly</em> the same logger object.
+ </p>
+
+ <p>
+ Thus, it is possible to configure a logger and then to retrieve
+ the same instance somewhere else in the code without passing around
+ references. In fundamental contradiction to biological parenthood,
+ where parents always preceed their children, log4cxx loggers can be
+ created and configured in any order. In particular, a "parent"
+ logger will find and link to its descendants even if it is
+ instantiated after them.
+ </p>
+
+ <p>
+ Configuration of the log4cxx environment is typically done at
+ application initialization. The preferred way is by reading a
+ configuration file. This approach will be discussed shortly.
+ </p>
+
+ <p>
+ Log4cxx makes it easy to name loggers by <em>software
+ component</em>. This can be accomplished by statically instantiating
+ a logger in each class, with the logger name equal to the fully
+ qualified name of the class. This is a useful and straightforward
+ method of defining loggers. As the log output bears the name of the
+ generating logger, this naming strategy makes it easy to identify
+ the origin of a log message. However, this is only one possible,
+ albeit common, strategy for naming loggers. Log4cxx does not restrict
+ the possible set of loggers. The developer is free to name the
+ loggers as desired.
+ </p>
+
+ <p>
+ Nevertheless, naming loggers after the class where they are
+ located seems to be the best strategy known so far.
+ </p>
+ </subsection>
+ </section>
+
+ <section name="Appenders and Layouts">
+ <p>
+ The ability to selectively enable or disable logging requests based
+ on their logger is only part of the picture. Log4cxx allows logging
+ requests to print to multiple destinations. In log4cxx speak, an output
+ destination is called an <em>appender</em>. Currently, appenders exist
+ for the <a href="apidocs/classlog4cxx_1_1_console_appender.html">console</a>,
+ <a href="apidocs/classlog4cxx_1_1_file_appender.html">files</a>, GUI
+ components, <a href="apidocs/classlog4cxx_1_1net_1_1_socket_appender.html">remote socket</a>
+ servers, <a href="apidocs/classlog4cxx_1_1nt_1_1_n_t_event_log_appender.html"> NT Event Loggers</a>, and remote UNIX
+ <a href="apidocs/classlog4cxx_1_1net_1_1_syslog_appender.html">Syslog</a>
+ daemons. It is also possible to log <a href="apidocs/classlog4cxx_1_1_async_appender.html">asynchronously</a>.
+ </p>
+
+ <p>More than one appender can be attached to a logger.</p>
+
+ <p>
+ The <a href="apidocs/classlog4cxx_1_1_logger.html#a7c0629acee8dbd1251474bea15d7c9e2">addAppender</a>
+ method adds an appender to a given logger.
+
+ <strong>
+ Each enabled logging request for a given logger will be forwarded to all the
+ appenders in that logger as well as the appenders higher in the hierarchy.
+ </strong>
+ In other words, appenders are inherited additively from the logger hierarchy.
+ For example, if a console appender is added to the root logger, then all enabled
+ logging requests will at least print on the console. If in addition a file appender
+ is added to a logger, say <em>C</em>, then enabled logging requests for <em>C</em> and
+ <em>C</em>'s children will print on a file <em>and</em> on the console. It is possible
+ to override this default behavior so that appender accumulation is no longer additive
+ by <a href="apidocs/classlog4cxx_1_1_logger.html#a80f9397947dba9071ad485f178257c17">setting the additivity flag</a> to
+ <code>false</code>.
+ </p>
+
+ <p>The rules governing appender additivity are summarized below.</p>
+
+ <dl>
+ <dt><strong>Appender Additivity</strong></dt>
+
+ <dd>
+ The output of a log statement of logger <i>C</i> will go to all the appenders
+ in <i>C</i> and its ancestors. This is the meaning of the term "appender
+ additivity". However, if an ancestor of logger <i>C</i>, say <i>P</i>, has the
+ additivity flag set to <code>false</code>, then <i>C</i>'s output will be
+ directed to all the appenders in <i>C</i> and it's ancestors up to and
+ including <i>P</i> but, not the appenders in any of the ancestors of <i>P</i>.
+ <br /><br />
+ Loggers have their additivity flag set to <code>true</code> by default.
+ </dd>
+ </dl>
+
+ <p>The table below shows an example:</p>
+
+ <table align="center" border="3" cellpadding="10">
+ <tr rowspan="2">
+ <th>Logger Name </th>
+ <th>Added Appenders</th>
+ <th>Additivity Flag</th>
+ <th>Output Targets</th>
+ <th>Comment</th>
+ </tr>
+ <tr>
+ <td>root</td>
+ <td>A1</td>
+ <td>not applicable</td>
+ <td>A1</td>
+ <td>
+ The root logger is anonymous but can be accessed with the
+ log4cxx::Logger::getRootLogger() method. There is no default appender
+ attached to root.
+ </td>
+ </tr>
+ <tr>
+ <td>x</td>
+ <td>A-x1, A-x2</td>
+ <td>true</td>
+ <td>A1, A-x1, A-x2</td>
+ <td>Appenders of "x" and root.</td>
+ </tr>
+ <tr>
+ <td>x.y</td>
+ <td>none</td>
+ <td>true</td>
+ <td>A1, A-x1, A-x2</td>
+ <td>Appenders of "x" and root.</td>
+ </tr>
+ <tr>
+ <td>x.y.z</td>
+ <td>A-xyz1</td>
+ <td>true</td>
+ <td>A1, A-x1, A-x2, A-xyz1</td>
+ <td>Appenders in "x.y.z", "x" and root.</td>
+ </tr>
+ <tr>
+ <td>security</td>
+ <td>A-sec</td>
+ <td>
+ <span class="activity-flag-highlight">false</span>
+ </td>
+ <td>A-sec</td>
+ <td>
+ No appender accumulation since the additivity flag is set to <code>false</code>.
+ </td>
+ </tr>
+ <tr>
+ <td>security.access</td>
+ <td>none</td>
+ <td>true</td>
+ <td>A-sec</td>
+ <td>
+ Only appenders of "security" because the additivity flag in "security" is
+ set to <code>false</code>.
+ </td>
+ </tr>
+ </table>
+
+ <p>
+ More often than not, users wish to customize not only the output
+ destination but also the output format. This is accomplished by
+ associating a <em>layout</em> with an appender. The layout is
+ responsible for formatting the logging request according to the user's
+ wishes, whereas an appender takes care of sending the formatted output
+ to its destination.
+ </p>
+
+ <p>
+ The <a href="apidocs/classlog4cxx_1_1_pattern_layout.html">PatternLayout</a>, part
+ of the standard log4cxx distribution, lets the user specify the output
+ format according to conversion patterns similar to the C language
+ <code>printf</code> function.
+ </p>
+
+ <p>
+ For example, the PatternLayout with the conversion pattern "%r [%t]
+ %-5p %c - %m%n" will output something akin to:
+ </p>
+
+ <pre>
+176 [main] INFO org.foo.Bar - Located nearest gas station.</pre>
+
+ <p>
+ The first field is the number of milliseconds elapsed since the
+ start of the program. The second field is the thread making the log
+ request. The third field is the level of the log statement. The
+ fourth field is the name of the logger associated with the log
+ request. The text after the '-' is the message of the statement.
+ </p>
+ </section>
+
+ <section name="Configuration">
+ <p>
+ Inserting log requests into the application code requires a fair
+ amount of planning and effort. Observation shows that approximately 4
+ percent of code is dedicated to logging. Consequently, even moderately
+ sized applications will have thousands of logging statements embedded
+ within their code. Given their number, it becomes imperative to
+ manage these log statements without the need to modify them manually.
+ </p>
+
+ <p>
+ The log4cxx environment is fully configurable programmatically.
+ However, it is far more flexible to configure log4cxx using
+ configuration files. Currently, configuration files can be written in
+ XML or in Java properties (key=value) format.
+ </p>
+
+ <p>
+ Let us give a taste of how this is done with the help of an
+ imaginary application <code>MyApp</code> that uses log4cxx.
+ </p>
+
+ <pre>
+#include "com/foo/bar.h"
+using namespace com::foo;
+
+// include log4cxx header files.
+#include "log4cxx/logger.h"
+#include "log4cxx/basicconfigurator.h"
+#include "log4cxx/helpers/exception.h"
+
+using namespace log4cxx;
+using namespace log4cxx::helpers;
+
+LoggerPtr logger(Logger::getLogger("MyApp"));
+
+int main(int argc, char **argv)
+{
+ int result = EXIT_SUCCESS;
+ try
+ {
+ // Set up a simple configuration that logs on the console.
+ BasicConfigurator::configure();
+
+ LOG4CXX_INFO(logger, "Entering application.")
+ Bar bar;
+ bar.doIt();
+ LOG4CXX_INFO(logger, "Exiting application.")
+ }
+ catch(Exception&amp;)
+ {
+ result = EXIT_FAILURE;
+ }
+
+ return result;
+}</pre>
+
+ <p>
+ <code>MyApp</code> begins by including log4cxx headers. It
+ then defines a static logger variable with the name <code>MyApp</code>
+ which happens to be the fully qualified name of the
+ class.
+ </p>
+
+ <p>
+ <code>MyApp</code> uses the <code>Bar</code> class defined in header
+ file <code>com/foo/bar.h</code>.
+ </p>
+
+ <pre>
+// file com/foo/bar.h
+#include "log4cxx/logger.h"
+
+namespace com {
+ namespace foo {
+ class Bar {
+ static log4cxx::LoggerPtr logger;
+
+ public:
+ void doIt();
+ }
+ }
+}</pre>
+
+ <pre>
+// file bar.cpp
+#include "com/foo/bar.h"
+
+using namespace com::foo;
+using namespace log4cxx;
+
+LoggerPtr Bar::logger(Logger::getLogger("com.foo.bar"));
+
+void Bar::doIt() {
+ LOG4CXX_DEBUG(logger, "Did it again!")
+}</pre>
+
+ <p>
+ The invocation of the <a href="apidocs/classlog4cxx_1_1_basic_configurator.html#a4f96a09e1372664e3556ce94ace4a70c">BasicConfigurator::configure</a>
+ method creates a rather simple log4cxx setup. This method is hardwired
+ to add to the root logger a <a href="apidocs/classlog4cxx_1_1_console_appender.html">
+ ConsoleAppender</a>. The output will be formatted using a
+ <a href="apidocs/classlog4cxx_1_1_pattern_layout.html">PatternLayout</a> set
+ to the pattern "%-4r [%t] %-5p %c %x - %m%n".
+ </p>
+
+ <p>
+ Note that by default, the root logger is assigned to
+ <code>Level::getDebug()</code>.
+ </p>
+
+ <p>
+ The output of MyApp is:
+ </p>
+
+ <pre>
+0 [12345] INFO MyApp - Entering application.
+36 [12345] DEBUG com.foo.Bar - Did it again!
+51 [12345] INFO MyApp - Exiting application.</pre>
+
+ <p>
+ The previous example always outputs the same log information.
+ Fortunately, it is easy to modify <code>MyApp</code> so that the log
+ output can be controlled at run-time. Here is a slightly modified
+ version.
+ </p>
+
+ <pre>
+// file MyApp2.cpp
+
+#include "com/foo/bar.h"
+using namespace com::foo;
+
+// include log4cxx header files.
+#include "log4cxx/logger.h"
+#include "log4cxx/basicconfigurator.h"
+#include "log4cxx/propertyconfigurator.h"
+#include "log4cxx/helpers/exception.h"
+
+using namespace log4cxx;
+using namespace log4cxx::helpers;
+// Define a static logger variable so that it references the
+// Logger instance named "MyApp".
+LoggerPtr logger(Logger::getLogger("MyApp"));
+
+int main(int argc, char **argv)
+{
+ int result = EXIT_SUCCESS;
+ try
+ {
+ if (argc > 1)
+ {
+ // BasicConfigurator replaced with PropertyConfigurator.
+ PropertyConfigurator::configure(argv[1]);
+ }
+ else
+ {
+ BasicConfigurator::configure();
+ }
+
+ LOG4CXX_INFO(logger, "Entering application.")
+ Bar bar
+ bar.doIt();
+ LOG4CXX_INFO(logger, "Exiting application.")
+ }
+ catch(Exception&amp;)
+ {
+ result = EXIT_FAILURE;
+ }
+
+ return result;
+}</pre>
+
+ <p>
+ This version of <code>MyApp</code> instructs
+ <code>PropertyConfigurator</code> to parse a configuration file and
+ set up logging accordingly.
+ </p>
+
+ <p>
+ Here is a sample configuration file that results in exactly same
+ output as the previous <code>BasicConfigurator</code> based example.
+ </p>
+
+ <pre>
+# Set root logger level to DEBUG and its only appender to A1.
+log4j.rootLogger=DEBUG, A1
+
+# A1 is set to be a ConsoleAppender.
+log4j.appender.A1=org.apache.log4j.ConsoleAppender
+
+# A1 uses PatternLayout.
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n</pre>
+
+ <p>
+ It can be noticed that the PropertyConfigurator file format is the same as log4j.
+ </p>
+
+ <p>
+ Suppose we are no longer interested in seeing the output of any
+ component belonging to the <code>com::foo</code> package. The following
+ configuration file shows one possible way of achieving this.
+ </p>
+
+ <pre>
+log4j.rootLogger=DEBUG, A1
+log4j.appender.A1=org.apache.log4j.ConsoleAppender
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+
+# <strong>Print the date in ISO 8601 format</strong>
+log4j.appender.A1.layout.ConversionPattern=<strong>%d</strong> [%t] %-5p %c - %m%n
+
+# Print only messages of level WARN or above in the package com.foo.
+<strong>log4j.logger.com.foo=WARN</strong></pre>
+
+ <p>
+ The output of <code>MyApp</code> configured with this file is shown below.
+ </p>
+
+ <pre>
+<strong>2000-09-07 14:07:41,508</strong> [12345] INFO MyApp - Entering application.
+<strong>2000-09-07 14:07:41,529</strong> [12345] INFO MyApp - Exiting application.</pre>
+
+ <p>
+ As the logger <code>com.foo.Bar</code> does not have an assigned
+ level, it inherits its level from <code>com.foo</code>, which
+ was set to WARN in the configuration file. The log statement from the
+ <code>Bar::doIt</code> method has the level DEBUG, lower than the
+ logger level WARN. Consequently, <code>doIt()</code> method's log
+ request is suppressed.
+ </p>
+
+ <p>
+ Here is another configuration file that uses multiple appenders.
+ </p>
+
+ <pre>
+log4j.rootLogger=debug, <strong>stdout, R</strong>
+
+log4j.appender.<strong>stdout</strong>=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+
+# Pattern to output the caller's file name and line number.
+log4j.appender.stdout.layout.ConversionPattern=%5p [%t] <strong>(%F:%L)</strong> - %m%n
+
+log4j.appender.<strong>R</strong>=org.apache.log4j.RollingFileAppender
+log4j.appender.R.File=example.log
+
+log4j.appender.R.MaxFileSize=<strong>100KB</strong>
+# Keep one backup file
+log4j.appender.R.MaxBackupIndex=1
+
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n</pre>
+
+ <p>
+ Calling the enhanced MyApp with the this configuration file will
+ output the following on the console.
+ </p>
+
+ <pre>
+INFO [12345] <strong>(MyApp2.cpp:31)</strong> - Entering application.
+DEBUG [12345] (Bar.h:16) - Doing it again!
+INFO [12345] (MyApp2.cpp:34) - Exiting application.</pre>
+
+ <p>
+ In addition, as the root logger has been allocated a second
+ appender, output will also be directed to the <code>example.log</code>
+ file. This file will be rolled over when it reaches 100KB. When
+ roll-over occurs, the old version of <code>example.log</code> is
+ automatically moved to <code>example.log.1</code>.
+ </p>
+
+ <p>
+ Note that to obtain these different logging behaviors we did not
+ need to recompile code. We could just as easily have logged to a UNIX
+ Syslog daemon, redirected all <code>com.foo</code> output to an NT
+ Event logger, or forwarded logging events to a remote log4cxx server,
+ which would log according to local server policy, for example by
+ forwarding the log event to a second log4cxx server.
+ </p>
+ </section>
+
+ <section name="Default Initialization Procedure">
+ <p>
+ The log4cxx library does not make any assumptions about its
+ environment. In particular, there are no default log4cxx
+ appenders. Under certain well-defined circumstances however, the
+ static inializer of the <code>Logger</code> class will attempt to
+ automatically configure log4cxx.
+ </p>
+
+ <p>
+ The exact default initialization algorithm is defined as follows:
+ </p>
+
+ <ol>
+ <li>
+ <p>
+ Set the configurationOptionStr string variable to the value of the
+ <strong>LOG4CXX_CONFIGURATION</strong> environment variable if set, otherwise
+ the value of the <strong>log4j.configuration</strong> or <strong>LOG4CXX_CONFIGURATION</strong>
+ environment variable if set,
+ otherwise the first of the following file names which exist in the
+ current working directory, "log4cxx.xml", "log4cxx.properties",
+ "log4j.xml" and "log4j.properties".
+ If configurationOptionStr has not been set, then disable logging.
+ </p>
+ </li>
+ <li>
+ <p>
+ Unless a custom configurator is specified using the
+ <strong>LOG4CXX_CONFIGURATOR_CLASS</strong> or <strong>log4j.configuratorClass</strong>
+ environment variable, the PropertyConfigurator will be used to configure
+ log4cxx unless the file name ends with the ".xml" extension,
+ in which case the DOMConfigurator will be used.
+ If a custom configurator is specified, the environment variable
+ should contain a fully qualified class name of a class that
+ implements the Configurator interface.
+ </p>
+ </li>
+ </ol>
+ </section>
+
+ <section name="Nested Diagnostic Contexts">
+ <p>
+ Most real-world systems have to deal with multiple clients
+ simultaneously. In a typical multithreaded implementation of such a
+ system, different threads will handle different clients. Logging is
+ especially well suited to trace and debug complex distributed
+ applications. A common approach to differentiate the logging output of
+ one client from another is to instantiate a new separate logger for
+ each client. This promotes the proliferation of loggers and
+ increases the management overhead of logging.
+ </p>
+
+ <p>
+ A lighter technique is to uniquely stamp each log request initiated
+ from the same client interaction. Neil Harrison described this method
+ in the book "Patterns for Logging Diagnostic Messages," in <em>Pattern
+ Languages of Program Design 3</em>, edited by R. Martin, D. Riehle,
+ and F. Buschmann (Addison-Wesley, 1997).
+ </p>
+
+ <p>
+ To uniquely stamp each request, the
+ user pushes contextual information into the NDC, the abbreviation of
+ <em>Nested Diagnostic Context</em>. The NDC class is shown below.
+ </p>
+
+ <pre>
+namespace log4cxx {
+ class NDC {
+ public:
+ // pushes the value on construction and pops on destruction.
+ NDC(const std::string&amp; value);
+ NDC(const std::wstring&amp; value);
+
+ // Remove the top of the context from the NDC.
+ <strong>static</strong> LogString pop();
+
+ // Add diagnostic context for the current thread.
+ <strong>static</strong> void push(const std::string&amp; message);
+ <strong>static</strong> void push(const std::wstring&amp; message);
+ }
+}</pre>
+
+ <p>
+ The NDC is managed per thread as a <em>stack</em> of contextual
+ information. Note that all methods of the <code>log4cxx::NDC</code>
+ class are static. Assuming that NDC printing is turned on, every time
+ a log request is made, the appropriate log4cxx component will include
+ the <em>entire</em> NDC stack for the current thread in the log
+ output. This is done without the intervention of the user, who is
+ responsible only for placing the correct information in the NDC by
+ using the <code>push</code> and <code>pop</code> methods at a few
+ well-defined points in the code. In contrast, the per-client logger
+ approach commands extensive changes in the code.
+ </p>
+
+ <p>
+ To illustrate this point, let us take the example of a servlet
+ delivering content to numerous clients. The servlet can build the NDC
+ at the very beginning of the request before executing other code. The
+ contextual information can be the client's host name and other
+ information inherent to the request, typically information contained
+ in cookies. Hence, even if the servlet is serving multiple clients
+ simultaneously, the logs initiated by the same code, i.e. belonging to
+ the same logger, can still be distinguished because each client
+ request will have a different NDC stack. Contrast this with the
+ complexity of passing a freshly instantiated logger to all code
+ exercised during the client's request.
+ </p>
+
+ <p>
+ Nevertheless, some sophisticated applications, such as virtual
+ hosting web servers, must log differently depending on the virtual
+ host context and also depending on the software component issuing the
+ request. Recent log4cxx releases support multiple hierarchy trees. This
+ enhancement allows each virtual host to possess its own copy of the
+ logger hierarchy.
+ </p>
+ </section>
+
+ <section name="Performance">
+ <p>
+ One of the often-cited arguments against logging is its
+ computational cost. This is a legitimate concern as even moderately
+ sized applications can generate thousands of log requests. Much
+ effort was spent measuring and tweaking logging performance. Log4cxx
+ claims to be fast and flexible: speed first, flexibility second.
+ </p>
+
+ <p>
+ The user should be aware of the following performance issues.
+ </p>
+
+ <ol>
+ <li>
+ <p>
+ <strong>Logging performance when logging is turned off.</strong>
+ </p>
+
+ <p>
+ When logging is turned off entirely or just for a set
+ of levels, the cost of a log request consists of a method
+ invocation plus an integer comparison. The LOG4CXX_DEBUG and similar
+ macros suppress unnecessary expression evaluation if the
+ request is not enabled.
+ </p>
+ </li>
+
+ <li>
+ <p>
+ <strong>The performance of deciding whether to log or not to log when logging is turned on.</strong>
+ </p>
+
+ <p>
+ This is essentially the performance of walking the logger
+ hierarchy. When logging is turned on, log4cxx still needs to compare
+ the level of the log request with the level of the request
+ logger. However, loggers may not have an assigned
+ level; they can inherit them from the logger hierarchy. Thus,
+ before inheriting a level, the logger may need to search its
+ ancestors.
+ </p>
+
+ <p>
+ There has been a serious effort to make this hierarchy walk to
+ be as fast as possible. For example, child loggers link only to
+ their existing ancestors. In the <code>BasicConfigurator</code>
+ example shown earlier, the logger named <code>com.foo.Bar</code> is
+ linked directly to the root logger, thereby circumventing the
+ nonexistent <code>com</code> or <code>com.foo</code> loggers. This
+ significantly improves the speed of the walk, especially in "sparse"
+ hierarchies.
+ </p>
+
+ <p>
+ The cost of walking the hierarchy is typically 3
+ times slower than when logging is turned off entirely.
+ </p>
+ </li>
+ <li>
+ <p>
+ <strong>Actually outputting log messages</strong>
+ </p>
+
+ <p>
+ This is the cost of formatting the log output and sending it to
+ its target destination. Here again, a serious effort was made to
+ make layouts (formatters) perform as quickly as possible. The same
+ is true for appenders.
+ </p>
+ </li>
+ </ol>
+ </section>
+
+ <section name="Conclusions">
+ <p>
+ Apache Log4cxx is a popular logging package written in C++. One of its
+ distinctive features is the notion of inheritance in loggers. Using
+ a logger hierarchy it is possible to control which log statements
+ are output at arbitrary granularity. This helps reduce the volume of
+ logged output and minimize the cost of logging.
+ </p>
+
+ <p>
+ One of the advantages of the log4cxx API is its manageability. Once
+ the log statements have been inserted into the code, they can be
+ controlled with configuration files. They can be selectively enabled
+ or disabled, and sent to different and multiple output targets in
+ user-chosen formats. The log4cxx package is designed so that log
+ statements can remain in shipped code without incurring a heavy
+ performance cost.
+ </p>
+ </section>
+ </body>
+</document> \ No newline at end of file