convert.py revision 1519
17119Sgblack@eecs.umich.edu# metric prefixes
27119Sgblack@eecs.umich.eduexa  = 1.0e18
37119Sgblack@eecs.umich.edupeta = 1.0e15
47119Sgblack@eecs.umich.edutera = 1.0e12
57119Sgblack@eecs.umich.edugiga = 1.0e9
67119Sgblack@eecs.umich.edumega = 1.0e6
77119Sgblack@eecs.umich.edukilo = 1.0e3
87119Sgblack@eecs.umich.edu
97119Sgblack@eecs.umich.edumilli = 1.0e-3
107119Sgblack@eecs.umich.edumicro = 1.0e-6
117119Sgblack@eecs.umich.edunano  = 1.0e-9
127119Sgblack@eecs.umich.edupico  = 1.0e-12
137119Sgblack@eecs.umich.edufemto = 1.0e-15
147119Sgblack@eecs.umich.eduatto  = 1.0e-18
157119Sgblack@eecs.umich.edu
167119Sgblack@eecs.umich.edu# power of 2 prefixes
177119Sgblack@eecs.umich.edukibi = 1024
187119Sgblack@eecs.umich.edumebi = kibi * 1024
197119Sgblack@eecs.umich.edugibi = mebi * 1024
207119Sgblack@eecs.umich.edutebi = gibi * 1024
217119Sgblack@eecs.umich.edupebi = tebi * 1024
227119Sgblack@eecs.umich.eduexbi = pebi * 1024
237119Sgblack@eecs.umich.edu
247119Sgblack@eecs.umich.edu# memory size configuration stuff
257119Sgblack@eecs.umich.edudef to_integer(value):
267119Sgblack@eecs.umich.edu    if not isinstance(value, str):
277119Sgblack@eecs.umich.edu        result = int(value)
287119Sgblack@eecs.umich.edu    elif value.endswith('Ei'):
297119Sgblack@eecs.umich.edu        result = int(value[:-2]) * exbi
307119Sgblack@eecs.umich.edu    elif value.endswith('Pi'):
317119Sgblack@eecs.umich.edu        result = int(value[:-2]) * pebi
327119Sgblack@eecs.umich.edu    elif value.endswith('Ti'):
337119Sgblack@eecs.umich.edu        result = int(value[:-2]) * tebi
347119Sgblack@eecs.umich.edu    elif value.endswith('Gi'):
357119Sgblack@eecs.umich.edu        result = int(value[:-2]) * gibi
367119Sgblack@eecs.umich.edu    elif value.endswith('Mi'):
377119Sgblack@eecs.umich.edu        result = int(value[:-2]) * mebi
387119Sgblack@eecs.umich.edu    elif value.endswith('ki'):
397119Sgblack@eecs.umich.edu        result = int(value[:-2]) * kibi
407167Sgblack@eecs.umich.edu    elif value.endswith('E'):
417167Sgblack@eecs.umich.edu        result = int(value[:-1]) * exa
427167Sgblack@eecs.umich.edu    elif value.endswith('P'):
437133Sgblack@eecs.umich.edu        result = int(value[:-1]) * peta
447133Sgblack@eecs.umich.edu    elif value.endswith('T'):
457133Sgblack@eecs.umich.edu        result = int(value[:-1]) * tera
467119Sgblack@eecs.umich.edu    elif value.endswith('G'):
477119Sgblack@eecs.umich.edu        result = int(value[:-1]) * giga
487134Sgblack@eecs.umich.edu    elif value.endswith('M'):
497202Sgblack@eecs.umich.edu        result = int(value[:-1]) * mega
507202Sgblack@eecs.umich.edu    elif value.endswith('k'):
517202Sgblack@eecs.umich.edu        result = int(value[:-1]) * kilo
527134Sgblack@eecs.umich.edu    elif value.endswith('m'):
537134Sgblack@eecs.umich.edu        result = int(value[:-1]) * milli
547150Sgblack@eecs.umich.edu    elif value.endswith('u'):
557150Sgblack@eecs.umich.edu        result = int(value[:-1]) * micro
567150Sgblack@eecs.umich.edu    elif value.endswith('n'):
577159Sgblack@eecs.umich.edu        result = int(value[:-1]) * nano
587159Sgblack@eecs.umich.edu    elif value.endswith('p'):
597159Sgblack@eecs.umich.edu        result = int(value[:-1]) * pico
607375Sgblack@eecs.umich.edu    elif value.endswith('f'):
617375Sgblack@eecs.umich.edu        result = int(value[:-1]) * femto
627375Sgblack@eecs.umich.edu    else:
637639Sgblack@eecs.umich.edu        result = int(value)
647639Sgblack@eecs.umich.edu
657639Sgblack@eecs.umich.edu    return result
66
67def to_bool(val):
68    t = type(val)
69    if t == bool:
70        return val
71
72    if t == None:
73        return False
74
75    if t == int or t == long:
76        return bool(val)
77
78    if t == str:
79        val = val.lower()
80        if val == "true" or val == "t" or val == "yes" or val == "y":
81            return True
82        elif val == "false" or val == "f" or val == "no" or val == "n":
83            return False
84
85    return to_integer(val) != 0
86
87def to_frequency(value):
88    if not isinstance(value, str):
89        result = float(value)
90    elif value.endswith('THz'):
91        result = float(value[:-3]) * tera
92    elif value.endswith('GHz'):
93        result = float(value[:-3]) * giga
94    elif value.endswith('MHz'):
95        result = float(value[:-3]) * mega
96    elif value.endswith('kHz'):
97        result = float(value[:-3]) * kilo
98    elif value.endswith('Hz'):
99        result = float(value[:-2])
100    else:
101        result = float(value)
102
103    return result
104
105def to_latency(value):
106    if not isinstance(value, str):
107        result = float(value)
108    elif value.endswith('c'):
109        result = float(value[:-1])
110    elif value.endswith('ps'):
111        result = float(value[:-2]) * pico
112    elif value.endswith('ns'):
113        result = float(value[:-2]) * nano
114    elif value.endswith('us'):
115        result = float(value[:-2]) * micro
116    elif value.endswith('ms'):
117        result = float(value[:-2]) * milli
118    elif value.endswith('s'):
119        result = float(value[:-1])
120    else:
121        result = float(value)
122
123    return result;
124
125def to_network_bandwidth(value):
126    if not isinstance(value, str):
127        result = float(value)
128    elif value.endswith('Tbps'):
129        result = float(value[:-3]) * tera
130    elif value.endswith('Gbps'):
131        result = float(value[:-3]) * giga
132    elif value.endswith('Mbps'):
133        result = float(value[:-3]) * mega
134    elif value.endswith('kbps'):
135        result = float(value[:-3]) * kilo
136    elif value.endswith('bps'):
137        result = float(value[:-2])
138    else:
139        result = float(value)
140
141    return result
142
143def to_memory_bandwidth(value):
144    if not isinstance(value, str):
145        result = int(value)
146    elif value.endswith('PB/s'):
147        result = int(value[:-4]) * pebi
148    elif value.endswith('TB/s'):
149        result = int(value[:-4]) * tebi
150    elif value.endswith('GB/s'):
151        result = int(value[:-4]) * gibi
152    elif value.endswith('MB/s'):
153        result = int(value[:-4]) * mebi
154    elif value.endswith('kB/s'):
155        result = int(value[:-4]) * kibi
156    elif value.endswith('B/s'):
157        result = int(value[:-3])
158    else:
159        result = int(value)
160
161    return result
162
163def to_memory_size(value):
164    if not isinstance(value, str):
165        result = int(value)
166    elif value.endswith('PB'):
167        result = int(value[:-2]) * pebi
168    elif value.endswith('TB'):
169        result = int(value[:-2]) * tebi
170    elif value.endswith('GB'):
171        result = int(value[:-2]) * gibi
172    elif value.endswith('MB'):
173        result = int(value[:-2]) * mebi
174    elif value.endswith('kB'):
175        result = int(value[:-2]) * kibi
176    elif value.endswith('B'):
177        result = int(value[:-1])
178    else:
179        result = int(value)
180
181    return result
182