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.