/***************************************************************************

  README

  Author: Andreas Suter
  e-mail: andreas.suter@psi.ch

  $Id$

***************************************************************************/

**Overview**

The collection of files here demonstrate how to implement a plugin
mechanism for a user function, i.e. also loading classes at runtime.
For a discussion see also 

http://root.cern.ch/phpBB2/viewtopic.php?p=28117#28117

The idea is that a main program has an interface such that specific
user functions can be added without recompiling the main. Therefore
class identification at runtime are needed. This is possible in root
via the dictionary mechanism and the class TClass.

**Description of the files and their purposes**

The class TUserFcnBase is "almost pure virtual" and only needed to define
an interface of a user function. This is needed to efficiently call
the function at runtime.

The class TUserFcn ist the implementation of the user function.

userFcnTest is the main demonstrating how to invoke all the necessary
objects, how to cast them, and how to execute the wanted user function.

* Makefiles:

  userFcnTest.cpp,       main to demonstrate how to use a user function

  TUserFcnBase.h         interface definition for the user function including
  TUserFcnBaseLinkDef.h  a dictionary
  TUserFcnBase.cpp

  TUserFcn.h             implementaion class of the user function including
  TUserFcnLinkDef.h      a dictionary
  TUserFcn.cpp

  Makefile,              will generate userFcnTest
  Makefile.TUserFcnBase, will generate the shared library libUserFcnBase
                         needed for runtime loading of the user function
  Makefile.TUserFcn,     will generate the shared library libUserFcn
                         needed for runtime loading of the user function