///////////////////////////////////////////////////////////////////////////////
// CallList
// - "Smart" wrapper for managing OpenGL call lists
// - Automatically frees call list when destroyed
///////////////////////////////////////////////////////////////////////////////
class CallList
{
public:
   GLenum id;

   // Construct a CallList object with no id number
   inline CallList()                    
   // Create a new OpenGL CallList ID
   inline void create()                 
   // Deallocate the CallList ID (if one was created)
   inline void clear()                  
   // Return the ID number and drop the CallList contents without freeing the call list.
   inline GLenum detach()               
   // Assign the CallList ID number from a GLenum (be careful not to deallocate the other one!)
   inline void operator =(GLenum newID) 
   // Extract the CallList ID number from the class
   inline operator GLenum() const       
   // Destroy the CallList (deallocate the ID)
   inline ~CallList()                   
};