diff options
Diffstat (limited to 'android/tools/gen-hw-config.py')
-rwxr-xr-x | android/tools/gen-hw-config.py | 70 |
1 files changed, 14 insertions, 56 deletions
diff --git a/android/tools/gen-hw-config.py b/android/tools/gen-hw-config.py index a55d7a3..201ef04 100755 --- a/android/tools/gen-hw-config.py +++ b/android/tools/gen-hw-config.py @@ -71,65 +71,23 @@ class Item: self.description = "" self.enum_values = [] - # gets base type for an enum value. - # This is a very basic implementation of enum parser that assumes that enum - # is formatted as such: - # - # enum(type: val1[, val2[, ..., valN] [, ...]) - # - # where: - # - 'type' defines type of enumerated values, and must be one of the types - # listed in typesToMacros - # - 'val1'... 'valN' lists enumerated values, separated with a comma. - # - '...' is a special value indicating that AVD editor may set property - # value that doesn't match values enumerated in the .ini file. However, - # default value set for the property must match one of the enumerated - # values. - # This method provides some basic checking for the format, but it could, or - # should be improved. - # - def trueenumtype(self,type): - # Make sure enum ends with a ')' - if not type.endswith(")"): - print"Bad enum fomat in '" + type + "'" - sys.exit(1) - # Cut substring between 'enum(', and terminating ')' - enum_data = type[5:len(type)-1] - # Locate enum's value type - type_index = enum_data.find(':') - if type_index == -1: - print "Property '" + self.name + "': Value type is missing in enum." - sys.exit(1) - value_type = enum_data[:type_index].strip() - # Make sure value type is known - if not value_type in typesToMacros: - print "Property '" + self.name + "': Unknown value type '" + value_type + "' in enum." - sys.exit(1) - # Save list of enumerated values, stripped of spaces. - for value in enum_data[type_index+1:].split(','): - self.enum_values.append(value.strip()) - return value_type - - # gets true basic type for a type obtained from the .ini file - # Here we simply check if type is an enum, and if so, we extract basic - # type for enumerated values. - def truetype(self,type): - if type.startswith("enum("): - return self.trueenumtype(type.strip()) - return type - def add(self,key,val): if key == 'type': - self.type = self.truetype(val) + self.type = val + elif key == 'enum': + # Build list of enumerated values + self.enum_values = [ s.strip() for s in val.split(',') ] + # If default value has been already set, make sure it's in the list + if self.default and not self.default in self.enum_values: + print "Property '" + self.name + "': Default value '" + self.default + "' is missing in enum: ", + print self.enum_values, + sys.exit(1) elif key == 'default': - if len(val) > 0 and len(self.enum_values) > 0: - # Make sure that default value (if set) is present in enum. - if self.enum_values.count(val) == 0: - print "Property '" + self.name + "': Default value '" + val + "' is missing in enum: ", - print self.enum_values, - sys.exit(1) - else: - self.default = val + # If this is an enum, make sure that default value is in the list. + if val and self.enum_values and not val in self.enum_values: + print "Property '" + self.name + "': Default value '" + val + "' is missing in enum: ", + print self.enum_values, + sys.exit(1) else: self.default = val elif key == 'abstract': |