March 9, 2010 15:03:25
AdamMil.net Libraries Home
It's amazing how nice people are to you when they know you're going away. -- Michael Arlen

 .:  AdamMil.net Libraries

Introduction

The AdamMil.net collection of libraries provides a number of services that I've found useful or interesting. It has the following libraries:
  • Artificial Intelligence
  • Collections
  • IO
  • Mathematics
  • Security
  • User Interfaces
All libraries are documented, commented, and fairly well-designed, and many libraries have solid unit tests as well. Some libraries are works in progress, and their design may change. The libraries are separate, but there are some dependencies between them.

All code is released under the terms of the GNU GPL version 2.

Libraries

Artificial Intelligence

Currently, the library primarily covers search. It is well-designed, documented, and commented. It has the following features:
  • Graph, local, and adversarial search
  • Solving constraint satisfaction problems

Collections

The library implements collection classes that I've found useful. It is fully documented, commented, and unit-tested. It has the following features:
  • Circular list - Useful for implementing queues and buffers.
  • Read-only wrappers - Wrap a collection in an interface that doesn't allow modification.
  • Priority queue - An efficient sorted queue that always dequeues the superlative item.
  • Stack - Unlike the .NET one, this stack is indexable and implements an IQueue<T> interface.

IO

The library is fully documented and commented, and has some unit tests. It has the following features:
  • Low-level methods to read values from and write values to arrays and streams
  • Medium-level binary reader/writer classes to efficiently process data in arrays and streams
  • High-level python-like formatted binary IO
  • Full-duplex inheritable pipes for communicating with child processes

Mathematics

This library is just started. It has only the following features:
  • Combinatorics - Currently just a couple methods to permute data

Security

This library is documented and commented, and has some unit tests. It has the following features:
  • An OpenPGP system interface
  • An implementation of the OpenPGP interface for the GNU Privacy Guard (GnuPG/GPG). This allows you to use GPG programmatically from C# (or another .NET language) with a nice API, rather than having to shell out to the GPG executable. Essentially all GPG features are implemented except smart card support, because I don't have an OpenPGP compatible smart card. :-( But as soon as I get one, that'll be implemented too. This library was previously called GPG.net.

Security UI

This library is a work in progress, but is already very usable. It has the following features:
  • Fancy user interface controls supporting almost all of the functionality in the security library. This is intended to be used along with the security library to help you write graphical applications that use OpenPGP. The controls can be used as-is, or used as a starting point and modified to suit your purposes.

User Interfaces

This library is just started. It is a work in progress. It has the following features:
  • Text editor control - Suitable for writing a text or code editor (not finished).
  • Rich document editor control - Suitable for writing a simple desktop publishing program, word processor, web browser, or information display (not finished).
  • Wizards - A simple framework for creating application wizards, with good designer support.

Download

The latest version of the AdamMil.net libraries can be downloaded here (via Subversion). The module is called "AdamMil.net". For help on setting up Subversion, see this page. Alternately, if you can't figure out how to build it from source but still want to try it out, feel free to contact me.
Copyright 2003-2009 Adam Milazzo. Verbatim copying and redistribution of this entire page are permitted without royalty in any medium provided this notice is preserved.