The functions described in this chapter are all declared in the
namespace System. They are for finding out information
about the system on which 3DLDF is being run. They are declared and
pspglb.web, except for the template function
get_second_largest(), which is declared and defined in
There are two reasons for this. The first is that template definitions
must be available
in the compilation units where specializations are instantiated.
I therefore write the template definition of
gsltmplt.h, so it can be included by the CWEB files that need
main.web only. If I
wrote it to
pspglb.h, it would be included by all of the CWEB
files except for
loader.web, causing unnecessarily bloated object
The other reason is because of the way way 3DLDF is built using Automake
and make. I originally tried to define
pspglb.web and wrote the definition to
which is no problem with CWEB. However, I was unable to express the
dependencies among the CWEB, C++
, and object files in such a way that
3DLDF was built properly.
Therefore all template functions will be put into files either by themselves, or in small groups.