Various fixes and enhancements:
[measurements/measurements.git] / src / net / mattmccutchen / measurements / Unit.java
index 25d33ac..4becce2 100644 (file)
@@ -3,21 +3,28 @@ package net.mattmccutchen.measurements;
 import java.util.*;
 
 public class Unit {
-       public static final Unit SECOND  = new Unit("s"   , 1.0, 1, 0, 0, 0, 0);
-       public static final Unit METER   = new Unit("m"   , 1.0, 0, 1, 0, 0, 0);
-       public static final Unit GRAM    = new Unit("g"   , 1.0, 0, 0, 1, 0, 0);
-       public static final Unit COULOMB = new Unit("coul", 1.0, 0, 0, 0, 1, 0);
-       public static final Unit KELVIN  = new Unit("K"   , 1.0, 0, 0, 0, 0, 1);
+       public static final Unit SECOND  = new Unit("s"   , 1.0, 1, 0, 0, 0, 0, 0);
+       public static final Unit METER   = new Unit("m"   , 1.0, 0, 1, 0, 0, 0, 0);
+       public static final Unit GRAM    = new Unit("g"   , 1.0, 0, 0, 1, 0, 0, 0);
+       public static final Unit COULOMB = new Unit("coul", 1.0, 0, 0, 0, 1, 0, 0);
+       public static final Unit KELVIN  = new Unit("K"   , 1.0, 0, 0, 0, 0, 1, 0);
+       public static final Unit MOLE    = new Unit("mol" , 1.0, 0, 0, 0, 0, 0, 1);
        
        public static final Unit[] basicUnits = new Unit[] {
-               SECOND, METER, GRAM, COULOMB, KELVIN,
+               SECOND, METER, GRAM, COULOMB, KELVIN, MOLE,
        }; // Don't mutate
        
-       public static final Unit LITER = new Unit("L", 1e-3, 0, 3, 0, 0, 0);
-       public static final Unit PERCENT = new Unit("%", 1e-2, 0, 0, 0, 0, 0);
+       public static final Unit PERCENT    = new Unit("%", 1e-2, 0, 0, 0, 0, 0, 0);
+       public static final Unit NEWTON     = new Unit("N", 1e+3,-2, 1, 1, 0, 0, 0);
+       public static final Unit JOULE      = new Unit("J", 1e+3,-2, 2, 1, 0, 0, 0);
+       public static final Unit WATT       = new Unit("W", 1e+3,-3, 2, 1, 0, 0, 0);
+       public static final Unit VOLT       = new Unit("V", 1e+3,-2, 2, 1,-1, 0, 0);
+       public static final Unit AMP        = new Unit("A", 1.0 ,-1, 0, 0, 1, 0, 0);
+       public static final Unit LITER      = new Unit("L", 1e-3, 0, 3, 0, 0, 0, 0);
        
        public static final Unit[] allUnits = new Unit[] {
-               PERCENT, SECOND, METER, GRAM, COULOMB, KELVIN, LITER,
+               SECOND, METER, GRAM, COULOMB, KELVIN, MOLE,
+               PERCENT, NEWTON, JOULE, WATT, VOLT, AMP, LITER,
        }; // Don't mutate
        
        public final String symbol;
@@ -60,6 +67,7 @@ public class Unit {
                prefixes.put('E', 1e+18);
                prefixes.put('Z', 1e+21);
                prefixes.put('Y', 1e+24);
+               prefixes.put('c', 1e-02);
                prefixes.put('m', 1e-03);
                prefixes.put('u', 1e-06); // micro -> u: oh well
                prefixes.put('n', 1e-09);