Change in direction...
I've been thinking off and on about what improvements need to be made to the EDMMAPI. The project is on hold, but when work resumes I plan to make a few changes.
In my original specs, there was a standalone screen object and I didn't really have much of an application object. Also in my original specs was to divide the API into parts, this way the developer can either partially exclude or completely exclude what they don't need. Prototyping the EDMMAPI in Win32 took the API in a different direction (in terms of modularity, not portability).
One of my goals designing the API is to have creation and destruction as antonyms. This way the API is hopefully easier to understand. If you create any kind of file, you close it when done. If you create an object which allocates memory, you destroy it when done. etc
I avoided multiple inheritence because methods with the same name cause conflicts. Also, multiple inheritence is not portable to other languages, such as Pascal.
I'm now leaning towards using multiple inheritence. Each object will be written in a way to avoid conflict. Method names will be unique to each object. Member variables will be named and structured in a way such that they can either be unique or shared between objects.
For languages such as Pascal, multiple inheritence will be internally implemented through the use of object variables.