Changeset 104 for trunk/include


Ignore:
Timestamp:
Oct 14, 2005, 9:43:27 AM (19 years ago)
Author:
dkearney
Message:

This update brings us one step closer to being const correct in the RpUnits
class. Added a few more comments. All other files touched were made to
comply with the new const correct RpUnits.[h,cc]

Location:
trunk/include
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/cee/RpUnitsCInterface.h

    r93 r104  
    1717
    1818    // unit definition functions
    19     RpUnits* rpDefineUnit        ( const char* unitSymbol, RpUnits* basis );
     19    const RpUnits* rpDefineUnit  ( const char* unitSymbol,
     20                                   const RpUnits* basis );
    2021
    2122    // conversion definition functions
    22     RpUnits* rpDefineConv        ( RpUnits* fromUnit,
    23                                    RpUnits* toUnit,
     23    const RpUnits* rpDefineConv  ( const RpUnits* fromUnit,
     24                                   const RpUnits* toUnit,
    2425                                   double (*convForwFxnPtr)(double),
    2526                                   double (*convBackFxnPtr)(double)    );
    2627
    2728    // unit attribute access functions
    28     const char* rpGetUnits       ( RpUnits* unit );
     29    const char* rpGetUnits       ( const RpUnits* unit );
    2930
    30     const char* rpGetUnitsName   ( RpUnits* unit );
     31    const char* rpGetUnitsName   ( const RpUnits* unit );
    3132
    32     double rpGetExponent         ( RpUnits* unit );
     33    double rpGetExponent         ( const RpUnits* unit );
    3334
    34     RpUnits* rpGetBasis          ( RpUnits* unit);
     35    const RpUnits* rpGetBasis    ( const RpUnits* unit);
    3536
    36     RpUnits* rpFind              ( const char* unitSymbol);
     37    const RpUnits* rpFind        ( const char* unitSymbol);
    3738
    38     int rpMakeMetric             ( RpUnits* basis );
     39    int rpMakeMetric             ( const RpUnits* basis );
    3940
    4041    // convert functions
     
    5051                                   int* result );
    5152
    52     const char* rpConvert_ObjStr ( RpUnits* fromUnits,
    53                                    RpUnits* toUnits,
     53    const char* rpConvert_ObjStr ( const RpUnits* fromUnits,
     54                                   const RpUnits* toUnits,
    5455                                   double val,
    5556                                   int showUnits,
     
    6061                                   int* result );
    6162
    62     double rpConvert_ObjDbl      ( RpUnits* fromUnits,
    63                                    RpUnits* toUnits,
     63    double rpConvert_ObjDbl      ( const RpUnits* fromUnits,
     64                                   const RpUnits* toUnits,
    6465                                   double val,
    6566                                   int* result );
  • trunk/include/core/RpBindingsDict.h

    r97 r104  
    4141
    4242RpLibrary* getObject_Lib(int objKey);
    43 RpUnits* getObject_UnitsStr(int objKey);
     43const RpUnits* getObject_UnitsStr(int objKey);
    4444
    4545void cleanLibDict();
  • trunk/include/core/RpNumber.h

    r38 r104  
    2222{
    2323    public:
    24        
     24
    2525        // users member fxns
    2626
     
    5151                        int* result = NULL  );
    5252        double convert(std::string toUnitStr, int* result = NULL);
    53         double convert(RpUnits* toUnit, int* result = NULL);
    54        
     53        double convert(const RpUnits* toUnit, int* result = NULL);
     54
    5555        // place the information from this object into the xml library 'lib'
    5656        // virtual RpNumber& put(RpLibrary lib);
    5757        // RpNumber& put() const;
    5858
    59        
    6059
    61         /*
     60
     61        /*
    6262         * user provides a 'path' for where this object lives in xml file
    6363         * user calls define with standard hints as described in Number docs
     
    7878         *
    7979         *
    80          *         
     80         *
    8181         */
    82        
     82
    8383        /* what about unit-less numbers */
    8484        RpNumber (
     
    135135
    136136        }
    137        
     137
    138138        // copy constructor
    139139        RpNumber ( const RpNumber& myRpNumber )
     
    155155
    156156        // std::string units;
    157         RpUnits* units;
     157        const RpUnits* units;
    158158        double min;
    159159        double max;
  • trunk/include/core/RpUnits.h

    r83 r104  
    3636        const std::string getUnits(){ return units; };
    3737        double getExponent() {return exponent;};
    38         RpUnits * getBasis() {return basis;};
     38        const RpUnits * getBasis() {return basis;};
    3939
    4040        friend class RpUnits;
     
    4343        const std::string units;
    4444        double exponent;
    45         RpUnits* basis;
     45        const RpUnits* basis;
    4646
    4747        unit* prev;
     
    5252                const std::string& units,
    5353                double&            exponent,
    54                 RpUnits*           basis,
     54                const RpUnits*     basis,
    5555                unit*              next
    5656             )
     
    109109    private:
    110110
    111         RpUnits* fromPtr;
    112         RpUnits* toPtr;
     111        const RpUnits* fromPtr;
     112        const RpUnits* toPtr;
    113113        double (*convForwFxnPtr)(double);
    114114        double (*convBackFxnPtr)(double);
     115        double (*convForwFxnPtrDD)(double,double);
     116        double (*convBackFxnPtrDD)(double,double);
    115117        void* (*convForwFxnPtrVoid)(void*, void*);
    116118        void* convForwData;
     
    125127        // create a conversion
    126128        conversion (
    127                 RpUnits* fromPtr,
    128                 RpUnits* toPtr,
     129                const RpUnits* fromPtr,
     130                const RpUnits* toPtr,
    129131                double (*convForwFxnPtr)(double),
    130132                double (*convBackFxnPtr)(double),
     
    136138                convForwFxnPtr      (convForwFxnPtr),
    137139                convBackFxnPtr      (convBackFxnPtr),
     140                convForwFxnPtrDD    (NULL),
     141                convBackFxnPtrDD    (NULL),
    138142                convForwFxnPtrVoid  (NULL),
    139143                convForwData        (NULL),
     
    145149
    146150        conversion (
    147                 RpUnits* fromPtr,
    148                 RpUnits* toPtr,
     151                const RpUnits* fromPtr,
     152                const RpUnits* toPtr,
     153                double (*convForwFxnPtr)(double,double),
     154                double (*convBackFxnPtr)(double,double),
     155                conversion* prev,
     156                conversion* next
     157             )
     158            :   fromPtr             (fromPtr),
     159                toPtr               (toPtr),
     160                convForwFxnPtr      (NULL),
     161                convBackFxnPtr      (NULL),
     162                convForwFxnPtrDD    (convForwFxnPtr),
     163                convBackFxnPtrDD    (convBackFxnPtr),
     164                convForwFxnPtrVoid  (NULL),
     165                convForwData        (NULL),
     166                convBackFxnPtrVoid  (NULL),
     167                convBackData        (NULL),
     168                prev                (prev),
     169                next                (next)
     170            {};
     171
     172        conversion (
     173                const RpUnits* fromPtr,
     174                const RpUnits* toPtr,
    149175                void* (*convForwFxnPtrVoid)(void*, void*),
    150176                void* convForwData,
     
    158184                convForwFxnPtr      (NULL),
    159185                convBackFxnPtr      (NULL),
     186                convForwFxnPtrDD    (NULL),
     187                convBackFxnPtrDD    (NULL),
    160188                convForwFxnPtrVoid  (convForwFxnPtrVoid),
    161189                convForwData        (convForwData),
     
    218246
    219247        // users member fxns
    220         std::string getUnits();
    221         std::string getUnitsName();
    222         double getExponent();
    223         RpUnits* getBasis();
     248        std::string getUnits() const;
     249        std::string getUnitsName() const;
     250        double getExponent() const;
     251        const RpUnits* getBasis() const;
    224252
    225253        // convert from one RpUnits to another if the conversion is defined
    226         double convert(RpUnits* toUnits, double val, int* result = NULL);
     254        double convert(         const RpUnits* toUnits,
     255                                double val,
     256                                int* result=NULL    ) const;
    227257        // convert from one RpUnits to another if the conversion is defined
    228         void* convert(RpUnits* toUnits, void* val, int* result = NULL);
     258        void* convert(          const RpUnits* toUnits,
     259                                void* val,
     260                                int* result=NULL) const;
    229261        // convert from one RpUnits to another if the conversion is defined
    230         double convert(std::string, double val);
     262        // double convert(std::string, double val);
    231263        // convert from one RpUnits to another if the conversion is defined
    232         std::string convert (   RpUnits* toUnits,
     264        std::string convert (   const RpUnits* toUnits,
    233265                                double val,
    234266                                int showUnits = 0,
    235                                 int* result = NULL  );
     267                                int* result = NULL  ) const;
    236268
    237269        static std::string convert ( std::string val,
     
    246278        // this should only be used for units that are part of the
    247279        // metric system. doesnt deal with exponents, just prefixes
    248         double makeBasis(double value, int* result = NULL);
    249         RpUnits & makeBasis(double* value, int* result = NULL);
    250 
    251         static int makeMetric(RpUnits * basis);
     280        double makeBasis(double value, int* result = NULL) const;
     281        const RpUnits & makeBasis(double* value, int* result = NULL) const;
     282
     283        static int makeMetric(const RpUnits * basis);
    252284
    253285        // find a RpUnits object that should exist in RpUnitsTable
    254286        // returns 0 on success (object was found)
    255287        // returns !0 on failure (object not found)
    256         static RpUnits* find(std::string key)
    257         {
    258             // dict.find seems to return a (RpUnits* const) so i had to
    259             // cast it as a (RpUnits*)
    260 
    261             // dict pointer
    262             RpUnits* unitEntry = (RpUnits*) *(dict->find(key).getValue());
    263 
    264             // dict pointer
    265             if (unitEntry == (RpUnits*)dict->getNullEntry().getValue()) {
    266                 unitEntry = NULL;
    267             }
    268 
    269             return unitEntry;
    270         };
     288        static const RpUnits* find(std::string key);
    271289
    272290        // user calls define to add a RpUnits object or to add a relation rule
    273291        //
    274292        // add RpUnits Object
    275         static RpUnits * define(const std::string units, RpUnits * basis);
    276         static RpUnits * defineCmplx(const std::string units,RpUnits * basis);
     293        static RpUnits * define(const std::string units,
     294                                const RpUnits* basis);
     295        static RpUnits * defineCmplx(   const std::string units,
     296                                        const RpUnits* basis);
    277297        //
    278298        // add relation rule
    279299
    280         static RpUnits * define(RpUnits* from,
    281                                 RpUnits* to,
     300        static RpUnits * define(const RpUnits* from,
     301                                const RpUnits* to,
    282302                                double (*convForwFxnPtr)(double),
    283303                                double (*convBackFxnPtr)(double));
    284304
    285         static RpUnits * define(RpUnits* from,
    286                                 RpUnits* to,
     305        static RpUnits * define(const RpUnits* from,
     306                                const RpUnits* to,
     307                                double (*convForwFxnPtr)(double,double),
     308                                double (*convBackFxnPtr)(double,double));
     309
     310        static RpUnits * define(const RpUnits* from,
     311                                const RpUnits* to,
    287312                                void* (*convForwFxnPtr)(void*, void*),
    288313                                void* convForwData,
     
    297322        //      "temp"                      load units related to temperature
    298323        //      "time"                      load units related to time
     324        //      "volume"                    load units related to volume
    299325        //  (no other groups have been created)
    300326
     
    384410
    385411        // linked list of units this RpUnit can convert to
    386         convEntry* convList;
     412        // its mutable because the connectConversion function takes in a
     413        // const RpUnits* and attempts to change the convList variable
     414        // within the RpUnits Object
     415        mutable convEntry* convList;
    387416
    388417        // used by the RpUnits when defining conversion elements
     
    405434                    const std::string& units,
    406435                    double& exponent,
    407                     RpUnits* basis
     436                    const RpUnits* basis
    408437                )
    409438            :   head        ( new unit( units, exponent, basis, NULL) ),
     
    418447
    419448        RpUnits (
    420                     RpUnits* from,
    421                     RpUnits* to,
     449                    const RpUnits* from,
     450                    const RpUnits* to,
    422451                    double (*convForwFxnPtr)(double),
    423452                    double (*convBackFxnPtr)(double),
     
    435464
    436465
    437 
    438 
    439 
    440466        RpUnits (
    441                     RpUnits* from,
    442                     RpUnits* to,
     467                    const RpUnits* from,
     468                    const RpUnits* to,
     469                    double (*convForwFxnPtr)(double,double),
     470                    double (*convBackFxnPtr)(double,double),
     471                    conversion* prev,
     472                    conversion* next
     473                )
     474            :   head (NULL),
     475                convList (NULL),
     476                conv (new conversion
     477                        (from,to,convForwFxnPtr,convBackFxnPtr,prev,next))
     478        {
     479            connectConversion(from);
     480            connectConversion(to);
     481        };
     482
     483
     484
     485        RpUnits (
     486                    const RpUnits* from,
     487                    const RpUnits* to,
    443488                    void* (*convForwFxnPtr)(void*, void*),
    444489                    void* convForwData,
     
    475520        }
    476521
    477         void RpUnits::connectConversion(RpUnits* myRpUnit);
     522        void RpUnits::connectConversion(const RpUnits* myRpUnit);
    478523
    479524        void RpUnits::fillMetricMap();
     
    495540
    496541
    497         static int pre_compare( std::string& units, RpUnits* basis = NULL);
     542        static int pre_compare( std::string& units,
     543                                const RpUnits* basis = NULL);
     544
    498545        void addUnit( const std::string& units,
    499546                      double &  exponent,
    500                       RpUnits * basis
     547                      const RpUnits * basis
    501548                     );
    502549
     
    506553        static int addPresetTemp();
    507554        static int addPresetTime();
     555        static int addPresetVolume();
    508556
    509557
  • trunk/include/core/RpUnitsStd.h

    r68 r104  
    44#endif
    55
    6 double centi2base   (double centi);
    7 double milli2base   (double milli);
    8 double micro2base   (double micro);
    9 double nano2base    (double nano);
    10 double pico2base    (double pico);
    11 double femto2base   (double femto);
    12 double atto2base    (double atto);
    13 double kilo2base    (double kilo);
    14 double mega2base    (double mega);
    15 double giga2base    (double giga);
    16 double tera2base    (double tera);
    17 double peta2base    (double peta);
    18 
    19 
    20 double base2centi   (double base);
    21 double base2milli   (double base);
    22 double base2micro   (double base);
    23 double base2nano    (double base);
    24 double base2pico    (double base);
    25 double base2femto   (double base);
    26 double base2atto    (double base);
    27 double base2kilo    (double base);
    28 double base2mega    (double base);
    29 double base2giga    (double base);
    30 double base2tera    (double base);
    31 double base2peta    (double base);
     6double centi2base (double centi, double power);
     7double milli2base (double milli, double power);
     8double micro2base (double micro, double power);
     9double nano2base (double nano, double power);
     10double pico2base (double pico, double power);
     11double femto2base (double femto, double power);
     12double atto2base (double atto, double power);
     13double kilo2base (double kilo, double power);
     14double mega2base (double mega, double power);
     15double giga2base (double giga, double power);
     16double tera2base (double tera, double power);
     17double peta2base (double peta, double power);
    3218
    3319
    3420
    35 double angstrom2meter (double angstrom);
    36 double meter2angstrom (double meters);
    37 double meter2inch (double m);
    38 double inch2meter (double in);
    39 double meter2feet (double m);
    40 double feet2meter (double ft);
    41 double meter2yard (double m);
    42 double yard2meter (double yd);
     21double base2centi (double base, double power);
     22double base2milli (double base, double power);
     23double base2micro (double base, double power);
     24double base2nano (double base, double power);
     25double base2pico (double base, double power);
     26double base2femto (double base, double power);
     27double base2atto (double base, double power);
     28double base2kilo (double base, double power);
     29double base2mega (double base, double power);
     30double base2giga (double base, double power);
     31double base2tera (double base, double power);
     32double base2peta (double base, double power);
     33
     34
     35
     36double angstrom2meter (double angstrom, double power);
     37double meter2angstrom (double meters, double power);
     38double meter2inch (double m, double power);
     39double inch2meter (double in, double power);
     40double meter2feet (double m, double power);
     41double feet2meter (double ft, double power);
     42double meter2yard (double m, double power);
     43double yard2meter (double yd, double power);
    4344
    4445
     
    6263
    6364
     65double cubicMeter2usGallon (double m3, double none);
     66double usGallon2cubicMeter (double g, double none);
     67double cubicFeet2usGallon (double ft3, double none);
     68double usGallon2cubicFeet (double g, double none);
    6469
    6570
Note: See TracChangeset for help on using the changeset viewer.