OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright 2016 The Chromium Authors. All rights reserved. | 2 # Copyright 2016 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 import math | 6 import math |
7 import sys | 7 import sys |
8 | 8 |
9 import json5_generator | 9 import json5_generator |
10 import template_expander | 10 import template_expander |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 size = int(math.ceil(math.log(len(property_['keywords']), 2))) | 186 size = int(math.ceil(math.log(len(property_['keywords']), 2))) |
187 elif property_['field_template'] == 'storage_only': | 187 elif property_['field_template'] == 'storage_only': |
188 # 'storage_only' fields need to specify a size, type_name and default_va
lue | 188 # 'storage_only' fields need to specify a size, type_name and default_va
lue |
189 type_name = property_['type_name'] | 189 type_name = property_['type_name'] |
190 default_value = property_['default_value'] | 190 default_value = property_['default_value'] |
191 size = property_['size'] | 191 size = property_['size'] |
192 elif property_['field_template'] == 'external': | 192 elif property_['field_template'] == 'external': |
193 type_name = property_['type_name'] | 193 type_name = property_['type_name'] |
194 default_value = property_['default_value'] | 194 default_value = property_['default_value'] |
195 size = None | 195 size = None |
| 196 elif property_['field_template'] == 'primitive': |
| 197 type_name = property_['type_name'] |
| 198 default_value = property_['default_value'] |
| 199 size = 1 if type_name == 'bool' else None # pack bools with 1 bit. |
196 else: | 200 else: |
197 assert property_['field_template'] in ('flag', 'monotonic_flag') | 201 assert property_['field_template'] in ('monotonic_flag',) |
198 type_name = 'bool' | 202 type_name = 'bool' |
199 default_value = 'false' | 203 default_value = 'false' |
200 size = 1 | 204 size = 1 |
201 | 205 |
202 return Field( | 206 return Field( |
203 field_role, | 207 field_role, |
204 name_for_methods, | 208 name_for_methods, |
205 property_name=property_['name'], | 209 property_name=property_['name'], |
206 inherited=property_['inherited'], | 210 inherited=property_['inherited'], |
207 independent=property_['independent'], | 211 independent=property_['independent'], |
208 type_name=type_name, | 212 type_name=type_name, |
209 field_template=property_['field_template'], | 213 field_template=property_['field_template'], |
210 size=size, | 214 size=size, |
211 default_value=default_value, | 215 default_value=default_value, |
212 ) | 216 ) |
213 | 217 |
214 | 218 |
215 def _create_inherited_flag_field(property_): | 219 def _create_inherited_flag_field(property_): |
216 """ | 220 """ |
217 Create the field used for an inheritance fast path from an independent CSS p
roperty, | 221 Create the field used for an inheritance fast path from an independent CSS p
roperty, |
218 and return the Field object. | 222 and return the Field object. |
219 """ | 223 """ |
220 return Field( | 224 return Field( |
221 'inherited_flag', | 225 'inherited_flag', |
222 join_name(property_['name_for_methods'], 'is inherited'), | 226 join_name(property_['name_for_methods'], 'is inherited'), |
223 property_name=property_['name'], | 227 property_name=property_['name'], |
224 type_name='bool', | 228 type_name='bool', |
225 field_template='flag', | 229 field_template='primitive', |
226 size=1, | 230 size=1, |
227 default_value='true', | 231 default_value='true', |
228 ) | 232 ) |
229 | 233 |
230 | 234 |
231 def _create_fields(field_role, properties): | 235 def _create_fields(field_role, properties): |
232 """ | 236 """ |
233 Create ComputedStyle fields from properties or nonproperties and return a li
st of Field objects. | 237 Create ComputedStyle fields from properties or nonproperties and return a li
st of Field objects. |
234 """ | 238 """ |
235 fields = [] | 239 fields = [] |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
385 'mapping': [(enum_value_name(k), enum_for_css_keyword(k)) fo
r k in property_['keywords']], | 389 'mapping': [(enum_value_name(k), enum_for_css_keyword(k)) fo
r k in property_['keywords']], |
386 } | 390 } |
387 | 391 |
388 return { | 392 return { |
389 'include_paths': self._include_paths, | 393 'include_paths': self._include_paths, |
390 'mappings': mappings, | 394 'mappings': mappings, |
391 } | 395 } |
392 | 396 |
393 if __name__ == '__main__': | 397 if __name__ == '__main__': |
394 json5_generator.Maker(ComputedStyleBaseWriter).main() | 398 json5_generator.Maker(ComputedStyleBaseWriter).main() |
OLD | NEW |