This code provides objects for all the atoms: base class Atom, and Nil, Str (strings), Error, Id (identifiers) and Int (integers) derived from it. There is also a set of integer code numbers for the various errors which the interpreted code can raise. There are a few other variables representng code values, and a variable for the unique Nil object.
Tom's Lisp can be compiled with integers represented by the C++ int type, or by unbounded values suppored by the Gnu Multiple Precision Arithmetic Library. This provides the complication of conditional compilation on the UNBOUND_INTS define flag.
atoms.h
[Download]atoms.cpp
[Download]