[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ] [ Search: ]

4.3.1 Shared Class Facility (SCF)

Original SCF design and concept by Andrew Zabolotny, 1999. This document and Crystal Space's particular SCF implementation were written, and are copyright © 1999 by Andrew Zabolotny, bit@eltech.ru. SCF is distributed under the GNU Library General Public License (LGPL). See section Licenses.

Documentation revised significantly by Eric Sunshine, sunshine@sunshineco.com. Last updated September 24, 2003.

SCF implementation revised by Mårten Svanfeldt and Michael Adams 2005-2006

This library is intended for separating C++ class implementations from programs that use them. This is achieved by separating class implementations into a separate module in the form of shared libraries, which are also called plugin modules. Separating the implementation of a class from the program helps to address problems regarding shared library facility incompatibilities on different platforms. It also makes it possible to use different mechanisms for SCF, for example inter-process communication (through pipes, shared memory, or whatever); communication through network or through a COM or CORBA request broker; although currently only two minimal configurations supported: using shared libraries and using static linkage (for platforms that don't have shared library support).

There is a HOWTO which explains how to create a plugin module from the ground up using SCF technology (see section Create Your Own Plugin). The HOWTO provides a much more concise explanation about how to create and utilize a plugin than what you will find here, since this section is more interested in exposing SCF in gory detail. There is also a HOWTO which explains how to make using SCF interfaces easier by using smart pointers (see section Correctly Using Smart Pointers).

The SCF implementation is resides within the ‘CS/libs/csutil’ module.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated using texi2html 1.76.