Documentation for API format

The API file is in XML format with a root node called API and a list of
class nodes. See qfont.xml for an example. Items marks with a * may appear
zero or more times.

Description of elements and required and optional attributes:

Element:		API
Description:	Root node for an API file
Required attr:	None
Optional attr:	None
Content:		Class element*


Element:		Namespace
Description:    C++ namespace
Required attr:  Name
Optional attr:  None
Content:        (Class element | Enum)*


Element:		Class
Description:	C++ class
Required attr:	Name (class name)
Optional attr:	None
Content:		Ancestor element*
				Constructor element*
				Destructor element
				Method element*
				Enum element*

				
Element:		Ancestor
Description:	Base class for current class
Required attr:	Name (base class name)
Optional attr:	None


Element:		Constructor
Description:	C++ constructor
Required attr:	Name (constructor name -- same as class name)
				Access (public, protected, or private)
				Id (unique integer starting with 0)
Optional attr:	None


Element:		Destructor
Description:	C++ destructor
Required attr:	Name (destructor name -- same as class name)
Optional attr:	None


Element:		Method
Description:	C++ method (member function)
Required attr:	Name (method name)
				Access (public, protected, or private)
				Return (return type or void)
				Id (unique integer starting with 0)
Optional attr:	Mode (Pointer, Reference, or PointerToPointer, absent if Value)
				Static (if method is static)
				Virtual (if method is declared virtual in current class)
				MethodType (Normal, Signal, or Slot)
Content:		Parameter element*


Element:		Parameter
Description:	A method parameter
Required attr:	Name (parameter name, arg1, arg2, etc., if none in the original)
				Type (type name)
Optional attr:	Mode (Pointer, Reference, or PointerToPointer, absent if Value)
				Default (default value for parameter)


Element:		Enum
Description:	Enum data type
Required attr:	Name (enum type name)
Optional attr:	Unsigned (if underlying data type should be UInt32 in CLI)
Content:		EnumItem


Element:		EnumItem
Description:	Member of an enum type
Required attr:	Name (member name)
				Value (enum value)
Optional attr:	None
				