A few utility classes handle strings, times and dates.
</p>
+<h2>Release notes for AXE 0.4</h2>
+<p>
+The latest release is 0.4.
+This release has the following features and fixes:
+
+<ul>
+<li>regex class:
+ <ul>
+ <li>Added a copy contructor. This prevents multiple frees in the destructor.</li>
+ </ul>
+</li>
+<li>Configuration class:
+ <ul>
+ <li>Added new arguments to find_parameter() to allow for a list of
+ sections and a list of parameters in sections.
+ The new arguments are section index and parameter index (default = 0).
+ </li>
+ <li>Do not read the config file in the home
+ directory if the HOME environment variable doesn't exist.
+ </li>
+ </ul>
+</li>
+<li>String class:
+<ul>
+ <li>Dynamically allocate more memory if the string buffer runs out of space.</li>
+ <li>Constructor and assignment from char * are more robust from NULL pointers.</li>
+</li>
+</ul>
+</p>
+
+<h2>Release notes for AXE 0.3</h2>
+<p>
+
+<ul>
+<li>Configuration class:
+<ul>
+ <li> Improved the XML library configuration.</li>
+ <li> Uses the XML2 library</li>
+ <li> Bug Fixes in configuration class: segfault when finding a parameters
+ that is not in the user-sepcific config tree.
+ Check if a configuration file exists before feeding it to the XML parser.</li>
+ <li> Bugfix: In configuration::find_parameter(), check if the parameter node exists
+ before retrieving its contents.</li>
+ <li> BUG FIX: testaxe crashed without a config file.</li>
+</ul>
+</li>
+<li>String class:
+<ul>
+ <li> New functions: String::escape(), String::unescape()</li>
+ <li> New feature: substring selection by regular expression, with
+ substring String::operator()(const regex &r);</li>
+ <li> Bugfix: Reading a String object from an istream now checks for
+ end-of-file.</li>
+</ul>
+</li>
+
+<li>Date and time classes:
+<ul>
+ <li> Bugfix: conversion of an empty string to a date or hour object
+ now makes the values of such an object 0 (null) instead of giving
+ a segmentation fault.</li>
+ <li> The class UTC combines the date and hour classes. The most basic
+ functions of the UTC class are now implemented.
+ These include constructors and conversion to and from String objects.</li>
+ <li> New functions: date::proper(), hour::proper() and UTC::proper().
+ Return true if the object holds a proper clock time and/or calendar
+ date; false if at least one value is out of range.</li>
+ <li> date::format() is now properly implemented</li>
+ <li> New operator to read an 'hour' object from an istream:
+ istream & operator >> (istream &, hour &)</li>
+ <li> New function 'String hour::format()'. The default format is HH:MM:SS
+ in 24 hour clock.</li>
+ <li> New function 'hour now()' read the current time of day.</li>
+</ul>
+</li>
+
+<li>Tests and demos:
+<ul>
+ <li> Reinstated the metronome demo</li>
+ <li> BUG FIX: acltest.cpp included the obsolete complex number test.</li>
+</ul>
+</li>
+</ul>
+
+</p>
<h2>Download</h2>
<p>
-You can download the <a href="AXE-0.2.tar.bz2">AXE tarball</a> which
+You can download the <a href="AXE-0.3.tar.bz2">AXE release 0.3 tarball</a> which
contains the source and the (slghtly outdated) documentation.
To get you started, read the <a href='tutorial.html'>tutorial</a>.
</p>
<h3>Patches</h3>
<ul>
-<li><a href="AXE-patch-0.2.1.bz2">AXE-patch-0.2.1</a>: Minor config fixes</li>
-<li><a href="AXE-patch-0.2.2.bz2">AXE-patch-0.2.2</a>: Date and time formatting</li>
-<li><a href="AXE-patch-0.2.3.bz2">AXE-patch-0.2.3</a>: UTC class and substring by regular expression</li>
+<li><a href='AXE-patch-0.3.1.bz2'>Patch 0.3.1</a>: Bug fix in configuration class</li>
</ul>
<p>