The majority of FCM functionalities are provided by a set of Perl modules.
Old modules developed prior to release
2-0 reside in the FCM1::*
name-space. Modules developed
thereafter reside in the FCM::*
name-space. These are
sub-divided into the following name-spaces:
FCM::Class
Provides an internal object class framework.
The majority of the classes in the FCM::*
name-space are
sub-classes of either FCM::Class::CODE
or
FCM::Class::HASH
. The former creates classes that are
blessed CODE
references, and is intended for configurable
functional (i.e. mostly stateless) objects. The latter creates
classes that are blessed HASH
references, and is intended
for data objects.
Note: In theory, we could use the standard module Class::Struct
or the modern MOOSE
framework. The problem is that the former is not powerful enough to give
us what we need, and the latter is not a standard module and is too heavy
weight for our intends and purposes. Instead, the developer decides that
it is easier to go for a light weight and in house solution.
FCM::CLI
Provides the logic and configuration of the command line interface (CLI).
It is made up of the following components:
FCM::CLI
FCM::System
.FCM::CLI::Exception
FCM::CLI::Parser
FCM::Context::*
Provides the data structures for storing the run time contexts.
The objects of these classes do very little, but they provide the data structures that define the states of the program at run time.
FCM::Exception
Provides the base class for exceptions.
FCM::System
Provides a façade to the functionalities of the FCM system.
The actual implementation is delegated to the following:
FCM::System::CM
FCM1::Cm
.FCM::System::Misc
browse
,
cfg-print
, keyword-print
.FCM::System::Old
FCM::System::Make
FCM::System::Make::Build
FCM::System::Make::Build::*
FCM::System::Make::Extract
FCM::System::Make::Mirror
FCM::System::Make::Preprocess
FCM::System::Make::Build
.FCM::System::Make::Share::*
FCM::System::Make::*
.FCM::Util
Provides supporting utilities.
Functionalities include:
The logic of the more complex utilities are delegated to modules in
the FCM::Util::*
name space.
Note: The majority of modules in the old FCM1::*
name space
are considered deprecated, with the exception of FCM1::Cm
and
those providing support functionalities for it. The functionalities of these
modules will eventually be absorbed into the FCM::System::CM
framework.