Prepared documentation for release 0.4 origin AXE_0_4
authorarjen <arjen>
Fri, 4 May 2007 14:05:23 +0000 (14:05 +0000)
committerarjen <arjen>
Fri, 4 May 2007 14:05:23 +0000 (14:05 +0000)
AXE.html
ChangeLog
demos/timesheet.cpp

index b346dd4..770f5e1 100644 (file)
--- a/AXE.html
+++ b/AXE.html
@@ -24,9 +24,94 @@ and buttons.
 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 &amp;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 &amp; operator &gt;&gt; (istream &amp;, hour &amp;)</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>
@@ -34,9 +119,7 @@ To get you started, read the <a href='tutorial.html'>tutorial</a>.
 <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>
index ac5d084..8dc0d0b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+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
 --------------------------
 
index 169f340..da349c4 100644 (file)
@@ -1,4 +1,4 @@
-#include "date.h"
+#include <AXE/date.h>
 
 class activity
 {
@@ -41,17 +41,17 @@ main()
    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.
 
@@ -87,7 +87,7 @@ main()
       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)
    {
@@ -109,11 +109,11 @@ void activity::print(void)
 {
    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";
 }