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>
+May 04, 2007 - Release 0.4
+---------------------------
+
+ - Dynamically allocate more memory if the string buffer runs out of space when
+ reading a String object from an input stream.
+ - Added new arguments to configuration::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).
+ - Added a copy contructor to the regex class. This prevents multiple frees in the destructor.
+
+Mar 29, 2003 - Patch 0.3.1
+---------------------------
+
+ - String constructor and assignment from char * are more robust from NULL pointers.
+ - Bugfix in the configuration class: Do not read the config file in the home
+ directory if the HOME environment variable doesn't exist.
+
Nov 22, 2002 - Release 0.3
--------------------------
-#include "date.h"
+#include <AXE/date.h>
class activity
{
hour t1, t2;
String action1, action2, datestring;
- cin >> datestring;
- cin >> action1;
+ std::cin >> datestring;
+ std::cin >> action1;
d1 = date(datestring);
t1 = hour(datestring);
- while (cin)
+ while (std::cin)
{
- cin >> datestring;
+ std::cin >> datestring;
d2 = date(datestring);
t2 = hour(datestring);
- cin >> action2;
+ std::cin >> action2;
// process the activity from nr 1 to nr 2.
action1 = action2;
}
- cout << "Activity\tJan\tFeb\tMar\tApr\tMay\tJun\tJul\tAug\tSep\tOct\tNov\tDec\tTOTAL\n\n";
+ std::cout << "Activity\tJan\tFeb\tMar\tApr\tMay\tJun\tJul\tAug\tSep\tOct\tNov\tDec\tTOTAL\n\n";
for (a = timesheet; a; a = a->next)
{
{
hour total;
- cout << description << "\t";
+ std::cout << description << "\t";
for (int i=0; i<12; i++)
{
- cout << spent_in_month[i] << "\t";
+ std::cout << spent_in_month[i] << "\t";
total += spent_in_month[i];
}
- cout << total << "\t" << description << "\n";
+ std::cout << total << "\t" << description << "\n";
}