Lurch  beta
Lurch Documentation

This is the Lurch source code documentation, containing details of all implemented features and decisions. See the tabs at the top left.

New here? See the Quick Reference.

This page gives a quick overview of the source code documentation, but other resources are available on the main Lurch page.

If you're interested in testing out Lurch, see the Lurch homepage.
If you want to get the source code for deeper testing and/or development, try the Lurch Installation Guide.

The Source Code


There is a page that describes the concepts which the Lurch source code implements. It reads a bit more high-level, and may be a good place to go to familiarize yourself with the terminology, and get a broad view of what's going on before diving into details.

External subprojects

The Lurch Team gratefully acknowledges several open source projects on which we depend, some of which are imported into our source code using the svn:externals Subversion property, documented here. You will not find documentation of those projects in our source code docs, because that would take up space needlessly. Any file beneath trunk/externals/ is part of an external subproject, and you can find its documentation at its home page. See trunk/externals/README.txt for links to their homepages.

Specific C++ Classes

The main class in the Lurch project is the Lurch Object class, called Lob. Its documentation is a good place to start for the technical details on which Lurch is built. If you're a script author and want to see what the Lobs you can get your hands on can do, see the Scripting section, below.

Other important C++ classes that have been fully implemented are mentioned on the implemented design page, already linked to from above. Classes not yet fully implemented (e.g., LurchEnvironment, which is partially done) are described on the Lurch wiki's Foundational Specification page.

Note that Lurch Reference, Lurch Function, and Lurch Document are concepts whose functionality is part of the Lob class, since they are all special kinds of Lobs. Thus they are not embodied in any specific class, though conceptually they are distinct.


Unit testing is a big part of the Lurch development effort. We aim to test rigorously every method we write, and the files in the tests subdirectory go a long way toward that goal. See the Classes page and look for every class that begins with test_. Each such class is documented with what it tests, and every method tested should also link back to the class and method which tests it.

We also test Lurch using Lurch javascript scripts. Such testing scripts are in the tests/script_tests subfolder of the Lurch svn trunk. The file example.js explains how to add additional test files to the collection.

To invoke all tests simultaneously, run the testlurch shell script from the command line. Not only does it run all C++ and Lurch script tests, but it also builds all utilities in the utils subdirectory and ensures they compile acceptably.


The main documentation for script authors is our Lurch Scripting with simple_script page. Additional references are listed here.

 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines