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
defined in pspglb.web, except for the template function
get_second_largest()
, which is declared and defined in
gsltmplt.web.
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 get_second_largest()
to gsltmplt.h, so it can be included by the CWEB files that need
it, currently 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
code.
The other reason is because of the way way 3DLDF is built using Automake
and make. I originally tried to define get_second_largest()
in pspglb.web and wrote the definition to gsltmplt.cc,
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.