Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members

plExternalFunctionAtKernel.h

00001 /*=============================================================================
00002  * Product        : OpenPL 
00003  * File           : plExternalFunctionAtKernel.h
00004  * Author         : Kamel Mekhnacha
00005  * Creation       : Wed Feb  6 14:47:01 2002
00006  *
00007  *=============================================================================
00008  *     (c) Copyright 2000, Centre National de la Recherche Scientifique,
00009  *                              all rights reserved
00010  *=============================================================================
00011  *
00012  *------------------------- Description ---------------------------------------
00013  *   
00014  *   
00015  *-----------------------------------------------------------------------------
00016  */
00017 
00018 #ifndef _plExternalFunctionAtKernel_h_
00019 #define _plExternalFunctionAtKernel_h_
00020 
00021 #include <plValues.h>
00022 
00023 class kplDerivativeFunction
00024 {
00025 protected:
00027   list <kplVariable*> derived_variable;
00028   
00030   list <kplVariable*> under_variables_list;
00031 
00034   //#ifndef PL_PARA_WITH_NEWF
00035   plValues *input_values;
00036 
00038   plValues *output_values;
00039   //#endif
00040 
00041 public:
00042   kplDerivativeFunction(list <kplVariable*> der_variable, 
00043             list <kplVariable*> under_variables);
00044   
00045   virtual ~kplDerivativeFunction();
00046   
00047   plDataValues operator()(const plValues& values) const;
00048 
00049   virtual void evaluate(plDataValues& o_values,
00050             plDataValues* i_values) const = 0;
00051 
00052   const list <kplVariable*>& get_under_variables() {return under_variables_list;}
00053 
00054   
00055 };
00056 
00057 class kplFormalFunction
00058 {
00059 protected:
00061   string name;
00062 
00064   list <kplVariable*> all_variables;
00065 
00067   list <kplVariable*> search_variables;
00068   
00070   list <kplVariable*> known_variables;
00071     
00073   list <kplDerivativeFunction *> derivatives_list;
00074 
00075   //#ifndef PL_PARA_WITH_NEWF
00077   plValues *input_values;
00078 
00080   plValues *output_values;
00081   //#endif
00082 
00083 public:
00084   kplFormalFunction(){};
00085   
00086   kplFormalFunction(const list <kplVariable*>& known_params,
00087             const string& func_name);
00088   
00089   kplFormalFunction(const list <kplVariable*>& search_params, 
00090             const list <kplVariable*>& known_params,
00091             const string& func_name);
00092 
00093 
00094   const list <kplDerivativeFunction*> &get_derivatives_list() const {return derivatives_list;};
00095   
00096   virtual ~kplFormalFunction();
00097 
00098   const list <kplVariable*>& get_all_variables() const;
00099   
00100   const list <kplVariable*>& get_search_variables() const;
00101   
00102   const list <kplVariable*>& get_known_variables() const;
00103     
00104   plDataValues operator()(const plValues& values) const;
00105 
00106   virtual void evaluate(plDataValues &output_values,
00107             plDataValues *values) const = 0;
00108 
00109 
00111   void set_variables(const list <kplVariable*> search_vars, 
00112              const list <kplVariable*> known_vars);
00113 
00114   void write(ostream &out) const;
00115 
00116   const string& get_name()const {return name;};
00117   
00118   friend class kplFunctionalDirac;
00119   friend class kplConditionalHistogramA;
00120   friend class kplConditional1dGaussD;
00121   friend class kplConditional1dGaussE;
00122   friend class kplConditional1dGaussF;
00123   friend class kplConditional1dGaussG;
00124   friend class kplConditionalGaussD;
00125   friend class kplConditionalGaussE;
00126   friend class kplConditionalGaussF;
00127   friend class kplConditionalGaussG;
00128   friend class kplConditionalBellShapeD;
00129   friend class kplConditionalBellShapeE;
00130   friend class kplConditionalBellShapeF;
00131   friend class kplConditionalBellShapeG;
00132   friend class kplIneqConstraint;
00133 
00134   friend ostream& operator<<( ostream &out, const kplFormalFunction &function);
00135 };
00136 
00137 
00138 class  kplFormalFunction_can_be_evaluated_predicate 
00139 {
00140 private :
00141   list <kplVariable*> *fixed;
00142 public :
00143   kplFormalFunction_can_be_evaluated_predicate(list <kplVariable*> *fix)
00144     : fixed(fix){};
00145 public :
00146   bool operator() (const kplFormalFunction  *tested_function);
00147 };
00148 
00149 
00150 
00151 
00152 #endif

Generated on Fri Apr 1 10:58:12 2005 for ProBT by  doxygen 1.4.1