diff options
author | Stephen Hines <srhines@google.com> | 2017-02-08 10:42:04 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-02-08 10:42:04 +0000 |
commit | c5804ce784c39d6cf4f69139ab3197d989181cf9 (patch) | |
tree | 87b3a32b13c392939d66fa93105896f5df0736a6 /crosperf/field.py | |
parent | baba90fd78c18585d22430dc95c748f96ad0c772 (diff) | |
parent | 9c6fa5f9e514c743e62be0ee401c12e10c94d7f1 (diff) | |
download | toolchain-utils-c5804ce784c39d6cf4f69139ab3197d989181cf9.tar.gz |
Merge remote-tracking branch 'aosp/mirror-chromium-master' into initial_import am: 870a8df6fc
am: 9c6fa5f9e5
Change-Id: Ie306363c46445f59e341b69121c4b0e113ad79b2
Diffstat (limited to 'crosperf/field.py')
-rw-r--r-- | crosperf/field.py | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/crosperf/field.py b/crosperf/field.py new file mode 100644 index 00000000..bc92e2cc --- /dev/null +++ b/crosperf/field.py @@ -0,0 +1,152 @@ +# Copyright 2011 Google Inc. All Rights Reserved. +"""Module to represent a Field in an experiment file.""" + + +class Field(object): + """Class representing a Field in an experiment file.""" + + def __init__(self, name, required, default, inheritable, description): + self.name = name + self.required = required + self.assigned = False + self.default = default + self._value = default + self.inheritable = inheritable + self.description = description + + def Set(self, value, parse=True): + if parse: + self._value = self._Parse(value) + else: + self._value = value + self.assigned = True + + def Append(self, value): + self._value += self._Parse(value) + self.assigned = True + + def _Parse(self, value): + return value + + def Get(self): + return self._value + + def GetString(self): + return str(self._value) + + +class TextField(Field): + """Class of text field.""" + + def __init__(self, + name, + required=False, + default='', + inheritable=False, + description=''): + super(TextField, self).__init__(name, required, default, inheritable, + description) + + def _Parse(self, value): + return str(value) + + +class BooleanField(Field): + """Class of boolean field.""" + + def __init__(self, + name, + required=False, + default=False, + inheritable=False, + description=''): + super(BooleanField, self).__init__(name, required, default, inheritable, + description) + + def _Parse(self, value): + if value.lower() == 'true': + return True + elif value.lower() == 'false': + return False + raise TypeError("Invalid value for '%s'. Must be true or false." % + self.name) + + +class IntegerField(Field): + """Class of integer field.""" + + def __init__(self, + name, + required=False, + default=0, + inheritable=False, + description=''): + super(IntegerField, self).__init__(name, required, default, inheritable, + description) + + def _Parse(self, value): + return int(value) + + +class FloatField(Field): + """Class of float field.""" + + def __init__(self, + name, + required=False, + default=0, + inheritable=False, + description=''): + super(FloatField, self).__init__(name, required, default, inheritable, + description) + + def _Parse(self, value): + return float(value) + + +class ListField(Field): + """Class of list field.""" + + def __init__(self, + name, + required=False, + default=None, + inheritable=False, + description=''): + super(ListField, self).__init__(name, required, default, inheritable, + description) + + def _Parse(self, value): + return value.split() + + def GetString(self): + return ' '.join(self._value) + + def Append(self, value): + v = self._Parse(value) + if not self._value: + self._value = v + else: + self._value += v + self.assigned = True + + +class EnumField(Field): + """Class of enum field.""" + + def __init__(self, + name, + options, + required=False, + default='', + inheritable=False, + description=''): + super(EnumField, self).__init__(name, required, default, inheritable, + description) + self.options = options + + def _Parse(self, value): + if value not in self.options: + raise TypeError("Invalid enum value for field '%s'. Must be one of (%s)" % + (self.name, ', '.join(self.options))) + return str(value) |