These files are C++ header and source for the CAM8 library. The code is derived from the stage 1 conversion of the C library CAMlib. Conversion to C++ is being done to provide a cleaner object oriented interface for the library. It is a first cut at providing a C++ CAM8 library and will be somewhat of the basis for CA library in general (to be done in stage 3). No strict OO design philosophy was used rather the C structs were converted to C++ classes and the routines that operate directly on those structs were converted to C++ member functions. This code wasn't written with a strong OO design and as such a "real" conversion to C++ would require a redesign of the objects. All class data is public and the boundaries between various objects are extremely fuzzy in places. Member functions from one class shamelessly modify class data for other class objects. No attempt was made to correct this. The C++ source code has been moved into separate files segregated by class. The C wrapper code will reside in the old files and keep the old naming convensions. Every class defines copy constructors and operator= which does a very shallow copy. Pointers get duplicated and the threat of freeing previously freed memory persists. The reason we allow this is because every one of these classes were meant to be instantiated as objects allocated from free store. This means that local variable will be pointers to the objects and as such the class destructor doesn't get calles when they go out of scope. Internally any non-pointer use of a class is decalred static so that the object persists for the lifetime of the application. Destructors only get called when objects are explicitly deleted. The user is responsible for not deleting shadows of an object. In the future I plan to provide "properly" coded copy constructors and operator= that do deep copies of all class objects.