LCOV - code coverage report
Current view: top level - bnmin1/src - paramctr.h (source / functions) Hit Total Coverage
Test: casacpp_coverage.info Lines: 6 18 33.3 %
Date: 2024-12-11 20:54:31 Functions: 1 7 14.3 %

          Line data    Source code
       1             : /**
       2             :    Bojan Nikolic <bojan@bnikolic.co.uk>
       3             : 
       4             :    \file paramctr.hxx
       5             :    Renamed to paramctr.h 2023
       6             : 
       7             :    Control of parameters
       8             : */
       9             : 
      10             : #ifndef _BNMIN_PARAMCTR_HXX__
      11             : #define _BNMIN_PARAMCTR_HXX__
      12             : 
      13             : #include <string>
      14             : 
      15             : #include "bnmin_main.h"
      16             : 
      17             : namespace Minim {
      18             : 
      19             :   /** A class to describe a model parameter
      20             :    */
      21             :   template<class T>
      22             :   class ParamCtr
      23             :   {
      24             :   public:
      25             :     /// Pointer to the actual value being controlled
      26             :     T * p;
      27             : 
      28             :     /// A name for this parameter
      29             :     std::string name;
      30             : 
      31             :     /// If false the parametar is excluded from fitting
      32             :     bool dofit;
      33             : 
      34             :     /// A comment explaining what the parametar does
      35             :     std::string comment;
      36             : 
      37        1215 :     ParamCtr(T* pp,
      38             :              const std::string &pname,
      39             :              bool pdofit, 
      40             :              const std::string &pcomment): 
      41        1215 :       p(pp),
      42        1215 :       name(pname),
      43        1215 :       dofit(pdofit),
      44        1215 :       comment(pcomment)
      45             :     {
      46        1215 :     }
      47             :     
      48             :     /** Default constructor for interoperation with stl containers
      49             :      */
      50             :     ParamCtr(void):
      51             :       p(NULL),
      52             :       name(""),
      53             :       dofit(false),
      54             :       comment("")
      55             :     {
      56             :     }
      57             : 
      58           0 :     T  getp(void) 
      59             :     {
      60           0 :       return *p;
      61             :     }
      62             : 
      63           0 :     void setp(T pp)
      64             :     { 
      65           0 :       *p = pp;
      66           0 :     }
      67             : 
      68             :     /// Returns the name as a c-type string
      69           0 :     const char * getname(void)
      70             :     { 
      71           0 :       return name.c_str(); 
      72             :     }
      73             : 
      74             :     /*! Returns the comment as a c-type string */
      75             :     const char * getcomment(void) 
      76             :     { 
      77             :       return comment.c_str(); 
      78             :     }
      79             :   };
      80             : 
      81             :   /// A floating point double parameter
      82             :   typedef ParamCtr<double>  DParamCtr;
      83             : 
      84             :   class ParamError:
      85             :     public BaseErr
      86             :   {
      87             :   public:
      88             :     /// Use only if could not establish the parameter
      89           0 :     ParamError(const std::string &msg):
      90           0 :       BaseErr("Parameter not identified: " +msg)
      91           0 :     {}
      92             : 
      93             :     ParamError(const DParamCtr&p,
      94             :                const std::string &msg):
      95             :       BaseErr(p.name+msg)
      96             :     {}
      97             :     
      98           0 :     virtual ~ParamError() throw()
      99           0 :     {}
     100             : 
     101             :   };
     102             :   
     103             : 
     104             : 
     105             : }
     106             : 
     107             : #endif // _BNMIN_PARAMCTR_HXX__

Generated by: LCOV version 1.16