To provide a homogeneous procedural interface and programming environment, the X Windows interface of XLISP (VISTA UI Bindings in Figure 3.1) for XLISP has been put on a set of procedures. Writing interface code in order to make a C function accessible from within LISP is a tedious and error-prone task. As there are many other C-coded parts of the framework which need to be accessible on the extension language level, a general automatic method for linking given functions with the XLISP interpreter and for making them available on the LISP level has been implemented. This automatism is part of the general Tool Abstraction Concept (TAC). This automatic support greatly facilitates the extension of the XLISP interpreter, as the programmer is no longer required to understand the XLISP interpreter in order to extend it with C-coded primitives.
Table 4.1: Number of functions (), number of constants (), size of
code for the XLISP interface, and module size of every module that is linked
with the XLISP interpreter. Numbers in parentheses indicate manual binding,
all other code is generated automatically.
The source code size of the original XLISP interpreter (Version 2.1) is roughly 270 kB. Some specific extensions have been made to the interpreter, mainly for event handling and for introducing miscellaneous operating system interface code, like for process control (for running simulators), and other features which are needed for TCAD purposes. These manually coded extensions increase the source code size of the interpreter to 470 kB.
The source code required for LISP bindings of framework modules which are required on the task level is currently 335kb (see 4.1), but is steadily increasing. Modules indicated by parentheses in Table 4.1 are manually bound to the interpreter. The majority of the interface code (63 %) is generated automatically during the build phase of VISTA, using the Tool Abstraction Concept.