00001 #ifndef MEASUREMENT_H
00002 #define MEASUREMENT_H
00003
00004 #include <iostream>
00005 #include <iomanip>
00006
00023 class Dimension{
00024 public:
00025 int m, l, t, k, i;
00026 ~Dimension();
00027 };
00028
00029 int dimension_cmp(const Dimension &d1, const Dimension &d2);
00030 Dimension dimension_add(const Dimension &d1, const Dimension &d2);
00031 Dimension dimension_sub(const Dimension &d1, const Dimension &d2);
00032 Dimension dimension_mul(const Dimension &d, const int &n);
00033
00034 class Measurement{
00035
00036 public:
00037
00038 double value;
00039
00040
00041 Dimension dim;
00042
00043 Measurement(const double &value, const char *units);
00044 Measurement();
00045 Measurement(const double &value, const Dimension &dim, const double &scale=1);
00046
00047 const std::string toString() const;
00048 bool isNonDim() const;
00049 };
00050
00051
00052 inline
00053 std::ostream& operator <<(std::ostream &os,const Measurement &m){
00054 os << std::scientific << std::setprecision(8) << m.value << " <" << m.dim.m << "," << m.dim.l << "," << m.dim.t << "," << m.dim.k << "," << m.dim.i << ">";
00055 return os;
00056 }
00057
00058
00059 #endif