Lisp host is a mechanism for exposing functionality of Qt program as LabLISP functions. LabLispHost is a virtual Qt/C++ class that - when inherited - provides this mechanics. The approach is quite simple and modular in Qt/C++. Single Qt program can contain several LabLispHost classes, that are initialized at the program's startup.
In LabLISP, the host classes are implemented as LISP packages with symbols naming the hosted functions. These packages are available to the LabLISP environment from start of the hosting program.
At present, we have LabLISP tightly integrated in control programs for our infrared and THz ellipsometers. Program TellMagSoft controls combined THz and infrared magneto-ellipsometer TellMag in our lab at UniFr. Similar, but simpler program IrElliSoft controls our standard infrared ellipsometer (see below).
Each LabLISP host class provides simple package name and longer descriptive label for user convenience.
As the TellMag instrument consists of several subsystems, the LabLISP integrated to TellMagSoft has access to their control via several packages.
The infrared ellipsometer has fewer components and IrElliSoft hosts following packages for their control:
The device classes internally inherit from THardwareDevice which inherits the LabLispHost. THardwareDevice class provides C++ abstraction for controlled axes (motor positions, temperature, field) and some of the controller LabLispHosts then provide symbols representing those axes in LabLISP.