Projects / CrissCross


CrissCross is a small cross-platform C++ library for console and file I/O, CPU identification (CPUID), hashing (MD2, MD4, MD5, SHA-1, SHA-256, SHA-512, Tiger), sockets (TCP and UDP only currently), and data structures (LList, DArray, RedBlackTree, AVLTree, SplayTree, etc). It is designed to run on Windows, Linux, FreeBSD, OpenBSD, NetBSD, Mac OS X, and even the Nintendo DS. Other platforms may become supported upon request. The main idea is to provide the ability to write a program using identical calls on the major platforms without needing to rewrite code.

Operating Systems

Recent releases

  •  08 Feb 2009 22:54

    Release Notes: Most of the changes are miscellaneous bugfixes, though there are a couple of which developers should take note. The trees no longer allow duplicate keys. A Quadtree class has been added to facilitate nearest neighbor searches. Mutexes have been rewritten and are infinitely more useful.

    •  20 Oct 2008 04:19

      Release Notes: The old build system was removed in favor of CMake. A few memory leaks have been fixed in CPUID. Support has been added for DEC Alpha and Sun SPARC (running Linux). 'flushArray' and 'flush' have been added to DArray to allow for simpler deletion of contained data. Stopwatch::Clocks() has been removed because only Windows seemed to have decent support. HashTable is now usable and is no longer considered experimental. A major findRecursive() bug (in which the result might not actually be found) has been corrected in AVLTree, RedBlackTree, and SplayTree. The test suite is now a bit more zealous about checking everything.

      •  09 Jun 2008 17:45

        Release Notes: TCPSockets have been generally overhauled after lots of practical use of them in ARC++. GenerateBuildNumber.exe is now statically linked to eliminate dependencies. Stopwatch now calls Start() on initialization. The largely unimplemented "ban" system in sockets has been removed. The internal strdup macro has been renamed to cc_strdup to avoid conflicts. A critical bug in RedBlackTree where a null pointer was dereferenced has been fixed. A bug in AVLTree where the size may have been incorrectly reported has been fixed. A few compiler warnings have been fixed. ThreadSleep on Mac OS X has been fixed.

        •  28 Feb 2008 12:48

          Release Notes: MD2, MD4, MD5, SHA-1, SHA-256, SHA-512, and Tiger hash methods were added. Nintendo DS console application support is now available through devKitARM. CPUID was updated to detect features listed in the December 2007 Intel CPUID spec. A major (but rarely occurring) AVLTree flaw has been corrected.

          •  26 Dec 2007 06:40

            Release Notes: Visual Studio 2008 support added. CPUID now detects AMD cache descriptors. The ConvertToDArray and ConvertIndexToDArray functions were optimized, so the deprecation notice was removed. Stopwatch was fixed on FreeBSD, NetBSD, and OpenBSD. AVLTree, SplayTree, ShellSort, InsertionSort, and BubbleSort were added (the last two for educational purposes only). A basic HashTable implementation was added. AVLTree, RedBlackTree, and SplayTree have close-to-identical (if not perfectly identical) APIs. Some "using namespace" statements that were causing hard-to-detect errors were cleaned up. Many minor fixes were made.


            Project Spotlight


            A Fluent OpenStack client API for Java.


            Project Spotlight

            TurnKey TWiki Appliance

            A TWiki appliance that is easy to use and lightweight.