00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
#ifdef __GNUG__
00029
#pragma interface
00030
#endif
00031
00032
#ifndef _util_misc_units_h
00033
#define _util_misc_units_h
00034
00035
#include <util/class/class.h>
00036
#include <util/state/state.h>
00037
#include <util/ref/ref.h>
00038
00039
namespace sc {
00040
00042 class Units:
public SavableState {
00043
protected:
00044
char *strrep_;
00045
double to_atomic_units_;
00046
00047
void parse_unit();
00048
public:
00049
enum Storage { Steal, Copy };
00050
00052
Units(
const char *strrep);
00057
Units(
char *strrep, Units::Storage = Units::Copy);
00059
Units(
StateIn& s);
00060 ~
Units();
00061
00063
double to(
const Ref<Units> &u)
const;
00065
double from(
const Ref<Units> &u)
const;
00066
00068
double to_atomic_units()
const;
00070
double from_atomic_units()
const;
00071
00073
const char *
string_rep()
const;
00074
00076
void save_data_state(
StateOut&s);
00077 };
00078
00079 }
00080
00081
#endif
00082
00083
00084
00085
00086