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:
Provides an internal object class framework.
The majority of the classes in the
FCM::* name-space are
sub-classes of either
FCM::Class::HASH. The former creates classes that are
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
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.
Provides the logic and configuration of the command line interface (CLI).
It is made up of the following components:
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.
Provides the base class for exceptions.
Provides a façade to the functionalities of the FCM system.
The actual implementation is delegated to the following:
Provides supporting utilities.
The logic of the more complex utilities are delegated to modules in
FCM::Util::* name space.
Note: The majority of modules in the old
FCM1::* name space
are considered deprecated, with the exception of
those providing support functionalities for it. The functionalities of these
modules will eventually be absorbed into the