$Id: CHANGES,v 1.5 1994/10/18 04:21:12 kevinl Exp $

Current Version: B0_3 (0.3)

Changes since B0_2 (0.2)

- Include files now live in diamond/*.h
- All RCS logs should have moved to the ends of files.
- Multiple inclusion of malloc.h now taken care of nicely.
- Parameters, functions and members that are const are now all marked so.
- Some layout neatening and space to tab conversion.
- 'int' and 'long' have been replaced where it is important by int16 and
    int32. size_t has also been used where it is appropriate. This has
    removed a lot of warnings due to funny system prototypes.
- The record server caches can now be flushed using the flush() relation
    member:
		rel.flush(void);

- db2txt can now be given a config file.
- theDiamondBase is now in the library. the loadConfig function is used to
    load in config files instead of as an initialisation to theDiamondBase.
		Loading "" adds . 

- When a relation fails to open, this is reflected properly in later error
    codes.
- Some memory was being deleted that shouldn't have in the path name code.
- Some return code anomolies in seek/find/extract fixed.
- You can now lock and unlock relations. May allow cooperation between
    multiple single user clients. Use with flush() to be safe:
		rel.lock() and rel.unlock()
		Can be passed true to make it a blocking lock (waits for file)

- Relations can now be eject()'ed through theDiamondBase. This allows a
    program to switch config files and then instantiate relations from a
    different directory.
- A record count for relations is available.
		int rel.recordCount(void)

- Some reworking of the error strings. 
- dbErrStr(void) returns the string representation of the last error.
- The dbObj destructor now frees all its memory. This is important since
    before eject() dbObj hung around till the program exited.
- We are now using GNU autoconf to create configure scripts to
    automatically analyse system configuration. Currently only include files
    are tested. GNU autoconf is not needed to run the configuration programs.
	Added the following to configuration testing:
		o Major C++ changes (autoconf 1.11 made thiss much easier)
		o Stupid YACC test. Some YACCs (SunOS in particular) add malloc
		  prototypes to their output. DUMB!
		o Braindead YACC test. YACC and BISON order your code differently
		  so #include <lex.yy.c> must happen at different places depending
		  on where it puts the TOKENs. GRRRRRRRR
		o Some architectures prototype things their libraries define. Some
		  define some things they never prototype. bcopy and strcasecmp
		  seem to be the biggest problems.
		o Some stupid systems don't consider there to be 3 different types
		  of 'char'. So much for standards.
		o Some stupid systems can't handle a const pointer to 'open'.
		o And now some systems define their own bool type.

- The bucket declarations are now in bucket.h not defs.h.
- diaGRel now initalises string offsets correctly.
- Major bug fixes in diaGRel key layouts
- Fixed some lex whitespace problems in dsc.
- DSC now has an 'unknown' value that can be assigned to fields as default
    values.
- All relations now have a ::relName. This is needed to eject() relations.
- The memServer was retrieving 0 length dbStrings as NULL and not "".  Fixed.
- Operators added to dbString: =(char), !=, <, >, <=, >=.
- dbString::operator << improved.
- Name server modified considerably. Names now stored in a binary search
    tree. Config entries can be loaded and discarded.
- Changed lots of char*'s to dbStrings and dbStrArray
- Made lots of type changes to keep CC quiet.
- Added indy support.
- Added a refresh function in rserv so that flushes work properly.
- Btree headers are now flushed so that multiple single user clients don't
  nuke the header info.
- Fixed some delete [] bugs.

Id: CHANGES,v 1.4 1993/11/05 14:30:10 kevinl Exp kevinl

Current Version: B0_2 (0.2)

Changes since B0_1_3
- Initialise memServer constants correctly.
- Removed some unreachable breaks.
- Added operator= to objects/relations.
- Added some synchronistaion calls in preparation for multi user.
  They are never used :-)
- Made the TODO list bigger (Don't you hate that?)
- Extended dbString. There are now two types of resizeable objects. The
  base is a dbData which is a resizable object that can hold anything. Its
  length is its size. It has no terminating character.
- Integrated dbData into the package.
- Fixed a potential (rare) bug in the comparison code
- Added diaGRel. You can now instantiate a relation for which you have no
  code. Only the .db, .id? and .str files are needed.
- Added the ichar type.
- Added the db2txt utility.
- dbObject now collects data about relations making attachments for diaGRel
  quicker.
- Added utils.h and utils.cc files so some stuff is out of defs.h
- Record locking didn't work. Did nobody notice? :-) It does now.
- Assignment of relations is now possible but be VERY careful. Define your
  own assignment operator and call your base class properly.
- Updated the documentation.
- DSC: Reversed command line arguments (-C now generates code as opposed to
       inhibiting it).
       Added -G to build derived classes.
       Added constructors and retrievers.
       Added default values for relation members.
- The pKeyType,long constructor has had its optional argument made a normal
  argument to fix constructor clashes.
- dbString and dbData no longer have horrible operators to manipulate
  length byb adding numbers.
- You can now pass "" to theDiamondBase and the TNameServer will consider
  all relations to be in the current directory.

- AND MAJOR ADDITION!!!!!!!!
  ***********************
  ** MULTIUSER SUPPORT **
  ***********************

Id: CHANGES,v 1.3 1993/07/11 10:37:51 kevinl Exp kevinl

Current Version: B0_1_3 (0.1 PL3)

Changes since B0_1_2
- Added version identifiers to all files/classes.
- Added Next support in the Makefile.
- Added a Make install target.
- Include files are now all in <> so that an installed system will work. A
  -I. is therefore required to build the system.
- Some systems don't have malloc.h. Added a define for that.
- TNameServer now does not exit when no/empty config file.
- Removed direct access to uniques.
- Some support for short filenames and extensions.
- Use #elif not #elsif
- Lots of cleaning up, eg ints/longs

MAJOR ADDITION:
- dbString support. Variable length strings can now be included in
  relations.

Id: CHANGES,v 1.2 1993/05/06 12:24:11 kevinl Exp kevinl

Current Version: B0_1_2

Changes since B0_1_1
- Many compiler defines etc for the SASC compiler on the Amiga
- Many revisions to the documentation
- The data block in the recServer is now long aligned to prevent any
  problems
- We now use structs to store all the keys. This ensures that the key info
  is aligned properly. All char types are moved to the end of the struct
  to make sure no space is wasted around chars.

Id: CHANGES,v 1.1 1993/05/03 01:37:28 kevinl Exp kevinl
Current Version: B0_1_1 (0.1 PL 1)

Changes since B0_1
- bucket::searchForKey is now a binary search. This has almost halved the
  amount of user time our intensive add/delete test program uses (as
  expected).
- The global diamondBase object must now be called theDiamondBase. This
  means you will have to change (ever so slightly) one line of any apps you
  have written. The reason for this is some compilers don't like a type and a
  variable of the same name.
- Some major cleaning of the const's spurred on by CC

  The rest of these are mosty cosmetic but keep some compilers happy and
    fix some distribution problems.

- Added fancyheadings.sty, CHANGES to the distribution
- Some people don't have flex and lex can't handle our very simple dsc.l so
   lex.yy.c is now included for the lexical-analyser impaired.
- Almost all int variables have been removed and replaced by longs to stop
   very picky compilers complaining and ensuring we don't go losing any bits
   anywhere.
- Removed ;'s off the end of inline function definitions. They are accepted
   by gcc but produce warnings under other compilers.
- inBTree is now 2 functions. We were using an optional reference argument
   which, although accepted by gcc, is not allowed by the ARM. We now
   overload the function (which is what the C++ compiler does with optionals
   anyway!)
- A couple of dbErr cases were left out of the switch in dberr.cc
-  dbobj.h had some inlines with 2 exit points. Fixed them.
- A variable called long in an include file was turned into link as was
   intended.
- In dsc.y, chars were being compared to -1. This causes problems for
   compilers that default to unsigned char. Unfortunately, just declaring
   those char arrays as unsigned doesn't help because some system calls are
   defined to accept the default. So now we use 0 instead.
- In generate.cc we assumed that the != operator returned 0 or 1. This has
   been replaced by a conditional expression.
- Lots of conditional compilation stuff for the CC compiler/preprocessor
   (CFRONT?). It has some very strict rules and some VERY strange ideas. Some
   of its warnings are completely opposite to those of gcc. eg. gcc gives end
   of non void function reached, so you shove in a return, so CC complains
   about unreachable code.
