This page is a placeholder, so you have something to read while I write a real web site for the UTS project. For downloads, mailing lists, and other information, please see the project page at http://sourceforge.net/projects/libuts/.

The rest of this page is mostly the contents of the file README, included in the UTS distribution.


The Unassuming Type System

The Unassuming Type System is a library that provides support for using classes and interfaces in plain C. It can be used to implement designs that call for common object-oriented programming techniques, such as inheritance and polymorphism, while retaining (most of) the simplicity, efficiency and portability of C.

The UTS is provided "as is" with no warranty. The exact terms under which you may use and (re)distribute this program are detailed in the GNU Lesser General Public License.

The UTS implements a "dynamic type system", a well defined and documented [real soon now!] API for registering and using arbitrary "classes" and "interfaces", in plain C. In very general terms, a programmer defines her types as C structures, observing a few guidelines and requirements imposed by the type system, and then uses the provided API to create objects ("instances" of the types) and access their contents. The type system manages resources used by the types and instances, keeps track of their relationships, and provides the programmer with the means for using the types.

The current code base includes the following features:

Detailed instructions, examples, and reference information, can be found in the aforementioned decent documentation. Namely, the UTS Manual, which may have been installed along with this software, or can be obtained from from http//libuts.sourceforge.net/.[real soon now!]

This library is conceptually similar to the "GObject" library (which is a part of Glib, in turn a part of Gtk+, in turn a part of Gnome; see http://le-hacker.org/papers/gobject/ and http://developer.gnome.org/doc/API/2.0/gobject/). However, this library is simpler and smaller, it does not depend on other libraries, and it does not impose on the programmer nearly as much "conventions" and boilerplate (it is unassuming, you know). This makes it much more convenient for people that can not use, or do not want to use, the Glib/Gtk+/Gnome libraries. It is also easier to debug, specially when tracing memory leaks in client code.

Note that, even though the licenses are compatible, this library does not share any code with GObject, or any other code base for that matter. It is a clean room implementation, and all copyrights are owned by the people listed in the file AUTHORS. [which, for the time being, is only yours truly, Cesar Rincon]

At the time of this writing, the code is only tested in Linux. Porting to other platforms will be done in the near future, as time permits. The code tries hard to avoid OS or library dependencies, so porting it to other POSIX systems should be very easy and straightforward. If you do such a port, please share your changes so that they can be incorporated in the official code base.

Other than porting and bug-fixing, there are few improvements and additions planned for the UTS, because it already does most of what the developer intends it to ever do. New features will probably not be introduced frequently.

Happy hacking.


Cesar Rincon
Last modified: Sun Mar 14 21:13:32 CST 2004
SourceForge.net Logo