// ScaleProfiles updates the units in a set of profiles to make them // compatible. It scales the profiles to the smallest unit to preserve // data. func ScaleProfiles(profiles []*profile.Profile) error { … } // CommonValueType returns the finest type from a set of compatible // types. func CommonValueType(ts []*profile.ValueType) (*profile.ValueType, error) { … } func compatibleValueTypes(v1, v2 *profile.ValueType) bool { … } // Scale a measurement from a unit to a different unit and returns // the scaled value and the target unit. The returned target unit // will be empty if uninteresting (could be skipped). func Scale(value int64, fromUnit, toUnit string) (float64, string) { … } // Label returns the label used to describe a certain measurement. func Label(value int64, unit string) string { … } // ScaledLabel scales the passed-in measurement (if necessary) and // returns the label used to describe a float measurement. func ScaledLabel(value int64, fromUnit, toUnit string) string { … } // Percentage computes the percentage of total of a value, and encodes // it as a string. At least two digits of precision are printed. func Percentage(value, total int64) string { … } type Unit … type UnitType … // findByAlias returns the unit associated with the specified alias. It returns // nil if the unit with such alias is not found. func (ut UnitType) findByAlias(alias string) *Unit { … } // sniffUnit simpifies the input alias and returns the unit associated with the // specified alias. It returns nil if the unit with such alias is not found. func (ut UnitType) sniffUnit(unit string) *Unit { … } // autoScale takes in the value with units of the base unit and returns // that value scaled to a reasonable unit if a reasonable unit is // found. func (ut UnitType) autoScale(value float64) (float64, string, bool) { … } // convertUnit converts a value from the fromUnit to the toUnit, autoscaling // the value if the toUnit is "minimum" or "auto". If the fromUnit is not // included in the unitType, then a false boolean will be returned. If the // toUnit is not in the unitType, the value will be returned in terms of the // default unitType. func (ut UnitType) convertUnit(value int64, fromUnitStr, toUnitStr string) (float64, string, bool) { … } var UnitTypes …