Design Philisophy: The CA object generalizes what a CA is. Its need to manage a number of other objects directly or indirectly. In the most restricted sense: 1) Every CA is composed of a CA_SPACE which defines the universe for that CA and a CA_RULE which defines the laws in the universe. 2) Every CA_SPACE is composed of a CA_LATTICE which defines the dimentionality and configuration of the universe and a CA_SPECIES which defines the inhabitants of the universe. 3) Every CA_SPECIES is composed of a CA_FIELD that defines the arrangement and number of its bits and a CA_STATE which defines its current appearance. The more robust implementation allows for multiple CA_SPACEs for each CA, multiple CA_RULEs for each CA, multiple CA_LATTICEs for each CA_SPACE, multiple CA_SPECIES for each CA_SPACE, and multiple CA_FIELDs for each CA_SPECIES. There are also a number of specific types of these objects as well as helper objects such as: 1) The LGA object which is a lattice gas specific CA and has lattice gas variants of all of the other objects. 2) The CA_STATEVAL object which allows CA_STATE objects to appear in mathematical expressions. 3) The LGA_EQVTAB object which is a genralization of a lattice gas equivalence class table used in a LGA_RULE. It is similar to a lookup table used update a CA. 4) The CA_LUT object which is used to update a CA_SPACE. It will probably be derived from the CA_RULE class becasue it can define the laws in the universe completely. 5) The CA_DISPLAY object which is used to generate visualization of the universe so the rest of us can see whats happening. CA class -------- GenerateImage - takes a display object and image type flags. GenerateStats - takes a display object and stats type flags. GeneratePattern - takes pattern drawing commands ala campat with species objects to specify the bits. Display class ------------- Generic display object with general graphic primitives: Open, Close, Clear, PutImage, GetImage, Printf, Scanf, Load, Save, etc. NOTES ----- Need mechanism for assigning bit positions to CA_FIELDS manually and automagically. Need a number of generic display methods with a 256 entry colormap being the most commonly used. Need to be able to specify a display function or display mapping. Display functions are user defined procedures that take one or more CA_SPECIES and produce a pixel. Display mappings specify which bits from which CA_SPECIES make up the 8-bit pixel value. ---------------------------------------------------------------------------