SRC\CLASSES
contains only C code which was originally generated
by the SOM compiler from the IDL files in the IDL\
directory. Of
course, that code has been extended so that the new classes do anything meaningful.
As opposed to versions before 0.9.0, this directory contains SOM code only.
The idea is that (except for fairly small method code) code in one of these class
files should call some implementation function in a directory other than
SRC\CLASSES
. Only in doing so it is possible that several developers
can implement features within the same WPS class.
For example, src\classes\xfldr.c
branches over to
src\filesys\folder.c
, which is the "folder implementation" code and has
most of the folder features.
The XWorkplace package contains many classes, but puts them all into a single DLL.
This is possible by specifying the same target DLL in the IDL files.
(XWorkplace's IDL files are now in the separate IDL\
directory.)
One can put several classes into one .IDL file (which happens in
xtrash.idl
for example) or spread them across several IDL files too.
Note that the .DEF files in IDL\
are not used.
These files are created automatically by the
SOM compiler, which cannot however create a single DEF file if you
use several IDL files for the same DLL. For finally linking the whole main DLL,
the makefiles instead use \src\shared\xwp.def
, which I manually
created from all the DEF files which were created by the SOM compiler.
This file exports lots of mysterious SOM structures which allow the SOM kernel see the
classes in the DLL.