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.