/** * Parse an un-interned unit: * unit := <name> [";" <symbol> [";" <dim> [";" <scale> [";" <offset>]]]] */ private static Unit parseUnit(string s) { string idStrs = s; int c = s.IndexOf(';'); if (c > 0) { idStrs = s.Substring(0, c); } List ids = FanStr.split(idStrs, Long.valueOf(',')); if (c < 0) { return(new Unit(ids, m_dimensionless, 1, 0)); } string dim = s = s.Substring(c + 1).Trim(); c = s.IndexOf(';'); if (c < 0) { return(new Unit(ids, parseDim(dim), 1, 0)); } dim = s.Substring(0, c).Trim(); string scale = s = s.Substring(c + 1).Trim(); c = s.IndexOf(';'); if (c < 0) { return(new Unit(ids, parseDim(dim), Double.parseDouble(scale), 0)); } scale = s.Substring(0, c).Trim(); string offset = s.Substring(c + 1).Trim(); return(new Unit(ids, parseDim(dim), Double.parseDouble(scale), Double.parseDouble(offset))); }