ToC DocOverview CGDoc RelNotes FAQ Index PermutedIndex
Allegro CL version 11.0

System Internals in Common Graphics


1.0 The *system* variable

The goal for Common Graphics and the Development Environment is to have a single global variable called *system*. The value of this global variable is an instance of the devel::development-system class when you are running the IDE, and an instance of the system class in a delivered application.

All slots and other global information, are added as properties of *system*. That way, you can assess and change anything about the global state using the inspector.


2.0 System configuration

An instance of the system class is a hierarchical object. Stored in a slot of a system instance class is a configuration object, which is used to store all options that will be saved and restored in the preferences file (allegro-ide-options.cl). Not all configuration options are displayed in the Options dialog (displayed by choosing Options from the Tools menu) but the commonly used ones do.

Like the system and devel::development-system classes, there are configuration and devel::development-configuration classes. The configuration class is used for Common Graphics and some Common Lisp configuration options. The devel::development-configuration is used for the Development Environment configuration options.

All slots and configuration information should also be properties of the configuration class so that you can assess and change them using the inspector. Only properties are saved to the preferences file allegro-ide-options.cl.


3.0 The app slot

The app slot of the system object holds an instance of the app class. An app object holds Windows application information such as current program, command line options, hinst, wndow-proc-address, etc. This object is analogous to the app object offered by Visual Basic.


4.0 System start up and shut down

To start Common Graphics or the Development Environment, run the function start-ide. System start up is described in About IDE startup in cgide.html.

Exiting the system in the development environment only -- i.e when running the IDE -- each item in (exit-tests *system*), which is a list of functions (see exit-tests), is funcalled. The exit is aborted if any of the functions returns false.


5.0 dumplisp

After a dumplisp, the *system* variable remains bound. That way, the global state and the configuration are saved in the new dxl. When the system is started after a dumplisp, initialize-cg will see that *system* has a leftover value that must be from a dumped lisp, and then clear other stale values from that lisp and make a new *system* object.


Copyright (c) 2023, Franz Inc. Lafayette, CA., USA. All rights reserved.

ToC DocOverview CGDoc RelNotes FAQ Index PermutedIndex
Allegro CL version 11.0