00001 // @(#)root/mathcore:$Id: IFunctionfwd.h 20882 2007-11-19 11:31:26Z rdm $ 00002 // Author: L. Moneta Tue Nov 14 14:38:48 2006 00003 00004 /********************************************************************** 00005 * * 00006 * Copyright (c) 2006 LCG ROOT Math Team, CERN/PH-SFT * 00007 * * 00008 * * 00009 **********************************************************************/ 00010 00011 // Defines Forward declaration for template IFunction class and useful typedefs 00012 00013 #ifndef ROOT_Math_IFunctionfwd 00014 #define ROOT_Math_IFunctionfwd 00015 00016 00017 namespace ROOT { 00018 00019 namespace Math { 00020 00021 #ifdef OLD 00022 template<class DimensionType> class IBaseFunction; 00023 template<class DimensionType> class IGradientFunction; 00024 00025 00026 /// tag for multi-dimensional functions 00027 struct MultiDim {}; 00028 00029 /// tag for one-dimensional functions 00030 struct OneDim {}; 00031 00032 00033 typedef IBaseFunction<OneDim> IGenFunction; 00034 typedef IBaseFunction<MultiDim> IMultiGenFunction; 00035 00036 typedef IGradientFunction<OneDim> IGradFunction; 00037 typedef IGradientFunction<MultiDim> IMultiGradFunction; 00038 #endif 00039 00040 class IBaseFunctionOneDim; 00041 class IGradientFunctionOneDim; 00042 class IBaseFunctionMultiDim; 00043 class IGradientFunctionMultiDim; 00044 00045 00046 typedef IBaseFunctionOneDim IGenFunction; 00047 typedef IBaseFunctionMultiDim IMultiGenFunction; 00048 00049 typedef IGradientFunctionOneDim IGradFunction; 00050 typedef IGradientFunctionMultiDim IMultiGradFunction; 00051 00052 00053 } // end namespace Math 00054 00055 } // end namespace ROOT 00056 00057 00058 #endif /* ROOT_Math_IFunctionfwd */