5.4.5 Basic Types in CSS

There are six basic "primitive" types in CSS: Int, Real, char, String, bool, and enum. An Int is essentially an int, a Real is essentially a double, and a String is a C++, dynamically-allocating string object. A char is just an int object that will convert into its equivalen ASCII character instead of its numerical value when converted into a String. A bool has two values: true and false. An enum has defined enumeration values, and will convert a string representation of one of those values into the corresponding symbolic/numeric value.

All of the other flavors of int in C, including short, long, unsigned, etc, are all just defined to be the same as an Int. Similarly, a float and double are defined to be the same as a Real. The String object is the same as the one that comes with the GNU libg++ library (slightly modified), which provides all of the common string manipulation functions as member functions of the String object, and handles the allocation of memory for the string dynamically, etc.

In addition to the primitive types, there are reference, pointer, and array types. Also, there are both script-defined and TypeAccess-derived hard-coded class objects. Finally, there are types that point to hard-coded members of class objects, which correspond to all of the basic C types, and, unlike the basic script types, are sensitive to the actual size of a short vs a long, etc.

Finally there is a special SubShell type, which allows one to have multiple compile spaces (cssProgSpace's) within css. Thus, one could load one program into the current shell, and use a SubShell to load another one without getting rid of the first. The two shells can communicate via extern objects, and they share the same type space. Typical usage is:

css> extern SubShell sub_shell;
css> chsh sub_shell

The first line defines the object (extern is recommended else it will be removed when the parent shell is recompiled), and the second switches to it. To exit from the sub shell, just use exit or ctrl-D (and have faith that when you answer 'y' you will be returned to the parent shell).