OLD | NEW |
---|---|
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 | 2 |
3 import subprocess | 3 import subprocess |
4 import sys | 4 import sys |
5 | 5 |
6 import css_properties | 6 import css_properties |
7 import in_generator | 7 import in_generator |
8 import license | 8 import license |
9 | 9 |
10 | 10 |
(...skipping 11 matching lines...) Expand all Loading... | |
22 namespace WTF { | 22 namespace WTF { |
23 class AtomicString; | 23 class AtomicString; |
24 class String; | 24 class String; |
25 } | 25 } |
26 | 26 |
27 namespace blink { | 27 namespace blink { |
28 | 28 |
29 enum CSSPropertyID { | 29 enum CSSPropertyID { |
30 CSSPropertyInvalid = 0, | 30 CSSPropertyInvalid = 0, |
31 %(property_enums)s | 31 %(property_enums)s |
32 CSSPropertyVariable = %(properties_count)s, | |
32 }; | 33 }; |
33 | 34 |
34 const int firstCSSProperty = %(first_property_id)s; | 35 const int firstCSSProperty = %(first_property_id)s; |
35 const int numCSSProperties = %(properties_count)s; | 36 const int numCSSProperties = %(properties_count)s; |
36 const int lastCSSProperty = %(last_property_id)d; | 37 const int lastCSSProperty = %(last_property_id)d; |
37 const int lastUnresolvedCSSProperty = %(last_unresolved_property_id)d; | 38 const int lastUnresolvedCSSProperty = %(last_unresolved_property_id)d; |
38 const size_t maxCSSPropertyNameLength = %(max_name_length)d; | 39 const size_t maxCSSPropertyNameLength = %(max_name_length)d; |
39 | 40 |
40 const char* getPropertyName(CSSPropertyID); | 41 const char* getPropertyName(CSSPropertyID); |
41 const WTF::AtomicString& getPropertyNameAtomicString(CSSPropertyID); | 42 const WTF::AtomicString& getPropertyNameAtomicString(CSSPropertyID); |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
185 | 186 |
186 def _enum_declaration(self, property): | 187 def _enum_declaration(self, property): |
187 return " %(property_id)s = %(enum_value)s," % property | 188 return " %(property_id)s = %(enum_value)s," % property |
188 | 189 |
189 def generate_header(self): | 190 def generate_header(self): |
190 return HEADER_TEMPLATE % { | 191 return HEADER_TEMPLATE % { |
191 'license': license.license_for_generated_cpp(), | 192 'license': license.license_for_generated_cpp(), |
192 'class_name': self.class_name, | 193 'class_name': self.class_name, |
193 'property_enums': "\n".join(map(self._enum_declaration, self._proper ties_including_aliases)), | 194 'property_enums': "\n".join(map(self._enum_declaration, self._proper ties_including_aliases)), |
194 'first_property_id': self._first_enum_value, | 195 'first_property_id': self._first_enum_value, |
195 'properties_count': len(self._properties), | 196 'properties_count': len(self._properties) + 1, |
alancutter (OOO until 2018)
2015/08/25 01:59:08
Add comment here stating the +1 is for CSSProperty
Timothy Loh
2015/08/25 09:21:09
Err.. this is a bit weird. numCSSProperties now ac
| |
196 'last_property_id': self._first_enum_value + len(self._properties) - 1, | 197 'last_property_id': self._first_enum_value + len(self._properties), |
197 'last_unresolved_property_id': max(property["enum_value"] for proper ty in self._properties_including_aliases), | 198 'last_unresolved_property_id': max(property["enum_value"] for proper ty in self._properties_including_aliases), |
198 'max_name_length': max(map(len, self._properties)), | 199 'max_name_length': max(map(len, self._properties)), |
199 } | 200 } |
200 | 201 |
201 def generate_implementation(self): | 202 def generate_implementation(self): |
202 enum_value_to_name = {property['enum_value']: property['name'] for prope rty in self._properties_including_aliases} | 203 enum_value_to_name = {property['enum_value']: property['name'] for prope rty in self._properties_including_aliases} |
203 property_offsets = [] | 204 property_offsets = [] |
204 property_names = [] | 205 property_names = [] |
205 current_offset = 0 | 206 current_offset = 0 |
206 for enum_value in range(1, max(enum_value_to_name) + 1): | 207 for enum_value in range(1, max(enum_value_to_name) + 1): |
(...skipping 15 matching lines...) Expand all Loading... | |
222 # FIXME: If we could depend on Python 2.7, we would use subprocess.check _output | 223 # FIXME: If we could depend on Python 2.7, we would use subprocess.check _output |
223 gperf_args = [self.gperf_path, '--key-positions=*', '-P', '-n'] | 224 gperf_args = [self.gperf_path, '--key-positions=*', '-P', '-n'] |
224 gperf_args.extend(['-m', '50']) # Pick best of 50 attempts. | 225 gperf_args.extend(['-m', '50']) # Pick best of 50 attempts. |
225 gperf_args.append('-D') # Allow duplicate hashes -> More compact code. | 226 gperf_args.append('-D') # Allow duplicate hashes -> More compact code. |
226 gperf = subprocess.Popen(gperf_args, stdin=subprocess.PIPE, stdout=subpr ocess.PIPE, universal_newlines=True) | 227 gperf = subprocess.Popen(gperf_args, stdin=subprocess.PIPE, stdout=subpr ocess.PIPE, universal_newlines=True) |
227 return gperf.communicate(gperf_input)[0] | 228 return gperf.communicate(gperf_input)[0] |
228 | 229 |
229 | 230 |
230 if __name__ == "__main__": | 231 if __name__ == "__main__": |
231 in_generator.Maker(CSSPropertyNamesWriter).main(sys.argv) | 232 in_generator.Maker(CSSPropertyNamesWriter).main(sys.argv) |
OLD | NEW |