Assorted Freeware

Codes of my making, without warranties (or restrictions).  Please tell me if you find something you like.

Package name:  ADEPT [A Declarative, Eval()-based Program Tester], v.0.9.1:   A Python unit testing package that uses tuples, rather than classes, to define test cases.


Package name:  PISCES [Platform-Independent Socket ClassES]:   A set of C++ wrapper classes for OO socket programming.

Co-author:   Sridhar Koritala, now of Informatica.

Contents:  An OO library for TCP- and UDP-based socket programming, along with sample codes illustrating the library's use.

Key features of library:

Key sample codes:

Remarks:  PISCES is extensive enough to support the development of robust, clean applications, but small enough--unlike, say, ACE--to be digested in about a week, internals and all.  An isolation layer allows the library to ported readily between platforms. 

Platforms:   Windows NT, Windows 2000, IRIX, Linux.  Should also work under NetBSD. 

Known problems:   I've seen PISCES's getopt.cpp module break g++ v.2.8.1 under  IRIX, due to an assembler failure to support the long names generated by STL compilation.

Package name:  LADEL [Layout Descriptor Language]:  A set of C++ wrapper classes for dynamic I/O buffer specification and manipulation.

Primary Implementer:   Ashfaq Jeelani, now of Siebel Systems.

Contents:  An OO library for (1) imposing a struct-like view on an I/O buffer, and then (2) manipulating that buffer using high-level streaming operators, relative to this view.

Key features of library:   A class, BufferManagementClass, that supports

Key sample codes:

Remarks:  LADEL is the outcome of a thesis project that attempted to improve on the standard bcopy() approach to block buffer manipulation.   Ashfaq's thesis is available from me, if you want more information on LADEL.

Platforms:   Windows NT, Windows 2000.   Should also work under Unix platforms.

Known problems:   The code needs far more careful commenting.

Package name:  Implementation of Dijkstra's minimum spanning tree algorithm (Tarjan's version)

Remarks:  C-based implementation.  Includes an OO-ish implementation of priority queues and AVL trees.

Package name:  Implementation of static Huffman coding

Remarks:  C-based (non-PISCES) client-server pair that uses Huffman coding based on preset character frequencies to compress (client) and uncompress (server) a transmitted message.

Package name:  Implementation of dynamic Huffman coding

Remarks:  C-based client-server pair that uses an initial Huffman coding tree, with on-the-fly character counts, to compress (client) and uncompress (server) a transmitted message.