Main Page   Modules   Class Hierarchy   Compound List   File List   Compound Members  

Quantity.H

00001 #ifndef Quantity_H
00002 #define Quantity_H
00003 
00004 #include <vector>
00005 
00006 #include <libxml/tree.h>
00007 
00008 #include <citrus/Dimension.H>
00009 #include <citrus/DimensionGroup.H>
00010 #include <citrus/Prefix.H>
00011 #include <citrus/Unit.H>
00012 #include <citrus/UnitPower.H>
00013 
00014 #include <citrus/UnitExpr.H>
00015 
00016 class Quantity {
00017 protected:
00019   double                        m_val ;
00021   vector<UnitPower>             m_units ;
00023   vector<DimensionPower>        m_dimn ;
00025   DimensionGroup*               m_dgrp ;
00027   double                        m_scale ;
00028 
00029   void Quantity::eval( UnitExpr*                e,
00030                        vector<UnitPower>&       upwr,
00031                        vector<DimensionPower>&  dpwr,
00032                        double&                  s ) ;
00033   void Quantity::p_eval( UnitExpr*                      e,
00034                          int                            x,
00035                          vector<UnitPower>&             upwr,
00036                          vector<DimensionPower>&        dpwr,
00037                          double&                        s ) ;
00038   friend class QUnitParser ;
00039   friend int convert( Quantity* to, const Quantity* from ) ;
00040 
00041 public:
00042   Quantity() ;
00043   Quantity( const Quantity& qty ) ;
00044   Quantity( const char* dimNum ) ;
00045   Quantity( double v, UnitExpr* e ) ;
00046 
00047   ~Quantity() ;
00048 
00050   double        val() const { return m_val ; }
00052   void          val( double num ) { m_val = num ; }
00054   double        scale() const { return m_scale ; }
00056   DimensionGroup* group() const { return m_dgrp ; }
00058   const vector<DimensionPower>& dimension() const { return m_dimn ; }
00062   vector<DimensionPower>& dimension() { return m_dimn ; }
00063   void          print() ;
00064   xmlNodePtr    mathML() const ;
00065 
00066   bool operator == ( const Quantity& o ) const ;
00067 } ;
00068 
00069 int convert( Quantity* to, const Quantity* from ) ;
00070 
00071 #endif // Quantity_H
Citrus C++ Reference Manual  20010520