Metakit 2.01

The 2.01 release has a few problems:

 - The configure script only works if Tcl is present
   Fixed versions are available at:
     https://www.equi4.com/previews/configure
     https://www.equi4.com/previews/configure.in
 - The Mk4tcl builds fails with Tcl 8.0.x, because
   the mutex defines are missing.  Add to mk4tcl.cpp:
     #ifndef TCL_DECLARE_MUTEX
     #define TCL_DECLARE_MUTEX(v)
     #define Tcl_MutexLock(v)
     #define Tcl_MutexUnlock(v)
     #endif

July 22, 2000 - found a problem with restructuring doubles. To fix it, apply the following patch:

 --- format.cpp.orig     Fri Mar 17 16:57:30 2000
 +++ format.cpp  Sun Jul 23 00:21:31 2000
 @@ -1022,10 +1022,12 @@
      c4_FormatD (const c4_Property& prop_, c4_HandlerSeq& seq_);
      virtual ~c4_FormatD ();
      virtual void Initialize(int);
 +    virtual void Defined();
 +
      static int DoCompare(const c4_Bytes& b1_, const c4_Bytes& b2_);
      virtual int Compare(int index_, const c4_Bytes& buf_);
  };
  /////////////////////////////////////////////////////////////////////////////
 @@ -1045,10 +1047,23 @@
      c4_FormatX::Initialize(colNum_);
          // force maximum size, autosizing more than 32 bits won't work
      SetAccessWidth(8 * sizeof (double));
 +}
 +
 +void c4_FormatD::Defined()
 +{
 +    d4_assertThis;
 +
 +    int numRows = RowCount();
 +    t4_u32 sz = ColSize();
 +
 +    if (numRows > 0 && sz == 0)
 +       InsertData(0, numRows * sizeof (double), true);
 +
 +    c4_FormatX::Defined();
  }
  int c4_FormatD::DoCompare(const c4_Bytes& b1_, const c4_Bytes& b2_)
  {
      d4_assert(b1_.Size() == sizeof (double));