This page contains brief descriptions and pointers to some of the most interesting modules in the RScheme library.
| Module Name | Short Description |
|---|---|
rs.sys.threads.manager
|
User-space Threads |
gui.x
|
An X11 interface |
rs.db.rstore
|
A persistent object store |
rs.db.pg
|
An interface to PostgresQL |
gui.app.dv
|
An extensible graphics editor |
graphics.geometry
|
2D Graphics Data Types and Operations |
graphics.afm
|
Adobe Font Metrics support |
rs.sys.multimethod
|
Multiple-argument generic function dispatch |
The rs.sys.threads.manager module provides an implementation of user-space threads for RScheme, built using a select() loop for managing asynchronous operations. This module also provides the facilities for synchronizing threads, including the core one used in RScheme, the mailbox.
|
The gui.x module provides an API for RScheme applications for talking to an X-windows server. This API is along the lines of the Common Lisp X interface (CLX). The implementation is completely within the RScheme framework (i.e., not an adaption into Xlib), and hence interoperates nicely with the user threads system. |
This is a persistent object store, inspired by the work of Paul Wilson et.al. on the Texas persistent store.
This module implements an adaption interface to the PostgresQL programming library.
|
|
The dV GUI application is an extensible graphics editor, and is designed to support high quality technical illustration and publication. The dV graphics model includes standard primitives such as lines, rectangles, arbitrary bezier paths, text, etc. Graphical elements can be rendered with definable fill and stroke styles. The graphics model is extensible using small scripts that procedurally render themselves with lower-level graphical elements. Furthermore, dV includes a rich set of scripts for common graphical elements such as arrows, page frames, callouts. |
|
The graphics.geometry module provides a collection of data types and procedures for manipulating geometric objects in two dimensions. Included are facilities for working with points, lines, rectangles, bezier curves, as well as defining regions using constructive planar geometry from primitive objects. For some short examples, see the baseline unit tests. You can also look at the |
|
The graphics.afm module provides facilities for reading and processing the contents of AFM (Adobe Font Metrics) files. |
Built-in RScheme generic functions require at least one argument at run time, and dispatch to the appropriate method based only on the class of the first argument. This is fine for many cases, but sometimes it's not enough. For example, math libraries are often organized around dispatching on both of the arguments of binary operators. The rs.sys.multimethod module provides an implementation of generic functions which can dispatch on the entire argument sequence.
All the programmer needs to do is define the generic function
with define-mm-generic-function instead of the
usual define-generic-function (which is implicit
if you just define methods on an undefined generic).