Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(82)

Side by Side Diff: third_party/WebKit/Source/build/scripts/templates/ComputedStyleBase.h.tmpl

Issue 2879813002: Make ComputedStyleBase a templated class to allow it to use functions on ComputedStyle (Closed)
Patch Set: alancutter@'s suggestions Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 {% from 'macros.tmpl' import license, print_if %} 1 {% from 'macros.tmpl' import license, print_if %}
2 {% from 'fields/field.tmpl' import encode, getter_expression, setter_expression, declare_storage, fieldwise_compare, fieldwise_copy, fieldwise_diff %} 2 {% from 'fields/field.tmpl' import encode, getter_expression, setter_expression, declare_storage, fieldwise_compare, fieldwise_copy, fieldwise_diff %}
3 {% from 'fields/group.tmpl' import define_field_group_class %} 3 {% from 'fields/group.tmpl' import define_field_group_class %}
4 {{license()}} 4 {{license()}}
5 5
6 #ifndef ComputedStyleBase_h 6 #ifndef ComputedStyleBase_h
7 #define ComputedStyleBase_h 7 #define ComputedStyleBase_h
8 8
9 #include "core/style/ComputedStyleConstants.h" 9 #include "core/style/ComputedStyleConstants.h"
10 #include "core/CoreExport.h" 10 #include "core/CoreExport.h"
(...skipping 28 matching lines...) Expand all
39 void* dataRefs[{{computed_style.subgroups|length}}]; 39 void* dataRefs[{{computed_style.subgroups|length}}];
40 {% endif %} 40 {% endif %}
41 {% for field in computed_style.fields|rejectattr("is_bit_field") %} 41 {% for field in computed_style.fields|rejectattr("is_bit_field") %}
42 {{field.type_name}} {{field.name}}; 42 {{field.type_name}} {{field.name}};
43 {% endfor %} 43 {% endfor %}
44 unsigned m_bit_fields[{{computed_style.num_32_bit_words_for_bit_fields}}]; 44 unsigned m_bit_fields[{{computed_style.num_32_bit_words_for_bit_fields}}];
45 }; 45 };
46 46
47 // The generated portion of ComputedStyle. For more info, see the header comment 47 // The generated portion of ComputedStyle. For more info, see the header comment
48 // in ComputedStyle.h. 48 // in ComputedStyle.h.
49
50 // ComputedStyleBase is a templated class to allow it to use functions
alancutter (OOO until 2018) 2017/05/12 07:06:22 This should be clearer that this may only be templ
nainar 2017/05/12 07:31:33 Done.
51 // on ComputedStyle. This allows us to diff functions on ComputedStyle that
alancutter (OOO until 2018) 2017/05/12 07:06:22 *This allows ComputedStyleBase to use hand written
nainar 2017/05/12 07:31:33 Done.
52 // ComputedStyleBase would otherwise not know about.
53 template <class ComputedStyleFinal>
49 class CORE_EXPORT ComputedStyleBase { 54 class CORE_EXPORT ComputedStyleBase {
50 public: 55 public:
51 inline bool IndependentInheritedEqual(const ComputedStyleBase& o) const { 56 inline bool IndependentInheritedEqual(const ComputedStyleBase& o) const {
52 return ( 57 return (
53 {{fieldwise_compare(computed_style, computed_style.all_fields 58 {{fieldwise_compare(computed_style, computed_style.all_fields
54 |selectattr("is_property") 59 |selectattr("is_property")
55 |selectattr("is_inherited") 60 |selectattr("is_inherited")
56 |selectattr("is_independent") 61 |selectattr("is_independent")
57 |list 62 |list
58 )|indent(8)}} 63 )|indent(8)}}
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 // style that are marked as inherited by this style. 120 // style that are marked as inherited by this style.
116 void PropagateIndependentInheritedProperties( 121 void PropagateIndependentInheritedProperties(
117 const ComputedStyleBase& parentStyle) { 122 const ComputedStyleBase& parentStyle) {
118 {% for field in computed_style.all_fields if field.is_property and field.is_ independent %} 123 {% for field in computed_style.all_fields if field.is_property and field.is_ independent %}
119 if ({{field.is_inherited_method_name}}()) 124 if ({{field.is_inherited_method_name}}())
120 {{setter_expression(field)}} = parentStyle.{{getter_expression(field)}}; 125 {{setter_expression(field)}} = parentStyle.{{getter_expression(field)}};
121 {% endfor %} 126 {% endfor %}
122 } 127 }
123 128
124 {% for name, groups_to_diff in diff_functions_map.items() %} 129 {% for name, groups_to_diff in diff_functions_map.items() %}
125 bool {{name}}(const ComputedStyleBase& other) const { 130 bool {{name}}(const ComputedStyleFinal& other) const {
126 {{fieldwise_diff(groups_to_diff)|indent(2)}} 131 {{fieldwise_diff(groups_to_diff)|indent(2)}}
127 return false; 132 return false;
128 } 133 }
129 {% endfor %} 134 {% endfor %}
130 135
131 // Fields. 136 // Fields.
132 // TODO(sashab): Remove initialFoo() static methods and update callers to 137 // TODO(sashab): Remove initialFoo() static methods and update callers to
133 // use resetFoo(), which can be more efficient. 138 // use resetFoo(), which can be more efficient.
134 139
135 {% for field in computed_style.all_fields %} 140 {% for field in computed_style.all_fields %}
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 return static_cast<unsigned>(std::min<float>(width, kMaxForBorderWidth) * 181 return static_cast<unsigned>(std::min<float>(width, kMaxForBorderWidth) *
177 kBorderWidthDenominator); 182 kBorderWidthDenominator);
178 } 183 }
179 184
180 private: 185 private:
181 {% for field in computed_style.fields %} 186 {% for field in computed_style.fields %}
182 {{declare_storage(field)}} 187 {{declare_storage(field)}}
183 {% endfor %} 188 {% endfor %}
184 }; 189 };
185 190
186 // If this fails, the packing algorithm in make_computed_style_base.py has
187 // failed to produce the optimal packed size. To fix, update the algorithm to
188 // ensure that the buckets are placed so that each takes up at most 1 word.
189 ASSERT_SIZE(ComputedStyleBase, SameSizeAsComputedStyleBase);
190
191 } // namespace blink 191 } // namespace blink
192 192
193 #endif // ComputedStyleBase_h 193 #endif // ComputedStyleBase_h
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698